| Age | Commit message (Collapse) | Author |
|
GNU's LTO has a tendency to remove __pre_init, which is written in
inline assembly. It doesn't realize that the reset handler references
this symbol, because the reset handler is also written in inline
assembly. Not sure why LLVM's linker doesn't also optimize it away, but
this commit ensures that __pre_init remains in the output file.
|
|
LLVM's lld and GNU's ld have different ways of handling assignments in
output sections. Unless we specify ABSOLUTE, ld treats the number '0' as
a relative address from the section start, 0x6000_0000. On the other
hand, lld treats '0' as if it were written with ABSOLUTE, and it ignores
the ABSOLUTE function. So depending on your linker, __dcd would change
values.
This commit forces an absolute number for __dcd, ensuring a consistent
value no matter the linker.
|
|
Users can define their device configuration data (DCD), and place the
data in the .dcd section. If the .dcd section has content, the entry in
the IVT points at the user's DCD. This plays well with imxrt-dcd.
|
|
We can still maintain individual linker script components, then write
them into one, larger linker script. We're effectively implementing the
same behavior as INCLUDE while disallowing overrides of the linker
search path to find the INCLUDEd files.
Once we have one linker script, we can refactor for easier unit testing.
This commit adds simple unit tests for the default builder, and some of
the expected errors.
|
|
No need for us to set VTOR and the stack pointer anymore.
|
|
Might help the next person who wants to add a new family. There's a way
to defeat this lint when the enum is (Partial)Eq: use if / else to
emulate a fallthrough. I can't find _another_ lint that would prevent
that pattern, so I'll try to be vigilent here.
|
|
|