diff options
| author | dhash <me@dha.sh> | 2023-09-29 13:38:54 -0400 |
|---|---|---|
| committer | Carl Åstholm <carl@astholm.se> | 2024-01-09 17:24:11 +0100 |
| commit | 9bb643031864c8c3c2d4ac52aecb175283e335e3 (patch) | |
| tree | 20e8fa8787aa7e29e9771edff9d20f8a404ea70b /src/main.zig | |
| parent | 60094cc3fc979df0928c412c9fded457172f2060 (diff) | |
| download | zig-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/main.zig')
| -rw-r--r-- | src/main.zig | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig index 4442234bd2..5dbb4a0cf7 100644 --- a/src/main.zig +++ b/src/main.zig @@ -500,6 +500,8 @@ const usage_build_generic = \\Global Link Options: \\ -T[script], --script [script] Use a custom linker script \\ --version-script [path] Provide a version .map file + \\ --undefined-version Allow version scripts to refer to undefined symbols + \\ --no-undefined-version (default) Disallow version scripts from referring to undefined symbols \\ --dynamic-linker [path] Set the dynamic interpreter path (usually ld.so) \\ --sysroot [path] Set the system root directory (usually /) \\ --version [ver] Dynamic library semver @@ -826,6 +828,7 @@ fn buildOutputType( var want_compiler_rt: ?bool = null; var linker_script: ?[]const u8 = null; var version_script: ?[]const u8 = null; + var linker_allow_undefined_version: bool = false; var disable_c_depfile = false; var linker_sort_section: ?link.File.Elf.SortSection = null; var linker_gc_sections: ?bool = null; @@ -1200,6 +1203,10 @@ fn buildOutputType( linker_script = args_iter.nextOrFatal(); } else if (mem.eql(u8, arg, "-version-script") or mem.eql(u8, arg, "--version-script")) { version_script = args_iter.nextOrFatal(); + } else if (mem.eql(u8, arg, "--undefined-version")) { + linker_allow_undefined_version = true; + } else if (mem.eql(u8, arg, "--no-undefined-version")) { + linker_allow_undefined_version = false; } else if (mem.eql(u8, arg, "--library") or mem.eql(u8, arg, "-l")) { // We don't know whether this library is part of libc // or libc++ until we resolve the target, so we append @@ -2153,6 +2160,10 @@ fn buildOutputType( create_module.opts.rdynamic = true; } else if (mem.eql(u8, arg, "-version-script") or mem.eql(u8, arg, "--version-script")) { version_script = linker_args_it.nextOrFatal(); + } else if (mem.eql(u8, arg, "--undefined-version")) { + linker_allow_undefined_version = true; + } else if (mem.eql(u8, arg, "--no-undefined-version")) { + linker_allow_undefined_version = false; } else if (mem.eql(u8, arg, "-O")) { linker_optimization = linker_args_it.nextOrFatal(); } else if (mem.startsWith(u8, arg, "-O")) { @@ -3166,6 +3177,7 @@ fn buildOutputType( .hash_style = hash_style, .linker_script = linker_script, .version_script = version_script, + .linker_allow_undefined_version = linker_allow_undefined_version, .disable_c_depfile = disable_c_depfile, .soname = resolved_soname, .linker_sort_section = linker_sort_section, |
