diff options
author | Mitya Selivanov <automainint@guattari.tech> | 2024-07-19 14:33:30 +0200 |
---|---|---|
committer | Mitya Selivanov <automainint@guattari.tech> | 2024-07-19 14:33:30 +0200 |
commit | 257e660d7c4ec0d2e122c5b1675c7823041c83c9 (patch) | |
tree | 731f8a3d0bebc04d09555dea751e1a2138ede5a0 | |
parent | 5cf65bed5e3112e72bb4619d8372c9c649ca8753 (diff) | |
download | bxgen-257e660d7c4ec0d2e122c5b1675c7823041c83c9.zip |
Cleanup
-rwxr-xr-x | bxgen.c | 36 |
1 files changed, 18 insertions, 18 deletions
@@ -1461,6 +1461,7 @@ typedef struct { Offset_Size name; u8 type; u8 bind; + i64 section; Offset_Size value; } Symbol_Entry; @@ -1714,8 +1715,6 @@ Symbol_Entry elf_symbol( (sym_info & 0xf) == 6 ? SYM_TLS : SYM_SPECIFIC; - BX_CHECK(type == SYM_SPECIFIC, "Unknown symbol type", (Symbol_Entry) {0}); - u8 bind = (sym_info >> 4) == 1 ? BIND_GLOBAL : (sym_info >> 4) == 2 ? BIND_WEAK : BIND_LOCAL; @@ -1724,6 +1723,7 @@ Symbol_Entry elf_symbol( .name = elf_name_in_string_table(b, string_table, sym_name), .type = type, .bind = bind, + .section = sym_shndx, .value = { .offset = sym_value, .size = sym_size, @@ -1903,14 +1903,14 @@ void elf_dump(u32 log_level, Buffer_Context b) { rela.dst, rela.addent, rela.symbol.bind == BIND_WEAK ? "\x1b[33m" : "\x1b[32m", - rela.symbol.value.offset, - rela.symbol.type == SYM_DATA || - rela.symbol.type == SYM_COMMON || - rela.symbol.type == SYM_TLS ? " \x1b[34mdata" : - rela.symbol.type == SYM_PROC ? " \x1b[34mproc" : - rela.symbol.type == SYM_SECTION ? " \x1b[36msect" : - rela.symbol.type == SYM_SPECIFIC ? " \x1b[34mspec" : - " \x1b[33mnone", + rela.symbol.value.offset + elf_section(b, rela.symbol.section).data.offset, + rela.symbol.type == SYM_DATA ? " \x1b[34mdata" : + rela.symbol.type == SYM_COMMON ? " \x1b[32mdata" : + rela.symbol.type == SYM_TLS ? " \x1b[34mdata" : + rela.symbol.type == SYM_PROC ? " \x1b[34mproc" : + rela.symbol.type == SYM_SECTION ? " \x1b[36msect" : + rela.symbol.type == SYM_SPECIFIC ? " \x1b[34mspec" : + " \x1b[33mnone", elf_name_from_offset(b, rela.symbol.name) ); } @@ -1937,14 +1937,14 @@ void elf_dump(u32 log_level, Buffer_Context b) { REL_NAMES[rel.type], rel.dst, rel.symbol.bind == BIND_WEAK ? "\x1b[33m" : "\x1b[32m", - rel.symbol.value.offset, - rel.symbol.type == SYM_DATA || - rel.symbol.type == SYM_COMMON || - rel.symbol.type == SYM_TLS ? " \x1b[34mdata" : - rel.symbol.type == SYM_PROC ? " \x1b[34mproc" : - rel.symbol.type == SYM_SECTION ? " \x1b[36msect" : - rel.symbol.type == SYM_SPECIFIC ? " \x1b[34mspec" : - " \x1b[33mnone", + rel.symbol.value.offset + elf_section(b, rel.symbol.section).data.offset, + rel.symbol.type == SYM_DATA ? " \x1b[34mdata" : + rel.symbol.type == SYM_COMMON ? " \x1b[32mdata" : + rel.symbol.type == SYM_TLS ? " \x1b[35mdata" : + rel.symbol.type == SYM_PROC ? " \x1b[34mproc" : + rel.symbol.type == SYM_SECTION ? " \x1b[36msect" : + rel.symbol.type == SYM_SPECIFIC ? " \x1b[34mspec" : + " \x1b[33mnone", elf_name_from_offset(b, rel.symbol.name) ); } |