[PATCH] abilist.awk: Treat .tdata like .tbss and reject unknown combinations.
Carlos O'Donell
carlos@redhat.com
Tue Nov 20 22:35:00 GMT 2018
On 11/20/18 5:33 PM, Mathieu Desnoyers wrote:
> ----- On Nov 20, 2018, at 5:26 PM, carlos carlos@redhat.com wrote:
>
>> abilist.awk: Treat .tdata like .tbss and reject unknown combinations.
>>
>> Mathieu Desnoyers ran into an issue with his rseq patch where
>> he was the first person to add weak thread-local data and this
>> resulted in an ABI list update with entries like this:
>> "GLIBC_2.29 w ? D .tdata 0000000000000020".
>>
>> The weakness of the symbol has nothing to do with the DSOs
>> ABI and so we should not write anything about weak symbols
>> here. The .tdata entries should be treated exactly like .tbss
>> entries and the output should have been:
>> "GLIBC_2.29 __rseq_abi T 0x20"
>>
>> This change makes abilist.awk handle .tdata just like .tbss, while
>> at the same time adding an error case for the default. We never
>> want anyone to be able to add such entries to any ABI list files
>> and should see an immediate error and consult with experts.
>>
>> Tested by Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
>> witht the rseq patch set and 'make update-all-abi'.
>
> witht -> with
Thanks. Fixed (git commit --amend).
> Thanks!
>
> Mathieu
>
>>
>> Tested myself with 'make update-all-abi' on x86_64 with no changes.
>>
>> Signed-off-by: Carlos O'Donell <carlos@redhat.com>
>> ---
>> ChangeLog | 4 ++++
>> scripts/abilist.awk | 11 +++--------
>> 2 files changed, 7 insertions(+), 8 deletions(-)
>>
>> diff --git a/ChangeLog b/ChangeLog
>> index 9cdd3bad36..7038b583b6 100644
>> --- a/ChangeLog
>> +++ b/ChangeLog
>> @@ -1,3 +1,7 @@
>> +2018-11-20 Carlos O'Donell <carlos@redhat.com>
>> +
>> + * scripts/abilist.awk: Handle .tdata. Error for unknown combinations.
>> +
>> 2018-11-20 DJ Delorie <dj@redhat.com>
>>
>> * malloc/malloc.c (tcache_entry): Add key field.
>> diff --git a/scripts/abilist.awk b/scripts/abilist.awk
>> index bad7c3807e..e914df57f0 100644
>> --- a/scripts/abilist.awk
>> +++ b/scripts/abilist.awk
>> @@ -39,7 +39,6 @@ $2 == "l" { next }
>>
>> # If the target uses ST_OTHER, it will be output before the symbol name.
>> $2 == "g" || $2 == "w" && (NF == 7 || NF == 8) {
>> - weak = $2;
>> type = $3;
>> size = $5;
>> sub(/^0*/, "", size);
>> @@ -55,7 +54,7 @@ $2 == "g" || $2 == "w" && (NF == 7 || NF == 8) {
>> if (version == "GLIBC_PRIVATE") next;
>>
>> desc = "";
>> - if (type == "D" && $4 == ".tbss") {
>> + if (type == "D" && ($4 == ".tbss" || $4 == ".tdata")) {
>> type = "T";
>> }
>> else if (type == "D" && $4 == ".opd") {
>> @@ -90,14 +89,10 @@ $2 == "g" || $2 == "w" && (NF == 7 || NF == 8) {
>> size = "";
>> }
>> else {
>> - desc = symbol " " version " " weak " ? " type " " $4 " " $5;
>> - }
>> - if (size == " 0x") {
>> - desc = symbol " " version " " weak " ? " type " " $4 " " $5;
>> + print "Unable to handle this type of symbol."
>> + exit 1
>> }
>>
>> - # Disabled -- weakness should not matter to shared library ABIs any more.
>> - #if (weak == "w") type = tolower(type);
>> if (desc == "")
>> desc = symbol " " type size;
>>
>> --
>> 2.17.2
>
--
Cheers,
Carlos.
More information about the Libc-alpha
mailing list