Ensure .AliasedSymbol() is called on all uses of getSymbol(). Affects ARM and MIPS...
authorJames Molloy <james.molloy@arm.com>
Sat, 28 Jan 2012 15:58:32 +0000 (15:58 +0000)
committerJames Molloy <james.molloy@arm.com>
Sat, 28 Jan 2012 15:58:32 +0000 (15:58 +0000)
Fixes PR11877

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149180 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
test/MC/ARM/pr11877.s [new file with mode: 0644]
test/MC/Mips/pr11877.s [new file with mode: 0644]

index 2ad64de988699443a3959bf92e5027471f98643d..7d44ddafeaecf1ca36c13f7ade7df3449b630a2a 100644 (file)
@@ -69,7 +69,7 @@ const MCSymbol *ARMELFObjectWriter::ExplicitRelSym(const MCAssembler &Asm,
                                                    const MCFragment &F,
                                                    const MCFixup &Fixup,
                                                    bool IsPCRel) const {
-  const MCSymbol &Symbol = Target.getSymA()->getSymbol();
+  const MCSymbol &Symbol = Target.getSymA()->getSymbol().AliasedSymbol();
   bool EmitThisSym = false;
 
   const MCSectionELF &Section =
index 9c2f81e596f6444cf758e0d309199280f9d0c5f1..196e17fefabb0c974718376dff47753604c96c8a 100644 (file)
@@ -53,7 +53,7 @@ const MCSymbol *MipsELFObjectWriter::ExplicitRelSym(const MCAssembler &Asm,
                                                     const MCFixup &Fixup,
                                                     bool IsPCRel) const {
   assert(Target.getSymA() && "SymA cannot be 0.");
-  const MCSymbol &Sym = Target.getSymA()->getSymbol();
+  const MCSymbol &Sym = Target.getSymA()->getSymbol().AliasedSymbol();
 
   if (Sym.getSection().getKind().isMergeableCString() ||
       Sym.getSection().getKind().isMergeableConst())
diff --git a/test/MC/ARM/pr11877.s b/test/MC/ARM/pr11877.s
new file mode 100644 (file)
index 0000000..da3f6ad
--- /dev/null
@@ -0,0 +1,6 @@
+// RUN: llvm-mc -triple arm-unknown-unknown %s
+
+i:
+        .long    g
+g = h
+h = i
diff --git a/test/MC/Mips/pr11877.s b/test/MC/Mips/pr11877.s
new file mode 100644 (file)
index 0000000..d354ce4
--- /dev/null
@@ -0,0 +1,6 @@
+// RUN: llvm-mc -triple mips-unknown-unknown %s
+
+i:
+        .long    g
+g = h
+h = i