aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/main.zig b/src/main.zig
index 37c584ba57..eaff34ee9e 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -434,8 +434,10 @@ const usage_build_generic =
\\ origin Indicate that the object must have its origin processed
\\ nocopyreloc Disable the creation of copy relocations
\\ noexecstack Indicate that the object requires an executable stack
- \\ now Force all relocations to be processed on load
- \\ relro Force all relocations to be resolved and be read-only on load
+ \\ now (default) Force all relocations to be processed on load
+ \\ lazy Don't force all relocations to be processed on load
+ \\ relro (default) Force all relocations to be read-only after processing
+ \\ norelro Don't force all relocations to be read-only after processing
\\ -dynamic Force output to be dynamically linked
\\ -static Force output to be statically linked
\\ -Bsymbolic Bind global references locally
@@ -655,8 +657,8 @@ fn buildOutputType(
var linker_z_defs = false;
var linker_z_origin = false;
var linker_z_noexecstack = false;
- var linker_z_now = false;
- var linker_z_relro = false;
+ var linker_z_now = true;
+ var linker_z_relro = true;
var linker_tsaware = false;
var linker_nxcompat = false;
var linker_dynamicbase = false;
@@ -1209,8 +1211,12 @@ fn buildOutputType(
linker_z_noexecstack = true;
} else if (mem.eql(u8, z_arg, "now")) {
linker_z_now = true;
+ } else if (mem.eql(u8, z_arg, "lazy")) {
+ linker_z_now = false;
} else if (mem.eql(u8, z_arg, "relro")) {
linker_z_relro = true;
+ } else if (mem.eql(u8, z_arg, "norelro")) {
+ linker_z_relro = false;
} else {
warn("unsupported linker extension flag: -z {s}", .{z_arg});
}
@@ -1691,8 +1697,12 @@ fn buildOutputType(
linker_z_noexecstack = true;
} else if (mem.eql(u8, z_arg, "now")) {
linker_z_now = true;
+ } else if (mem.eql(u8, z_arg, "lazy")) {
+ linker_z_now = false;
} else if (mem.eql(u8, z_arg, "relro")) {
linker_z_relro = true;
+ } else if (mem.eql(u8, z_arg, "norelro")) {
+ linker_z_relro = false;
} else {
warn("unsupported linker extension flag: -z {s}", .{z_arg});
}