aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authordhash <me@dha.sh>2023-09-29 13:38:54 -0400
committerCarl Åstholm <carl@astholm.se>2024-01-09 17:24:11 +0100
commit9bb643031864c8c3c2d4ac52aecb175283e335e3 (patch)
tree20e8fa8787aa7e29e9771edff9d20f8a404ea70b /src/link
parent60094cc3fc979df0928c412c9fded457172f2060 (diff)
downloadzig-9bb643031864c8c3c2d4ac52aecb175283e335e3.tar.gz
zig-9bb643031864c8c3c2d4ac52aecb175283e335e3.zip
Add support for `--(no-)undefined-version`
Co-authored-by: Motiejus Jakštys <motiejus@jakstys.lt> Co-authored-by: Jakub Konka <kubkon@jakubkonka.com> Co-authored-by: Samuel Cantero <scanterog@gmail.com> Co-authored-by: Giorgos Georgiou <giorgos.georgiou@datadoghq.com> Co-authored-by: Carl Åstholm <carl@astholm.se>
Diffstat (limited to 'src/link')
-rw-r--r--src/link/Coff/lld.zig2
-rw-r--r--src/link/Elf.zig10
-rw-r--r--src/link/MachO/zld.zig2
-rw-r--r--src/link/Wasm.zig4
4 files changed, 13 insertions, 5 deletions
diff --git a/src/link/Coff/lld.zig b/src/link/Coff/lld.zig
index 1115b91a57..6b9054b2b4 100644
--- a/src/link/Coff/lld.zig
+++ b/src/link/Coff/lld.zig
@@ -70,7 +70,7 @@ pub fn linkWithLLD(self: *Coff, arena: Allocator, prog_node: *std.Progress.Node)
man = comp.cache_parent.obtain();
self.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 10);
+ comptime assert(Compilation.link_hash_implementation_version == 11);
for (comp.objects) |obj| {
_ = try man.addFile(obj.path, null);
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 2f1d5703f9..ef06c8e1dd 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -22,6 +22,7 @@ soname: ?[]const u8,
bind_global_refs_locally: bool,
linker_script: ?[]const u8,
version_script: ?[]const u8,
+allow_undefined_version: bool,
print_icf_sections: bool,
print_map: bool,
entry_name: ?[]const u8,
@@ -325,6 +326,7 @@ pub fn createEmpty(
.bind_global_refs_locally = options.bind_global_refs_locally,
.linker_script = options.linker_script,
.version_script = options.version_script,
+ .allow_undefined_version = options.allow_undefined_version,
.print_icf_sections = options.print_icf_sections,
.print_map = options.print_map,
};
@@ -2410,10 +2412,11 @@ fn linkWithLLD(self: *Elf, arena: Allocator, prog_node: *std.Progress.Node) !voi
// We are about to obtain this lock, so here we give other processes a chance first.
self.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 10);
+ comptime assert(Compilation.link_hash_implementation_version == 11);
try man.addOptionalFile(self.linker_script);
try man.addOptionalFile(self.version_script);
+ man.hash.add(self.allow_undefined_version);
for (comp.objects) |obj| {
_ = try man.addFile(obj.path, null);
man.hash.add(obj.must_link);
@@ -2789,6 +2792,11 @@ fn linkWithLLD(self: *Elf, arena: Allocator, prog_node: *std.Progress.Node) !voi
try argv.append("-version-script");
try argv.append(version_script);
}
+ if (self.allow_undefined_version) {
+ try argv.append("--undefined-version");
+ } else {
+ try argv.append("--no-undefined-version");
+ }
}
// Positional arguments to the linker such as object files.
diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig
index b266bfeb47..57681dd935 100644
--- a/src/link/MachO/zld.zig
+++ b/src/link/MachO/zld.zig
@@ -55,7 +55,7 @@ pub fn linkWithZld(
// We are about to obtain this lock, so here we give other processes a chance first.
macho_file.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 10);
+ comptime assert(Compilation.link_hash_implementation_version == 11);
for (objects) |obj| {
_ = try man.addFile(obj.path, null);
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig
index 185d802588..9dbef32648 100644
--- a/src/link/Wasm.zig
+++ b/src/link/Wasm.zig
@@ -3547,7 +3547,7 @@ fn linkWithZld(wasm: *Wasm, arena: Allocator, prog_node: *std.Progress.Node) lin
// We are about to obtain this lock, so here we give other processes a chance first.
wasm.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 10);
+ comptime assert(Compilation.link_hash_implementation_version == 11);
for (objects) |obj| {
_ = try man.addFile(obj.path, null);
@@ -4633,7 +4633,7 @@ fn linkWithLLD(wasm: *Wasm, arena: Allocator, prog_node: *std.Progress.Node) !vo
// We are about to obtain this lock, so here we give other processes a chance first.
wasm.base.releaseLock();
- comptime assert(Compilation.link_hash_implementation_version == 10);
+ comptime assert(Compilation.link_hash_implementation_version == 11);
for (comp.objects) |obj| {
_ = try man.addFile(obj.path, null);