[clang] ede6005 - [AVR] Explicitly set the address of the data section when invoking the linker
Dylan McKay via cfe-commits
cfe-commits at lists.llvm.org
Sun May 17 07:26:31 PDT 2020
Author: Dylan McKay
Date: 2020-05-18T02:24:51+12:00
New Revision: ede6005e7092ddae454e4d365d8adefeaec1f5e3
URL: https://github.com/llvm/llvm-project/commit/ede6005e7092ddae454e4d365d8adefeaec1f5e3
DIFF: https://github.com/llvm/llvm-project/commit/ede6005e7092ddae454e4d365d8adefeaec1f5e3.diff
LOG: [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.
Added:
Modified:
clang/lib/Driver/ToolChains/AVR.cpp
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp b/clang/lib/Driver/ToolChains/AVR.cpp
index 6405db1a11a9..04655d5b1885 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -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.
More information about the cfe-commits
mailing list