aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-02-24 20:18:01 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-02-24 20:18:01 +0000
commit0412d5b40a3bde02580db6e3050ada0598205716 (patch)
treebd20d0c62b31d22182e970e857ba1d2701b3c0d8 /lib/CodeGen
parent3a96275200e0e7200192c7de38238669ab068cb0 (diff)
downloadexternal_llvm-0412d5b40a3bde02580db6e3050ada0598205716.zip
external_llvm-0412d5b40a3bde02580db6e3050ada0598205716.tar.gz
external_llvm-0412d5b40a3bde02580db6e3050ada0598205716.tar.bz2
Fix llvm-gcc bootstrap with gnu ld.
The problem was codegen guessing the wrong values and printing .section .eh_frame,"aMS",@progbits,4 It is not clear at all if Codegen should try to guess, MC is the one that should know the default flags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126421 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/TargetLoweringObjectFileImpl.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index e4d9ee0..fa311dc 100644
--- a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -178,6 +178,10 @@ const MCSection *TargetLoweringObjectFileELF::getEHFrameSection() const {
static SectionKind
getELFKindForNamedSection(StringRef Name, SectionKind K) {
+ // FIXME: Why is this here? Codegen is should not be in the business
+ // of figuring section flags. If the user wrote section(".eh_frame"),
+ // we should just pass that to MC which will defer to the assembly
+ // or use its default if producing an object file.
if (Name.empty() || Name[0] != '.') return K;
// Some lame default implementation based on some magic section names.
@@ -203,6 +207,9 @@ getELFKindForNamedSection(StringRef Name, SectionKind K) {
Name.startswith(".llvm.linkonce.tb."))
return SectionKind::getThreadBSS();
+ if (Name == ".eh_frame")
+ return SectionKind::getDataRel();
+
return K;
}