diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | scripts/abilist.awk | 36 |
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); |