mirror of https://github.com/golang/go.git
cmd/ld: add PT_PAX_FLAGS ELF header
PAX systems are Linux systems that are more paranoid about memory permissions. These flags tell them to relax when running Go binaries. Fixes #47. R=iant CC=golang-dev https://golang.org/cl/6326054
This commit is contained in:
parent
cf06750372
commit
3f34248a77
|
|
@ -1082,6 +1082,11 @@ asmb(void)
|
||||||
ph->type = PT_GNU_STACK;
|
ph->type = PT_GNU_STACK;
|
||||||
ph->flags = PF_W+PF_R;
|
ph->flags = PF_W+PF_R;
|
||||||
ph->align = 8;
|
ph->align = 8;
|
||||||
|
|
||||||
|
ph = newElfPhdr();
|
||||||
|
ph->type = PT_PAX_FLAGS;
|
||||||
|
ph->flags = 0x2a00; // mprotect, randexec, emutramp disabled
|
||||||
|
ph->align = 8;
|
||||||
|
|
||||||
sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
|
sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
|
||||||
sh->type = SHT_STRTAB;
|
sh->type = SHT_STRTAB;
|
||||||
|
|
|
||||||
|
|
@ -1127,6 +1127,11 @@ asmb(void)
|
||||||
ph->flags = PF_W+PF_R;
|
ph->flags = PF_W+PF_R;
|
||||||
ph->align = 4;
|
ph->align = 4;
|
||||||
|
|
||||||
|
ph = newElfPhdr();
|
||||||
|
ph->type = PT_PAX_FLAGS;
|
||||||
|
ph->flags = 0x2a00; // mprotect, randexec, emutramp disabled
|
||||||
|
ph->align = 4;
|
||||||
|
|
||||||
sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
|
sh = newElfShstrtab(elfstr[ElfStrShstrtab]);
|
||||||
sh->type = SHT_STRTAB;
|
sh->type = SHT_STRTAB;
|
||||||
sh->addralign = 1;
|
sh->addralign = 1;
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,7 @@ typedef struct {
|
||||||
#define PT_LOPROC 0x70000000 /* First processor-specific type. */
|
#define PT_LOPROC 0x70000000 /* First processor-specific type. */
|
||||||
#define PT_HIPROC 0x7fffffff /* Last processor-specific type. */
|
#define PT_HIPROC 0x7fffffff /* Last processor-specific type. */
|
||||||
#define PT_GNU_STACK 0x6474e551
|
#define PT_GNU_STACK 0x6474e551
|
||||||
|
#define PT_PAX_FLAGS 0x65041580
|
||||||
|
|
||||||
/* Values for p_flags. */
|
/* Values for p_flags. */
|
||||||
#define PF_X 0x1 /* Executable. */
|
#define PF_X 0x1 /* Executable. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue