Handle .eh_frame relocations
This commit is contained in:
parent
a662dde651
commit
2fa769df89
@ -8870,13 +8870,11 @@ may_be_unused fn void write_elf(Thread* thread, const ObjectOptions* const restr
|
|||||||
.pointer = 0x1c,
|
.pointer = 0x1c,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Relocated
|
// _start
|
||||||
s32 initial_location = 0xffffefe0;
|
s32 initial_location = cast(s32, s64, (s64)_start_offset - (s64)builder->file.length);
|
||||||
assert(initial_location == -4128);
|
|
||||||
*(s32*)(vb_add(&builder->file, sizeof(s32))) = initial_location;
|
*(s32*)(vb_add(&builder->file, sizeof(s32))) = initial_location;
|
||||||
|
|
||||||
u32 size = 0x26;
|
*(u32*)(vb_add(&builder->file, sizeof(u32))) = _start_size;
|
||||||
*(u32*)(vb_add(&builder->file, sizeof(u32))) = size;
|
|
||||||
|
|
||||||
*vb_add(&builder->file, 1) = 0; // TODO: ???
|
*vb_add(&builder->file, 1) = 0; // TODO: ???
|
||||||
|
|
||||||
@ -8895,11 +8893,10 @@ may_be_unused fn void write_elf(Thread* thread, const ObjectOptions* const restr
|
|||||||
.length = 0x10,
|
.length = 0x10,
|
||||||
.pointer = 0x34,
|
.pointer = 0x34,
|
||||||
};
|
};
|
||||||
s32 initial_location = 0xfffff0c4;
|
s32 initial_location = cast(s32, s64, (s64)main_offset - (s64)builder->file.length);
|
||||||
*(s32*)(vb_add(&builder->file, sizeof(s32))) = initial_location;
|
*(s32*)(vb_add(&builder->file, sizeof(s32))) = initial_location;
|
||||||
|
|
||||||
u32 size = 3;
|
*(u32*)(vb_add(&builder->file, sizeof(u32))) = main_size;
|
||||||
*(u32*)(vb_add(&builder->file, sizeof(u32))) = size;
|
|
||||||
|
|
||||||
*(u32*)(vb_add(&builder->file, sizeof(u32))) = 0; // TODO: ???
|
*(u32*)(vb_add(&builder->file, sizeof(u32))) = 0; // TODO: ???
|
||||||
*(u32*)(vb_add(&builder->file, sizeof(u32))) = 0; // TODO: ???
|
*(u32*)(vb_add(&builder->file, sizeof(u32))) = 0; // TODO: ???
|
||||||
|
Loading…
x
Reference in New Issue
Block a user