diff options
| author | Shenghou Ma <minux.ma@gmail.com> | 2013-02-04 00:40:11 +0800 |
|---|---|---|
| committer | Shenghou Ma <minux.ma@gmail.com> | 2013-02-04 00:40:11 +0800 |
| commit | 2ebfaa36b51e860d066799afa90de3efe092ae4a (patch) | |
| tree | 12fadce91d5e68b4825ab6a48b9ff1f1dafcaf97 /src/cmd/ld | |
| parent | 848d10f06cf327212d1ce7041c0eeae5fda317f1 (diff) | |
| download | go-2ebfaa36b51e860d066799afa90de3efe092ae4a.tar.xz | |
cmd/5l, cmd/ld: support generating ELF binaries for NetBSD/ARM
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/7261043
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/elf.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/cmd/ld/elf.c b/src/cmd/ld/elf.c index 9793feea03..c771d10ec3 100644 --- a/src/cmd/ld/elf.c +++ b/src/cmd/ld/elf.c @@ -55,7 +55,9 @@ elfinit(void) // 32-bit architectures case '5': - hdr.flags = 0x5000002; // has entry point, Version5 EABI + // we only use EABI on linux/arm + if(HEADTYPE == Hlinux) + hdr.flags = 0x5000002; // has entry point, Version5 EABI // fallthrough default: hdr.phoff = ELF32HDRSIZE; /* Must be be ELF32HDRSIZE: first PHdr must follow ELF header */ @@ -1303,6 +1305,7 @@ asmbelf(vlong symo) sh->type = SHT_REL; sh->flags = SHF_ALLOC; sh->entsize = ELF32RELSIZE; + sh->link = elfshname(".dynsym")->shnum; shsym(sh, lookup(".rel.plt", 0)); sh = elfshname(".rel"); @@ -1375,15 +1378,17 @@ asmbelf(vlong symo) } } - ph = newElfPhdr(); - ph->type = PT_GNU_STACK; - ph->flags = PF_W+PF_R; - ph->align = PtrSize; - - ph = newElfPhdr(); - ph->type = PT_PAX_FLAGS; - ph->flags = 0x2a00; // mprotect, randexec, emutramp disabled - ph->align = PtrSize; + if(HEADTYPE == Hlinux) { + ph = newElfPhdr(); + ph->type = PT_GNU_STACK; + ph->flags = PF_W+PF_R; + ph->align = PtrSize; + + ph = newElfPhdr(); + ph->type = PT_PAX_FLAGS; + ph->flags = 0x2a00; // mprotect, randexec, emutramp disabled + ph->align = PtrSize; + } elfobj: sh = elfshname(".shstrtab"); |
