Linking and linker relaxation fixes #200
Merged
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.
This PR fixes the following issues:
.sdata*
sections being generated. These sections are created by compilers in order to optimize access for small data on some architectures. Right now this breaks theespressif/esp
example the.sdata
output section is being automatically placed at the wrong place, creating an incorrect and enormous binary.__global_pointer$
used in the RISC-V architecture CPUs to initialize the GP register. This register is then used in order to improve access times to frequently used data, as long as it is +-2048 bytes away by fitting the offset in the immideate part of the instruction.espressif-riscv
References:
https://www.sifive.com/blog/all-aboard-part-3-linker-relaxation-in-riscv-toolchain
https://five-embeddev.com/quickref/global_pointer.html
https://d3s.mff.cuni.cz/files/teaching/nswi200/202324/doc/riscv-abi.pdf