authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-09-08 22:00:31+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-09-08 22:00:31+02:00
logedbfd04ec1fa11fde88166c4b906b7868cbbf218
treeba957fae1289e85c55c6c32efe129fd4f7767aa4
parent9306dbd6194251e816f11bc8f420fac0d1ca8835
signaturelock-open Commit is signed but in an unrecognized format.

Do not pad out text blocks

It seems MachO does not like padding between text block in __text section. Unlike in Elf, there is no size information in symbol struct `nlist_64`. Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>

1 files changed, 2 insertions(+), 3 deletions(-)

src-self-hosted/link/MachO.zig+2-3
......@@ -500,9 +500,8 @@ fn allocateTextBlock(self: *MachO, text_block: *TextBlock, new_block_size: u64,
500500 const addr = blk: {
501501 if (self.last_text_block) |last| {
502502 const last_symbol = self.symbol_table.items[last.symbol_table_index.?];
503 const ideal_capacity = last.size * alloc_num / alloc_den;
504 const ideal_capacity_end_addr = last_symbol.n_value + ideal_capacity;
505 const new_start_addr = mem.alignForwardGeneric(u64, ideal_capacity_end_addr, alignment);
503 const end_addr = last_symbol.n_value + last.size;
504 const new_start_addr = mem.alignForwardGeneric(u64, end_addr, alignment);
506505 block_placement = last;
507506 break :blk new_start_addr;
508507 } else {