[AVR] Explicitly set the address of the data section when invoking the linker

This is required to get avr-gdb correctly showing values at the right
addresses. This problem was discovered by using debug symbols in an
external program to lookup values in an AVR simulator.
This commit is contained in:
Dylan McKay 2020-05-18 02:18:54 +12:00
parent 1d6eb09d22
commit ede6005e70

View File

@ -120,6 +120,13 @@ void AVR::Linker::ConstructJob(Compilation &C, const JobAction &JA,
Args.AddAllArgs(CmdArgs, options::OPT_L);
getToolChain().AddFilePathLibArgs(Args, CmdArgs);
// "Not [sic] that addr must be offset by adding 0x800000 the to
// real SRAM address so that the linker knows that the address
// is in the SRAM memory space."
//
// - https://www.nongnu.org/avr-libc/user-manual/mem_sections.html
CmdArgs.push_back("-Tdata=0x800100");
// If the family name is known, we can link with the device-specific libgcc.
// Without it, libgcc will simply not be linked. This matches avr-gcc
// behavior.