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,...@@ -500,9 +500,8 @@ fn allocateTextBlock(self: *MachO, text_block: *TextBlock, new_block_size: u64,
500 const addr = blk: {500 const addr = blk: {
501 if (self.last_text_block) |last| {501 if (self.last_text_block) |last| {
502 const last_symbol = self.symbol_table.items[last.symbol_table_index.?];502 const last_symbol = self.symbol_table.items[last.symbol_table_index.?];
503 const ideal_capacity = last.size * alloc_num / alloc_den;503 const end_addr = last_symbol.n_value + last.size;
504 const ideal_capacity_end_addr = last_symbol.n_value + ideal_capacity;504 const new_start_addr = mem.alignForwardGeneric(u64, end_addr, alignment);
505 const new_start_addr = mem.alignForwardGeneric(u64, ideal_capacity_end_addr, alignment);
506 block_placement = last;505 block_placement = last;
507 break :blk new_start_addr;506 break :blk new_start_addr;
508 } else {507 } else {