]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/5l,6l,8l: remove bogus dynsym section indexes
authorAustin Clements <austin@google.com>
Tue, 16 Dec 2014 20:59:05 +0000 (15:59 -0500)
committerAustin Clements <austin@google.com>
Mon, 22 Dec 2014 23:00:15 +0000 (23:00 +0000)
Previously, this code generated bogus section indexes for dynamic
symbols.  It turns out this didn't matter, since we only emit these
when generating an executable and in an executable it only matters
whether a symbol is defined or undefined, but it leads to perplexing
code full of mysterious constants.

Unfortunately, this happens too early to put in real section indexes,
so just use section index 1 to distinguish the symbol from an
undefined symbol.

Change-Id: I0e514604bf31f21683598ebd3e020b66acf767ef
Reviewed-on: https://go-review.googlesource.com/1720
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/5l/asm.c
src/cmd/6l/asm.c
src/cmd/8l/asm.c

index 017d3f4357fd4d2d7e352f7946716a754a9ea79b..c95e43bcc0136dda2cdd06d74025cc387bb4a30b 100644 (file)
@@ -510,24 +510,8 @@ adddynsym(Link *ctxt, LSym *s)
                /* shndx */
                if(s->type == SDYNIMPORT)
                        adduint16(ctxt, d, SHN_UNDEF);
-               else {
-                       switch(s->type) {
-                       default:
-                       case STEXT:
-                               t = 11;
-                               break;
-                       case SRODATA:
-                               t = 12;
-                               break;
-                       case SDATA:
-                               t = 13;
-                               break;
-                       case SBSS:
-                               t = 14;
-                               break;
-                       }
-                       adduint16(ctxt, d, t);
-               }
+               else
+                       adduint16(ctxt, d, 1);
        } else {
                diag("adddynsym: unsupported binary format");
        }
index 41c9cc84c64bf0fe0efdb9c8cc044853b3c8c28f..20be4d6dbcd4413af4bf8f751720cec15e3526d3 100644 (file)
@@ -548,24 +548,8 @@ adddynsym(Link *ctxt, LSym *s)
                /* section where symbol is defined */
                if(s->type == SDYNIMPORT)
                        adduint16(ctxt, d, SHN_UNDEF);
-               else {
-                       switch(s->type) {
-                       default:
-                       case STEXT:
-                               t = 11;
-                               break;
-                       case SRODATA:
-                               t = 12;
-                               break;
-                       case SDATA:
-                               t = 13;
-                               break;
-                       case SBSS:
-                               t = 14;
-                               break;
-                       }
-                       adduint16(ctxt, d, t);
-               }
+               else
+                       adduint16(ctxt, d, 1);
        
                /* value */
                if(s->type == SDYNIMPORT)
index 8b91c0971a28a14a178b8497eed3dd57b5a5dac4..ff4911b88af0b4b0257a9377be6cc0ee9d2cfe4d 100644 (file)
@@ -516,24 +516,8 @@ adddynsym(Link *ctxt, LSym *s)
                /* shndx */
                if(s->type == SDYNIMPORT)
                        adduint16(ctxt, d, SHN_UNDEF);
-               else {
-                       switch(s->type) {
-                       default:
-                       case STEXT:
-                               t = 11;
-                               break;
-                       case SRODATA:
-                               t = 12;
-                               break;
-                       case SDATA:
-                               t = 13;
-                               break;
-                       case SBSS:
-                               t = 14;
-                               break;
-                       }
-                       adduint16(ctxt, d, t);
-               }
+               else
+                       adduint16(ctxt, d, 1);
        } else if(HEADTYPE == Hdarwin) {
                diag("adddynsym: missed symbol %s (%s)", s->name, s->extname);
        } else if(HEADTYPE == Hwindows) {