From 89ed51bf5360f9abf07024e0a9f6c10382fbb624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 27 Apr 2026 23:10:37 +0200 Subject: [PATCH] link.Elf, link.Lld: executables should not have an image base on Haiku Executables are always ET_DYN on Haiku, so like shared libraries, they should not have an image base set. Elf2 already got this right, but Elf and Lld didn't. closes https://codeberg.org/ziglang/zig/issues/32100 --- src/link/Elf.zig | 2 +- src/link/Lld.zig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 2c035b6f07230872ca42bb4d93117de3489e211c..71000e3e60b180daa77097493e436338af9d23dd 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -286,7 +286,7 @@ pub fn createEmpty( .image_base = b: { if (is_dyn_lib) break :b 0; - if (output_mode == .Exe and comp.config.pie) break :b 0; + if (output_mode == .Exe and (comp.config.pie or target.os.tag == .haiku)) break :b 0; break :b options.image_base orelse switch (ptr_width) { .p32 => 0x10000, .p64 => 0x1000000, diff --git a/src/link/Lld.zig b/src/link/Lld.zig index 51d40f70971419150f5500c982d01f5892f113f1..cb6863ca0872d46b67f13437f7307dcdbb99cd48 100644 --- a/src/link/Lld.zig +++ b/src/link/Lld.zig @@ -126,7 +126,7 @@ pub const Elf = struct { .hash_style = options.hash_style, .image_base = b: { if (is_dyn_lib) break :b 0; - if (output_mode == .Exe and comp.config.pie) break :b 0; + if (output_mode == .Exe and (comp.config.pie or target.os.tag == .haiku)) break :b 0; break :b options.image_base orelse switch (ptr_width) { .p32 => 0x10000, .p64 => 0x1000000, -- 2.54.0