Change the macho linker gc_sections option to respect rdynamic flag #25501
+2
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #17554
When initializing the gc_sections flag in the MachO linker, check the config's rdynamic setting. Don't eliminate dead code in non-debug builds when rdynamic is set (Unless gc_sections itself is explicitly set).
I tested locally on a c file such as this:
Cross-compiling for macos like so:
~/repos/zig/stage3/bin/zig cc -O3 -rdynamic main.c -o main --target=aarch64-macos-none
Using
llvm-objdump -S main
, I can confirm that:example
function is eliminated in-O3
example
function is present in-O3 -rdynamic
.This is my first open source contribution, let me know if anything needs to be fixed!