forked from OSchip/llvm-project
Provide correct DWARF register numbering for debug information emission on x86-32/Darwin.
This should fix bunch of issues. llvm-svn: 46337
This commit is contained in:
parent
3efff5472b
commit
fcde616864
|
|
@ -64,12 +64,15 @@ int X86RegisterInfo::getDwarfRegNum(unsigned RegNo, bool isEH) const {
|
||||||
unsigned Flavour = DWARFFlavour::X86_64;
|
unsigned Flavour = DWARFFlavour::X86_64;
|
||||||
if (!Subtarget->is64Bit()) {
|
if (!Subtarget->is64Bit()) {
|
||||||
if (Subtarget->isTargetDarwin()) {
|
if (Subtarget->isTargetDarwin()) {
|
||||||
Flavour = DWARFFlavour::X86_32_Darwin;
|
if (isEH)
|
||||||
|
Flavour = DWARFFlavour::X86_32_DarwinEH;
|
||||||
|
else
|
||||||
|
Flavour = DWARFFlavour::X86_32_Generic;
|
||||||
} else if (Subtarget->isTargetCygMing()) {
|
} else if (Subtarget->isTargetCygMing()) {
|
||||||
// Unsupported by now, just quick fallback
|
// Unsupported by now, just quick fallback
|
||||||
Flavour = DWARFFlavour::X86_32_ELF;
|
Flavour = DWARFFlavour::X86_32_Generic;
|
||||||
} else {
|
} else {
|
||||||
Flavour = DWARFFlavour::X86_32_ELF;
|
Flavour = DWARFFlavour::X86_32_Generic;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ namespace N86 {
|
||||||
///
|
///
|
||||||
namespace DWARFFlavour {
|
namespace DWARFFlavour {
|
||||||
enum {
|
enum {
|
||||||
X86_64 = 0, X86_32_Darwin = 1, X86_32_ELF = 2
|
X86_64 = 0, X86_32_DarwinEH = 1, X86_32_Generic = 2
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,8 @@ let Namespace = "X86" in {
|
||||||
|
|
||||||
// Dwarf numbering is different for 32-bit and 64-bit, and there are
|
// Dwarf numbering is different for 32-bit and 64-bit, and there are
|
||||||
// variations by target as well. Currently the first entry is for X86-64,
|
// variations by target as well. Currently the first entry is for X86-64,
|
||||||
// second - for X86-32/Darwin and third for X86-32/Linux
|
// second - for EH on X86-32/Darwin and third is 'generic' one (X86-32/Linux
|
||||||
|
// and debug information on X86-32/Darwin)
|
||||||
// FIXME: Comments in gcc indicate that Darwin uses different numbering
|
|
||||||
// for debug info and exception handling info:( The numbering here is
|
|
||||||
// for exception handling.
|
|
||||||
|
|
||||||
// 8-bit registers
|
// 8-bit registers
|
||||||
// Low registers
|
// Low registers
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue