aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorMotiejus Jakštys <motiejus@jakstys.lt>2022-05-09 09:44:14 +0300
committerAndrew Kelley <andrew@ziglang.org>2022-09-08 22:30:32 -0400
commita833bdcd7e6fcfee6e9cc33a3f7de78b16a36941 (patch)
tree5b45c1662789e9743d328356167b3dce72495bfd /src/main.zig
parentab4b26d8a6a36ccf75af8e25f0a1f7b88063b76f (diff)
downloadzig-a833bdcd7e6fcfee6e9cc33a3f7de78b16a36941.tar.gz
zig-a833bdcd7e6fcfee6e9cc33a3f7de78b16a36941.zip
[ld] add --print-* for diagnostics
This adds the following for passthrough to lld: - `--print-gc-sections` - `--print-icf-sections` - `--print-map` I am not adding these to the cache manifest, since it does not change the produced artifacts. Tested with an example from #11398: it successfully prints the resulting map and the GC'd sections.
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 6263a6a402..039dacc877 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -691,6 +691,9 @@ fn buildOutputType(
var linker_max_memory: ?u64 = null;
var linker_shared_memory: bool = false;
var linker_global_base: ?u64 = null;
+ var linker_print_gc_sections: bool = false;
+ var linker_print_icf_sections: bool = false;
+ var linker_print_map: bool = false;
var linker_z_nodelete = false;
var linker_z_notext = false;
var linker_z_defs = false;
@@ -1816,6 +1819,12 @@ fn buildOutputType(
linker_gc_sections = true;
} else if (mem.eql(u8, arg, "--no-gc-sections")) {
linker_gc_sections = false;
+ } else if (mem.eql(u8, arg, "--print-gc-sections")) {
+ linker_print_gc_sections = true;
+ } else if (mem.eql(u8, arg, "--print-icf-sections")) {
+ linker_print_icf_sections = true;
+ } else if (mem.eql(u8, arg, "--print-map")) {
+ linker_print_map = true;
} else if (mem.eql(u8, arg, "--allow-shlib-undefined") or
mem.eql(u8, arg, "-allow-shlib-undefined"))
{
@@ -2911,6 +2920,9 @@ fn buildOutputType(
.linker_initial_memory = linker_initial_memory,
.linker_max_memory = linker_max_memory,
.linker_shared_memory = linker_shared_memory,
+ .linker_print_gc_sections = linker_print_gc_sections,
+ .linker_print_icf_sections = linker_print_icf_sections,
+ .linker_print_map = linker_print_map,
.linker_global_base = linker_global_base,
.linker_export_symbol_names = linker_export_symbol_names.items,
.linker_z_nodelete = linker_z_nodelete,