aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-04-02 12:15:20 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-04-02 12:15:20 +0000
commitb1b49789d0b4b7514540d8b80aaf12793d42a8e9 (patch)
tree77bb82baa7110429053d92f0ec99afcbe740f6ce /llvm/lib/MC/ELFObjectWriter.cpp
parent2dcb5c0a2c3974479d7ca775ca6102737495b40e (diff)
downloadllvm-b1b49789d0b4b7514540d8b80aaf12793d42a8e9.zip
llvm-b1b49789d0b4b7514540d8b80aaf12793d42a8e9.tar.gz
llvm-b1b49789d0b4b7514540d8b80aaf12793d42a8e9.tar.bz2
Work around gold bug http://sourceware.org/PR16794.
llvm-svn: 205416
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index d8f03fc..e9b8fe2 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -796,6 +796,11 @@ bool ELFObjectWriter::shouldRelocateWithSymbol(const MCSymbolRefExpr *RefA,
if (Flags & ELF::SHF_MERGE) {
if (C != 0)
return true;
+
+ // It looks like gold has a bug (http://sourceware.org/PR16794) and can
+ // only handle section relocations to mergeable sections if using RELA.
+ if (!hasRelocationAddend())
+ return true;
}
// Most TLS relocations use a got, so they need the symbol. Even those that