summaryrefslogtreecommitdiff
path: root/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2011-12-13 02:27:40 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2011-12-13 02:27:40 +0000
commitf3315cf65f9574cd1e4e784d2860c943cfa65ce9 (patch)
treed58fa6b8942c4eb05ac0a7d9ec6747e7d0a04a34 /lib/MC/ELFObjectWriter.cpp
parent6f20c61e07b570ad95fec81437972d653b362e63 (diff)
downloadllvm-f3315cf65f9574cd1e4e784d2860c943cfa65ce9.tar.gz
llvm-f3315cf65f9574cd1e4e784d2860c943cfa65ce9.tar.bz2
llvm-f3315cf65f9574cd1e4e784d2860c943cfa65ce9.tar.xz
Relocation against a symbol, instead of against section. We had some extreme
test cases where there were a lot of relocations applied relative to a large rodata section. Gas would create a symbol for each of these whereas we would be relative to the beginning of the rodata section. This change mimics what gas does. Patch by Jack Carter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/ELFObjectWriter.cpp')
-rw-r--r--lib/MC/ELFObjectWriter.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 40b84ae458..92aad94f17 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -1851,7 +1851,8 @@ const MCSymbol *MipsELFObjectWriter::ExplicitRelSym(const MCAssembler &Asm,
assert(Target.getSymA() && "SymA cannot be 0.");
const MCSymbol &Sym = Target.getSymA()->getSymbol();
- if (Sym.getSection().getKind().isMergeable1ByteCString())
+ if (Sym.getSection().getKind().isMergeableCString() ||
+ Sym.getSection().getKind().isMergeableConst())
return &Sym;
return NULL;
@@ -1914,4 +1915,3 @@ unsigned MipsELFObjectWriter::GetRelocType(const MCValue &Target,
return Type;
}
-