This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] abilist.awk: Treat .tdata like .tbss and reject unknown combinations.


----- 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!

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

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]