This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Minor bug in mkmap-symver.awk? (fwd)
- From: Richard Henderson <rth at redhat dot com>
- To: Roger Sayle <roger at www dot eyesopen dot com>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Wed, 27 Nov 2002 12:00:52 -0800
- Subject: Re: Minor bug in mkmap-symver.awk? (fwd)
- References: <20021127065012.GA30315@redhat.com> <Pine.LNX.4.44.0211270718520.1995-100000@www.eyesopen.com>
On Wed, Nov 27, 2002 at 07:37:03AM -0700, Roger Sayle wrote:
> GCC_3.3 {
> __abssf2
> __absdf2
> }
Ah, I see now.
Fixed thus.
r~
* mkmap-symver.awk (BEGIN): Set sawsymbol false.
(nm && NF == 3): Set sawsymbol true.
(END): Exit if no symbols seen.
(output): Fix map syntax error if no globals for the version.
Index: mkmap-symver.awk
===================================================================
RCS file: /cvs/gcc/gcc/gcc/mkmap-symver.awk,v
retrieving revision 1.3
diff -c -p -d -r1.3 mkmap-symver.awk
*** mkmap-symver.awk 22 Mar 2002 00:55:35 -0000 1.3
--- mkmap-symver.awk 27 Nov 2002 19:51:35 -0000
***************
*** 20,25 ****
--- 20,26 ----
BEGIN {
state = "nm";
+ sawsymbol = 0;
}
# Remove comment and blank lines.
*************** state == "nm" && ($1 == "U" || $2 == "U"
*** 42,47 ****
--- 43,49 ----
state == "nm" && NF == 3 {
def[$3] = 1;
+ sawsymbol = 1;
next;
}
*************** $1 == "}" {
*** 77,82 ****
--- 79,89 ----
}
END {
+ if (!sawsymbol)
+ {
+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
+ exit 1;
+ }
for (l in libs)
output(l);
}
*************** function output(lib) {
*** 89,98 ****
output(inherit[lib]);
printf("%s {\n", lib);
! printf(" global:\n");
for (sym in ver)
if ((ver[sym] == lib) && (sym in def))
{
printf("\t%s;\n", sym);
if (dotsyms)
printf("\t.%s;\n", sym);
--- 96,110 ----
output(inherit[lib]);
printf("%s {\n", lib);
! sawglobal = 0;
for (sym in ver)
if ((ver[sym] == lib) && (sym in def))
{
+ if (!sawglobal)
+ {
+ printf(" global:\n");
+ sawglobal = 1;
+ }
printf("\t%s;\n", sym);
if (dotsyms)
printf("\t.%s;\n", sym);