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]

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


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'.

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


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