This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: Minor bug in mkmap-symver.awk? (fwd)


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);


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