move getDwarfExceptionSection from TAI to TLOF and rename it to

getLSDASection() to be more specific.  This makes it pretty obvious
that the ELF LSDA section is being specified wrong in PIC mode.  We're
probably getting a lot of startup-time relocations to a readonly page,
which is expensive and bad.

Someone who cares about ELF C++ should investigate this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77847 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-08-02 01:34:32 +00:00
parent 967ce7f5e1
commit d5bbb07ec8
7 changed files with 21 additions and 19 deletions

View File

@@ -20,10 +20,11 @@
#include "llvm/Support/Timer.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetAsmInfo.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/ADT/StringExtras.h"
using namespace llvm;
@@ -539,10 +540,8 @@ void DwarfException::EmitExceptionTable() {
unsigned SizeAlign = (4 - TotalSize) & 3;
// Begin the exception table.
//MCSection *LSDASection = TAI->getLSDASection();
//Asm->SwitchToSection(LSDASection);
Asm->SwitchToDataSection(TAI->getDwarfExceptionSection());
const MCSection *LSDASection = Asm->getObjFileLowering().getLSDASection();
Asm->SwitchToSection(LSDASection);
Asm->EmitAlignment(2, 0, 0, false);
O << "GCC_except_table" << SubprogramCount << ":\n";