Skip to content

Commit

Permalink
cmd/5l,6l,8l: remove bogus dynsym section indexes
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
aclements committed Dec 22, 2014
1 parent 326ceea commit 7e424ec
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 54 deletions.
20 changes: 2 additions & 18 deletions src/cmd/5l/asm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down
20 changes: 2 additions & 18 deletions src/cmd/6l/asm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
20 changes: 2 additions & 18 deletions src/cmd/8l/asm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 7e424ec

Please sign in to comment.