diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-14 00:57:06 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-16 19:33:05 +0200 |
| commit | 315cd7623eccdbce009845083b708f1c9bb6c672 (patch) | |
| tree | 4f1e4b95333282b3d4c88b52553575e2598ee827 /src | |
| parent | 5fad6837919c683b48d11987e55948b7f25d67cd (diff) | |
| download | zig-315cd7623eccdbce009845083b708f1c9bb6c672.tar.gz zig-315cd7623eccdbce009845083b708f1c9bb6c672.zip | |
elf: fix section sorting logic
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Elf.zig | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 19a7b840cd..729d13550c 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -4081,26 +4081,26 @@ fn sectionRank(self: *Elf, shndx: u16) u8 { elf.SHT_PROGBITS => { assert(flags & elf.SHF_ALLOC != 0); if (flags & elf.SHF_EXECINSTR != 0) { - return 0xe1; + return 0x2; } else if (flags & elf.SHF_WRITE != 0) { - return 0xe2; + return 0x3; } else { - return 0xe0; + return 0x1; } }, - elf.SHT_NOBITS => return 0xef, + elf.SHT_NOBITS => return 0xf, else => unreachable, } } switch (shdr.sh_type) { - elf.SHT_NULL => return 0, - elf.SHT_DYNSYM => return 2, - elf.SHT_HASH => return 3, - elf.SHT_GNU_HASH => return 3, - elf.SHT_GNU_VERSYM => return 4, - elf.SHT_GNU_VERDEF => return 4, - elf.SHT_GNU_VERNEED => return 4, + elf.SHT_NULL => return 0x0, + elf.SHT_DYNSYM => return 0x12, + elf.SHT_HASH => return 0x13, + elf.SHT_GNU_HASH => return 0x13, + elf.SHT_GNU_VERSYM => return 0x14, + elf.SHT_GNU_VERDEF => return 0x14, + elf.SHT_GNU_VERNEED => return 0x14, elf.SHT_PREINIT_ARRAY, elf.SHT_INIT_ARRAY, @@ -4109,7 +4109,7 @@ fn sectionRank(self: *Elf, shndx: u16) u8 { elf.SHT_DYNAMIC => return 0xf3, - elf.SHT_RELA => return 0xf, + elf.SHT_RELA => return 0x1f, elf.SHT_PROGBITS => if (flags & elf.SHF_ALLOC != 0) { if (flags & elf.SHF_EXECINSTR != 0) { @@ -4117,7 +4117,7 @@ fn sectionRank(self: *Elf, shndx: u16) u8 { } else if (flags & elf.SHF_WRITE != 0) { return if (flags & elf.SHF_TLS != 0) 0xf4 else 0xf6; } else if (mem.eql(u8, name, ".interp")) { - return 1; + return 0x11; } else { return 0xf0; } @@ -4131,7 +4131,7 @@ fn sectionRank(self: *Elf, shndx: u16) u8 { elf.SHT_NOBITS => return if (flags & elf.SHF_TLS != 0) 0xf5 else 0xf7, elf.SHT_SYMTAB => return 0xfa, - elf.SHT_STRTAB => return if (mem.eql(u8, name, ".dynstr")) 4 else 0xfb, + elf.SHT_STRTAB => return if (mem.eql(u8, name, ".dynstr")) 0x14 else 0xfb, else => return 0xff, } } |
