aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCObjectWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-02-16 03:25:55 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-02-16 03:25:55 +0000
commit908159b46ae118d36fccbc1d5145dcedfc3d4185 (patch)
tree2bcfa35cdee3a066ce28656022bc1e7b506c6e5e /lib/MC/MCObjectWriter.cpp
parent169e1552e748348b033fb6817df4bffc345e5583 (diff)
Gas is very inconsistent about when a relaxation/relocation is needed. Do
the right thing and stop trying to copy it. Fixes PR8944. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125648 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCObjectWriter.cpp')
-rw-r--r--lib/MC/MCObjectWriter.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/MC/MCObjectWriter.cpp b/lib/MC/MCObjectWriter.cpp
index f7a790410c..efe9f68ee2 100644
--- a/lib/MC/MCObjectWriter.cpp
+++ b/lib/MC/MCObjectWriter.cpp
@@ -66,3 +66,15 @@ MCObjectWriter::IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
InSet,
false);
}
+
+bool
+MCObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm,
+ const MCSymbolData &DataA,
+ const MCFragment &FB,
+ bool InSet,
+ bool IsPCRel) const {
+ const MCSection &SecA = DataA.getSymbol().AliasedSymbol().getSection();
+ const MCSection &SecB = FB.getParent()->getSection();
+ // On ELF and COFF A - B is absolute if A and B are in the same section.
+ return &SecA == &SecB;
+}