aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Chou <petechou@gmail.com>2014-09-26 10:26:37 +0800
committerPete Chou <petechou@gmail.com>2014-09-26 10:26:37 +0800
commit16c6eb74e234fc96ed81b2b09db14056f674a9d5 (patch)
tree4ea189d0e3dd0c3c606b5b180c1b247007dcd151
parente11c61b2723f91461b79e66c2cbed20bcb458d37 (diff)
downloadmclinker-16c6eb74e234fc96ed81b2b09db14056f674a9d5.tar.gz
ARM: Fix exidx ordering.
-rw-r--r--lib/Target/ARM/ARMEmulation.cpp5
-rwxr-xr-xtest/Android/Plasma/ARM/libplasma.golden.sobin264376 -> 264376 bytes
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMEmulation.cpp b/lib/Target/ARM/ARMEmulation.cpp
index c562371c..5969f275 100644
--- a/lib/Target/ARM/ARMEmulation.cpp
+++ b/lib/Target/ARM/ARMEmulation.cpp
@@ -35,6 +35,11 @@ static bool MCLDEmulateARMELF(LinkerScript& pScript, LinkerConfig& pConfig) {
// set up section map
if (pConfig.options().getScriptList().empty() &&
pConfig.codeGenType() != LinkerConfig::Object) {
+ // .ARM.exidx is associated with .text (which is always the first input
+ // text section in GNU ELF), and thus we have to do this special treatment.
+ pScript.sectionMap().insert(".ARM.exidx", ".ARM.exidx");
+ pScript.sectionMap().insert(".ARM.extab", ".ARM.extab");
+
pScript.sectionMap().insert(".ARM.exidx*", ".ARM.exidx");
pScript.sectionMap().insert(".ARM.extab*", ".ARM.extab");
pScript.sectionMap().insert(".ARM.attributes*", ".ARM.attributes");
diff --git a/test/Android/Plasma/ARM/libplasma.golden.so b/test/Android/Plasma/ARM/libplasma.golden.so
index a3b5f705..f9e921c5 100755
--- a/test/Android/Plasma/ARM/libplasma.golden.so
+++ b/test/Android/Plasma/ARM/libplasma.golden.so
Binary files differ