More DWARF-related things cleanup:

1. Fix PR1380
2. Apply Duncan's patch from PR1410
3. Insert workaround for "one personality function per module" as noted in PR1414
4. Emit correct debug frames for x86/linux. This partly fixes DebugInfo/2006-11-06-StackTrace.cpp: stack trace is
shown correctly, but arguments for function on top of stack are displayed incorrectly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37015 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anton Korobeynikov
2007-05-12 22:36:25 +00:00
parent 92c7283500
commit 0ff3ca4f92
5 changed files with 86 additions and 60 deletions

View File

@@ -1475,6 +1475,7 @@ MachineModuleInfo::MachineModuleInfo()
, RootScope(NULL)
, FrameMoves()
, LandingPads()
, Personality(NULL)
{}
MachineModuleInfo::~MachineModuleInfo() {
@@ -1685,9 +1686,13 @@ unsigned MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
/// addPersonality - Provide the personality function for the exception
/// information.
void MachineModuleInfo::addPersonality(MachineBasicBlock *LandingPad,
Function *Personality) {
Function *PersFn) {
LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
LP.Personality = Personality;
LP.Personality = PersFn;
// FIXME: Until PR1414 will be fixed, we're using 1 personality function per
// module
Personality = PersFn;
}
/// addCatchTypeInfo - Provide the catch typeinfo for a landing pad.
@@ -1751,7 +1756,11 @@ unsigned MachineModuleInfo::getTypeIDFor(GlobalVariable *TI) {
/// getLandingPadInfos - Return a reference to the landing pad info for the
/// current function.
Function *MachineModuleInfo::getPersonality() const {
return !LandingPads.empty() ? LandingPads[0].Personality : NULL;
// FIXME: Until PR1414 will be fixed, we're using 1 personality function per
// module
//return !LandingPads.empty() ? LandingPads[0].Personality : NULL;
return Personality;
}