about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--scripts/abilist.awk36
2 files changed, 30 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index ce1d977510..53e6cfd961 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-03-28  Roland McGrath  <roland@redhat.com>
+
+	* scripts/abilist.awk: When given -v combine=1, do parse_names and
+	emit a single output stream with lib name in stanza header lines.
+
+	* scripts/abilist.awk: Emit A for all *ABS* regardless of type.
+
 2003-03-27  Roland McGrath  <roland@redhat.com>
 
 	* sysdeps/powerpc/bits/atomic.h [! __powerpc64__]
diff --git a/scripts/abilist.awk b/scripts/abilist.awk
index f30ff5bd56..69da4512bf 100644
--- a/scripts/abilist.awk
+++ b/scripts/abilist.awk
@@ -2,10 +2,10 @@
 # into a simple format that should not change when the ABI is not changing.
 
 BEGIN {
-  if (parse_names)
-    defout = "/dev/stderr";
-  else
-    defout = "/dev/stdout";
+  if (combine_fullname)
+    combine = 1;
+  if (combine)
+    parse_names = 1;
 }
 
 # Per-file header.
@@ -43,6 +43,7 @@ $2 == "g" || $2 == "w" && NF == 7 {
 
   if (version == "GLIBC_PRIVATE") next;
 
+  desc = "";
   if (type == "D" && $4 == ".tbss") {
     type = "T";
   }
@@ -50,7 +51,7 @@ $2 == "g" || $2 == "w" && NF == 7 {
     type = "O";
     size = "";
   }
-  else if (type == "DO" && $4 == "*ABS*") {
+  else if ($4 == "*ABS*") {
     type = "A";
     size = "";
   }
@@ -62,17 +63,16 @@ $2 == "g" || $2 == "w" && NF == 7 {
     size = "";
   }
   else {
-    print symbol, version, weak, "?", type, $4, $5 > defout;
-    next;
+    desc = symbol " " version " " weak " ? " type " " $4 " " $5;
   }
   if (size == " 0x") {
-    print symbol, version, weak, "?", type, $4, $5 > defout;
-    next;
+    desc = symbol " " version " " weak " ? " type " " $4 " " $5;
   }
 
   # Disabled -- weakness should not matter to shared library ABIs any more.
   #if (weak == "w") type = tolower(type);
-  desc = " " symbol " " type size;
+  if (desc == "")
+    desc = " " symbol " " type size;
 
   if (version in versions) {
     versions[version] = versions[version] "\n" desc;
@@ -87,11 +87,11 @@ $2 == "g" || $2 == "w" && NF == 7 {
 NF == 0 || /DYNAMIC SYMBOL TABLE/ || /file format/ { next }
 
 {
-  print "Don't grok this line:", $0 > defout
+  print "Don't grok this line:", $0
 }
 
 function emit(tofile) {
-  nverlist = 0;
+  nverslist = 0;
   for (version in versions) {
     if (nverslist == 0) {
       verslist = version;
@@ -119,6 +119,9 @@ function emit(tofile) {
     ++nverslist;
   }
 
+  if (combine)
+    tofile = 0;
+
   if (tofile) {
     out = prefix soname ".symlist";
     if (soname in outfiles)
@@ -137,8 +140,15 @@ function emit(tofile) {
       close(out);
       outpipe = "sort >> " out;
     }
-    else
+    else {
+      if (combine_fullname)
+	print prefix soname, version, sofullname;
+      else if (combine)
+	print prefix soname, version;
+      else
+	print version;
       outpipe = "sort";
+    }
     print versions[version] | outpipe;
     close(outpipe);