Commit 728003e3 authored by Luuk van Dijk's avatar Luuk van Dijk

6l/8l: emit DWARF in macho.

R=rsc, r, ken2
CC=golang-dev
https://golang.org/cl/2128041
parent 49b19e1b
...@@ -929,7 +929,7 @@ asmb(void) ...@@ -929,7 +929,7 @@ asmb(void)
sh->size = elfstrsize; sh->size = elfstrsize;
sh->addralign = 1; sh->addralign = 1;
dwarfaddheaders(); dwarfaddelfheaders();
} }
sh = newElfShstrtab(elfstr[ElfStrShstrtab]); sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
......
...@@ -1050,7 +1050,7 @@ asmb(void) ...@@ -1050,7 +1050,7 @@ asmb(void)
sh->addralign = 1; sh->addralign = 1;
sh->addr = symdatva + 8 + symsize; sh->addr = symdatva + 8 + symsize;
dwarfaddheaders(); dwarfaddelfheaders();
} }
sh = newElfShstrtab(elfstr[ElfStrShstrtab]); sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "../ld/dwarf.h" #include "../ld/dwarf.h"
#include "../ld/dwarf_defs.h" #include "../ld/dwarf_defs.h"
#include "../ld/elf.h" #include "../ld/elf.h"
#include "../ld/macho.h"
/* /*
* Offsets and sizes of the .debug_* sections in the cout file. * Offsets and sizes of the .debug_* sections in the cout file.
...@@ -835,7 +836,7 @@ dwarfemitdebugsections(void) ...@@ -835,7 +836,7 @@ dwarfemitdebugsections(void)
} }
void void
dwarfaddheaders(void) dwarfaddelfheaders(void)
{ {
ElfShdr *sh; ElfShdr *sh;
...@@ -857,3 +858,32 @@ dwarfaddheaders(void) ...@@ -857,3 +858,32 @@ dwarfaddheaders(void)
sh->size = infosize; sh->size = infosize;
sh->addralign = 1; sh->addralign = 1;
} }
void
dwarfaddmachoheaders(void)
{
MachoSect *msect;
MachoSeg *ms;
vlong fakestart;
// Zero vsize segments won't be loaded in memory, even so they
// have to be page aligned in the file.
fakestart = abbrevo & ~0xfff;
ms = newMachoSeg("__DWARF", 3);
ms->fileoffset = fakestart;
ms->filesize = abbrevo-fakestart + abbrevsize+linesize+infosize;
msect = newMachoSect(ms, "__debug_abbrev");
msect->off = abbrevo;
msect->size = abbrevsize;
msect = newMachoSect(ms, "__debug_line");
msect->off = lineo;
msect->size = linesize;
msect = newMachoSect(ms, "__debug_info");
msect->off = infoo;
msect->size = infosize;
}
...@@ -22,7 +22,8 @@ void dwarfaddshstrings(Sym *shstrtab); ...@@ -22,7 +22,8 @@ void dwarfaddshstrings(Sym *shstrtab);
void dwarfemitdebugsections(void); void dwarfemitdebugsections(void);
/* /*
* Add ELF section headers pointing to the sections emitted in * Add section headers pointing to the sections emitted in
* dwarfemitdebugsections. * dwarfemitdebugsections.
*/ */
void dwarfaddheaders(void); void dwarfaddelfheaders(void);
void dwarfaddmachoheaders(void);
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// http://developer.apple.com/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html // http://developer.apple.com/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html
#include "l.h" #include "l.h"
#include "../ld/dwarf.h"
#include "../ld/lib.h" #include "../ld/lib.h"
#include "../ld/macho.h" #include "../ld/macho.h"
...@@ -129,7 +130,7 @@ machowrite(void) ...@@ -129,7 +130,7 @@ machowrite(void)
MachoDebug *d; MachoDebug *d;
MachoLoad *l; MachoLoad *l;
o1 = Boffset(&bso); o1 = cpos();
loadsize = 4*4*ndebug; loadsize = 4*4*ndebug;
for(i=0; i<nload; i++) for(i=0; i<nload; i++)
...@@ -229,7 +230,7 @@ machowrite(void) ...@@ -229,7 +230,7 @@ machowrite(void)
LPUT(d->filesize); LPUT(d->filesize);
} }
return Boffset(&bso) - o1; return cpos() - o1;
} }
static void* static void*
...@@ -617,6 +618,8 @@ asmbmacho(vlong symdatva, vlong symo) ...@@ -617,6 +618,8 @@ asmbmacho(vlong symdatva, vlong symo)
md = newMachoDebug(); md = newMachoDebug();
md->fileoffset = symo+8+symsize; md->fileoffset = symo+8+symsize;
md->filesize = lcsize; md->filesize = lcsize;
dwarfaddmachoheaders();
} }
a = machowrite(); a = machowrite();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment