NetBSD: avoid ldd error on executables. zig cc produce 4 PT_LOAD segments,

wheras on NetBSD, only 2 PT_LOAD are usually produced by other compilers
(tested with host gcc and clang).

    $ ldd -v main_4segs
    .../main_4segs: wrong number of segments (4 != 2)
    .../main_4segs: invalid ELF class 2; expected 1
This commit is contained in:
Alain Greppin 2024-04-17 12:48:12 +02:00 committed by Andrew Kelley
parent 6c482b8033
commit 595a7f8b08

View File

@ -2508,7 +2508,7 @@ fn linkWithLLD(self: *Elf, arena: Allocator, prog_node: *std.Progress.Node) !voi
try argv.append("-pie"); try argv.append("-pie");
} }
if (is_dyn_lib and target.os.tag == .netbsd) { if (is_exe_or_dyn_lib and target.os.tag == .netbsd) {
// Add options to produce shared objects with only 2 PT_LOAD segments. // Add options to produce shared objects with only 2 PT_LOAD segments.
// NetBSD expects 2 PT_LOAD segments in a shared object, otherwise // NetBSD expects 2 PT_LOAD segments in a shared object, otherwise
// ld.elf_so fails loading dynamic libraries with "not found" error. // ld.elf_so fails loading dynamic libraries with "not found" error.