mirror of
https://github.com/golang/go
synced 2024-11-19 18:44:41 -07:00
6l, 8l: emit windows dwarf sections similar to other platforms
R=golang-dev, rsc CC=golang-dev, vcc.163 https://golang.org/cl/4517056
This commit is contained in:
parent
142008c325
commit
34ac4ec30c
@ -787,40 +787,50 @@ asmb(void)
|
||||
symo = rnd(symo, PEFILEALIGN);
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* the symbol information is stored as
|
||||
* 32-bit symbol table size
|
||||
* 32-bit line number table size
|
||||
* symbol table
|
||||
* line number table
|
||||
*/
|
||||
seek(cout, symo+8, 0);
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f sp\n", cputime());
|
||||
Bflush(&bso);
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f pc\n", cputime());
|
||||
Bflush(&bso);
|
||||
if(!debug['s'])
|
||||
strnput("", INITRND-(8+symsize+lcsize)%INITRND);
|
||||
cflush();
|
||||
seek(cout, symo, 0);
|
||||
lputl(symsize);
|
||||
lputl(lcsize);
|
||||
cflush();
|
||||
if(HEADTYPE != Hwindows && !debug['s']) {
|
||||
elfsymo = symo+8+symsize+lcsize;
|
||||
seek(cout, elfsymo, 0);
|
||||
asmelfsym64();
|
||||
cflush();
|
||||
elfstro = seek(cout, 0, 1);
|
||||
elfsymsize = elfstro - elfsymo;
|
||||
ewrite(cout, elfstrdat, elfstrsize);
|
||||
switch(HEADTYPE) {
|
||||
default:
|
||||
if(iself) {
|
||||
/*
|
||||
* the symbol information is stored as
|
||||
* 32-bit symbol table size
|
||||
* 32-bit line number table size
|
||||
* symbol table
|
||||
* line number table
|
||||
*/
|
||||
seek(cout, symo+8, 0);
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f sp\n", cputime());
|
||||
Bflush(&bso);
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f pc\n", cputime());
|
||||
Bflush(&bso);
|
||||
if(!debug['s'])
|
||||
strnput("", INITRND-(8+symsize+lcsize)%INITRND);
|
||||
cflush();
|
||||
seek(cout, symo, 0);
|
||||
lputl(symsize);
|
||||
lputl(lcsize);
|
||||
cflush();
|
||||
elfsymo = symo+8+symsize+lcsize;
|
||||
seek(cout, elfsymo, 0);
|
||||
asmelfsym64();
|
||||
cflush();
|
||||
elfstro = seek(cout, 0, 1);
|
||||
elfsymsize = elfstro - elfsymo;
|
||||
ewrite(cout, elfstrdat, elfstrsize);
|
||||
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f dwarf\n", cputime());
|
||||
|
||||
dwarfemitdebugsections();
|
||||
}
|
||||
break;
|
||||
case Hwindows:
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f dwarf\n", cputime());
|
||||
|
||||
dwarfemitdebugsections();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -742,12 +742,29 @@ asmb(void)
|
||||
symo = rnd(symo, INITRND);
|
||||
break;
|
||||
case Hwindows:
|
||||
// TODO(brainman): not sure what symo meant to be, but it is not used for Windows PE for now anyway
|
||||
symo = rnd(HEADR+segtext.filelen, PEFILEALIGN)+segdata.filelen;
|
||||
symo = rnd(symo, PEFILEALIGN);
|
||||
break;
|
||||
}
|
||||
if(HEADTYPE == Hplan9x32) {
|
||||
switch(HEADTYPE) {
|
||||
default:
|
||||
if(iself) {
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f elfsym\n", cputime());
|
||||
elfsymo = symo+8+symsize+lcsize;
|
||||
seek(cout, elfsymo, 0);
|
||||
asmelfsym32();
|
||||
cflush();
|
||||
elfstro = seek(cout, 0, 1);
|
||||
elfsymsize = elfstro - elfsymo;
|
||||
ewrite(cout, elfstrdat, elfstrsize);
|
||||
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f dwarf\n", cputime());
|
||||
dwarfemitdebugsections();
|
||||
}
|
||||
break;
|
||||
case Hplan9x32:
|
||||
seek(cout, symo, 0);
|
||||
asmplan9sym();
|
||||
cflush();
|
||||
@ -760,20 +777,13 @@ asmb(void)
|
||||
|
||||
cflush();
|
||||
}
|
||||
} else if(iself) {
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f elfsym\n", cputime());
|
||||
elfsymo = symo+8+symsize+lcsize;
|
||||
seek(cout, elfsymo, 0);
|
||||
asmelfsym32();
|
||||
cflush();
|
||||
elfstro = seek(cout, 0, 1);
|
||||
elfsymsize = elfstro - elfsymo;
|
||||
ewrite(cout, elfstrdat, elfstrsize);
|
||||
|
||||
break;
|
||||
case Hwindows:
|
||||
seek(cout, symo, 0);
|
||||
if(debug['v'])
|
||||
Bprint(&bso, "%5.2f dwarf\n", cputime());
|
||||
dwarfemitdebugsections();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(debug['v'])
|
||||
|
@ -2562,7 +2562,6 @@ dwarfaddmachoheaders(void)
|
||||
void
|
||||
dwarfaddpeheaders(void)
|
||||
{
|
||||
dwarfemitdebugsections();
|
||||
newPEDWARFSection(".debug_abbrev", abbrevsize);
|
||||
newPEDWARFSection(".debug_line", linesize);
|
||||
newPEDWARFSection(".debug_frame", framesize);
|
||||
|
@ -484,13 +484,13 @@ asmbpe(void)
|
||||
d->Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA|
|
||||
IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE;
|
||||
|
||||
if(!debug['s'])
|
||||
dwarfaddpeheaders();
|
||||
|
||||
addimports(nextfileoff, d);
|
||||
|
||||
addexports(nextfileoff);
|
||||
|
||||
if(!debug['s'])
|
||||
dwarfaddpeheaders();
|
||||
|
||||
addsymtable();
|
||||
|
||||
fh.NumberOfSections = nsect;
|
||||
|
Loading…
Reference in New Issue
Block a user