aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorDillen Meijboom <dillen@brainhive.nl>2024-02-22 23:39:16 +0100
committerAndrew Kelley <andrew@ziglang.org>2024-03-06 17:52:05 -0800
commit377ecc6afb14a112a07c6d2c3570e2b77b12a116 (patch)
tree706ef264ff807f729e37e2aef2b83a8d8e7ab99e /src/main.zig
parentaa7d16aba1f0b3a9e816684618d16cb1d178a6d3 (diff)
downloadzig-377ecc6afb14a112a07c6d2c3570e2b77b12a116.tar.gz
zig-377ecc6afb14a112a07c6d2c3570e2b77b12a116.zip
feat: add support for --enable-new-dtags and --disable-new-dtags
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
index 72c0773044..75ed080f9e 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -496,6 +496,8 @@ const usage_build_generic =
\\ --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
+ \\ --enable-new-dtags Use the new behavior for dynamic tags (RUNPATH)
+ \\ --disable-new-dtags Use the old behavior for dynamic tags (RPATH)
\\ --dynamic-linker [path] Set the dynamic interpreter path (usually ld.so)
\\ --sysroot [path] Set the system root directory (usually /)
\\ --version [ver] Dynamic library semver
@@ -824,6 +826,7 @@ fn buildOutputType(
var linker_script: ?[]const u8 = null;
var version_script: ?[]const u8 = null;
var linker_allow_undefined_version: bool = false;
+ var linker_enable_new_dtags: ?bool = null;
var disable_c_depfile = false;
var linker_sort_section: ?link.File.Elf.SortSection = null;
var linker_gc_sections: ?bool = null;
@@ -1191,6 +1194,10 @@ fn buildOutputType(
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, "--enable-new-dtags")) {
+ linker_enable_new_dtags = true;
+ } else if (mem.eql(u8, arg, "--disable-new-dtags")) {
+ linker_enable_new_dtags = 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(
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, "--enable-new-dtags")) {
+ linker_enable_new_dtags = true;
+ } else if (mem.eql(u8, arg, "--disable-new-dtags")) {
+ linker_enable_new_dtags = false;
} else if (mem.eql(u8, arg, "-O")) {
linker_optimization = linker_args_it.nextOrFatal();
} else if (mem.startsWith(u8, arg, "-O")) {
@@ -3181,6 +3192,7 @@ fn buildOutputType(
.linker_script = linker_script,
.version_script = version_script,
.linker_allow_undefined_version = linker_allow_undefined_version,
+ .linker_enable_new_dtags = linker_enable_new_dtags,
.disable_c_depfile = disable_c_depfile,
.soname = resolved_soname,
.linker_sort_section = linker_sort_section,