summaryrefslogtreecommitdiff
path: root/bxgen.c
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2024-07-30 16:00:36 +0200
committerMitya Selivanov <automainint@guattari.tech>2024-07-30 16:00:36 +0200
commit3341c4823a35bb9ca37e2bdc3864ce1ebd78d62c (patch)
tree948304a5bf2854dfd778b50ed85fe4f2bc8fb61e /bxgen.c
parent41b51baf9b14bae073aff088e624c139e47a1d62 (diff)
downloadbxgen-3341c4823a35bb9ca37e2bdc3864ce1ebd78d62c.zip
Fix symbol search
Diffstat (limited to 'bxgen.c')
-rwxr-xr-xbxgen.c94
1 files changed, 47 insertions, 47 deletions
diff --git a/bxgen.c b/bxgen.c
index f56107e..204dc0d 100755
--- a/bxgen.c
+++ b/bxgen.c
@@ -2360,7 +2360,7 @@ i64 unit_write_in_memory(
i64 rotext_address = base_address + program_offset;
i64 entry = rotext_address + codegen->entry_point;
- BX_LOG(VERBOSE, "Entry point: %08llx (%lld)", entry, entry);
+ BX_LOG(VERBOSE, "Entry point: 0x%08llx (%lld)", entry, entry);
i64 rotext_size = codegen->offset_code;
i64 rwzval_size = 0;
@@ -2654,47 +2654,47 @@ i64 unit_write_in_memory(
#define TODO_ BX_FAIL("Not implemented", 0)
- case R_X86_64_NONE: /* Do nothing */ break;
- case R_X86_64_64: ADD_(64, 0); break; // 64, S + A
- case R_X86_64_PC32: ADD_(32, S + A - P); break; // 32, S + A - P
- case R_X86_64_GOT32: TODO_; break; // 32, G + A
- case R_X86_64_PLT32: ADD_(32, L + A - P); break; // 32, L + A - P
- case R_X86_64_COPY: /* Do nothing */ break;
- case R_X86_64_GLOB_DAT: TODO_; break; // 64, S
- case R_X86_64_JUMP_SLOT: TODO_; break; // 64, S
- case R_X86_64_RELATIVE: TODO_; break; // 64, B + A
- case R_X86_64_GOTPCREL: ADD_(32, 0); break; // 32, G + GOT + A - P
- case R_X86_64_32: TODO_; break; // 32, S + A
- case R_X86_64_32S: TODO_; break; // 32, S + A
- case R_X86_64_16: TODO_; break; // 16, S + A
- case R_X86_64_PC16: TODO_; break; // 16, S + A - P
- case R_X86_64_8: TODO_; break; // 8, S + A
- case R_X86_64_PC8: TODO_; break; // 8, S + A - P
- case R_X86_64_DTPMOD64: TODO_; break;
- case R_X86_64_DTPOFF64: TODO_; break;
- case R_X86_64_TPOFF64: TODO_; break;
- case R_X86_64_TLSGD: TODO_; break;
- case R_X86_64_TLSLD: TODO_; break;
- case R_X86_64_DTPOFF32: TODO_; break;
- case R_X86_64_GOTTPOFF: ADD_(32, 0); break; // 32, S - GOT
- case R_X86_64_TPOFF32: ADD_(32, 0); break; // 32, S + A - B
- case R_X86_64_PC64: TODO_; break; // 64, S + A - P
- case R_X86_64_GOTOFF64: TODO_; break;
- case R_X86_64_GOTPC32: TODO_; break; // 32, GOT + A - P
- case R_X86_64_GOT64: TODO_; break;
- case R_X86_64_GOTPCREL64: TODO_; break;
- case R_X86_64_GOTPC64: TODO_; break; // 64, GOT + A - P
- case R_X86_64_GOTPLT64: TODO_; break;
- case R_X86_64_PLTOFF64: TODO_; break;
- case R_X86_64_SIZE32: TODO_; break; // 32, Z + A
- case R_X86_64_SIZE64: TODO_; break; // 64, Z + A
- case R_X86_64_GOTPC32_TLSDESC: TODO_; break;
- case R_X86_64_TLSDESC_CALL: TODO_; break;
- case R_X86_64_TLSDESC: TODO_; break;
- case R_X86_64_IRELATIVE: TODO_; break;
- case R_X86_64_RELATIVE64: TODO_; break;
- case R_X86_64_GOTPCRELX: TODO_; break;
- case R_X86_64_REX_GOTPCRELX: ADD_(32, 0); break; // 32, GOT - P + G - 4
+ case R_X86_64_NONE: /* Do nothing */ break;
+ case R_X86_64_64: ADD_(64, 0); break; // 64, S + A
+ case R_X86_64_PC32: ADD_(32, S + A - P); break; // 32, S + A - P
+ case R_X86_64_GOT32: TODO_; break; // 32, G + A
+ case R_X86_64_PLT32: ADD_(32, L + A - P); break; // 32, L + A - P
+ case R_X86_64_COPY: /* Do nothing */ break;
+ case R_X86_64_GLOB_DAT: TODO_; break; // 64, S
+ case R_X86_64_JUMP_SLOT: TODO_; break; // 64, S
+ case R_X86_64_RELATIVE: TODO_; break; // 64, B + A
+ case R_X86_64_GOTPCREL: ADD_(32, 0); break; // 32, G + GOT + A - P
+ case R_X86_64_32: TODO_; break; // 32, S + A
+ case R_X86_64_32S: TODO_; break; // 32, S + A
+ case R_X86_64_16: TODO_; break; // 16, S + A
+ case R_X86_64_PC16: TODO_; break; // 16, S + A - P
+ case R_X86_64_8: TODO_; break; // 8, S + A
+ case R_X86_64_PC8: TODO_; break; // 8, S + A - P
+ case R_X86_64_DTPMOD64: TODO_; break;
+ case R_X86_64_DTPOFF64: TODO_; break;
+ case R_X86_64_TPOFF64: TODO_; break;
+ case R_X86_64_TLSGD: TODO_; break;
+ case R_X86_64_TLSLD: TODO_; break;
+ case R_X86_64_DTPOFF32: TODO_; break;
+ case R_X86_64_GOTTPOFF: ADD_(32, 0); break; // 32, S - GOT
+ case R_X86_64_TPOFF32: ADD_(32, 0); break; // 32, S + A - B
+ case R_X86_64_PC64: TODO_; break; // 64, S + A - P
+ case R_X86_64_GOTOFF64: TODO_; break;
+ case R_X86_64_GOTPC32: TODO_; break; // 32, GOT + A - P
+ case R_X86_64_GOT64: TODO_; break;
+ case R_X86_64_GOTPCREL64: TODO_; break;
+ case R_X86_64_GOTPC64: TODO_; break; // 64, GOT + A - P
+ case R_X86_64_GOTPLT64: TODO_; break;
+ case R_X86_64_PLTOFF64: TODO_; break;
+ case R_X86_64_SIZE32: TODO_; break; // 32, Z + A
+ case R_X86_64_SIZE64: TODO_; break; // 64, Z + A
+ case R_X86_64_GOTPC32_TLSDESC: TODO_; break;
+ case R_X86_64_TLSDESC_CALL: TODO_; break;
+ case R_X86_64_TLSDESC: TODO_; break;
+ case R_X86_64_IRELATIVE: TODO_; break;
+ case R_X86_64_RELATIVE64: TODO_; break;
+ case R_X86_64_GOTPCRELX: TODO_; break;
+ case R_X86_64_REX_GOTPCRELX: ADD_(32, 0); break; // 32, GOT - P + G - 4
default: BX_LAX(0, "Unknown relocation type");
#undef ADD_
@@ -2735,13 +2735,13 @@ i64 unit_write_in_memory(
b8 found = 0;
for (i64 i = 0; i < num_symbols; ++i)
- if (linker->symbols[i].section != 0 &&
- linker->symbols[i].name_size == rel.name_size &&
- bx_mem_eq(linker->symbols[i].name, rel.name, 6)) {
+ if (linker->symbols[i].section != 0 &&
+ linker->symbols[i].name_size == rel.name_size &&
+ bx_mem_eq(linker->symbols[i].name, rel.name, rel.name_size)) {
i64 value = rel.value + linker->symbols[i].address;
write_i64(LE, value, begin, end);
found = 1;
- BX_LOG(VERBOSE, "Found %.*s: %08llx", rel.name_size, rel.name, value);
+ BX_LOG(VERBOSE, "Found %.*s: 0x%08llx", rel.name_size, rel.name, value);
break;
}
@@ -3428,7 +3428,7 @@ int main(int argc, char **argv) {
n_call_by_name(
mainproc,
CONV_CDECL, // calling convention
- "_IO_puts", // proc name
+ "puts", // proc name
1, // number of arguments
(Var[]) {{
.node = n_str(mainproc, "hello sailor"), // the first argument