add support for modern linkers on linux (e.g. lld, mold) - #91
Open
SidneyCogdill wants to merge 3 commits into
Open
SidneyCogdill wants to merge 3 commits into
SidneyCogdill wants to merge 3 commits into
Conversation
previous implementation assumes this layout: [... .data ...][ .state ][ .bss ] where first writable PT_LOAD segment size ends exactly where .state ends and .bss begins. this is the behavior with ld.bfd but is no longer the case with lld and mold (with reordered / separate segement and/or full relro support). and cr segfault when reloading if linked with mold or lld. this patch fixes that by storing and using the dlpi_addr to resolve ELF section addresses directly.
previous implementation assumes this layout: [ .data ][ .state ][ .bss ] where first writable PT_LOAD segment size ends exactly where .state ends and .bss begins. this is the behavior with ld.bfd but is no longer the case with lld and mold (with reordered / separate segement and/or full relro support). and cr segfaults when reloading if linked with mold or lld. this patch fixes that by using the dlpi_addr to resolve ELF section addresses directly.
previous implementation assumes this layout: [ .data ][ .state ][ .bss ] where first writable PT_LOAD segment size ends exactly where .state ends and .bss begins. this is the behavior with ld.bfd but is no longer the case with lld and mold (with reordered / separate segement and/or full relro support). and cr segfault when reloading if linked with mold or lld. this patch fixes that by using the dlpi_addr to resolve ELF section addresses directly.
Owner
|
Thanks for the PR. Will take some time to look at it. Maybe you could add helper script to run tests with different linkers? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
previous implementation assumes this layout:
[... .data ...][ .state ][ .bss ]
where first writable PT_LOAD segment size ends exactly where .state ends and .bss begins.
this is the behavior with ld.bfd but is no longer the case with lld and mold (with reordered / separate segement and/or full relro support). and cr segfaults when reloading if linked with mold or lld.
this patch fixes that by using the dlpi_addr to resolve ELF section addresses directly.
works on my machine with ld.bfd and lld and mold with my local hello world example, may need more tests.