forked from OSchip/llvm-project
Add verbose EH table printing to SjLj exception tables.
llvm-svn: 133561
This commit is contained in:
parent
0ab7767b37
commit
ddec6838a9
|
|
@ -527,14 +527,30 @@ void DwarfException::EmitExceptionTable() {
|
||||||
I = CallSites.begin(), E = CallSites.end(); I != E; ++I, ++idx) {
|
I = CallSites.begin(), E = CallSites.end(); I != E; ++I, ++idx) {
|
||||||
const CallSiteEntry &S = *I;
|
const CallSiteEntry &S = *I;
|
||||||
|
|
||||||
|
if (VerboseAsm) {
|
||||||
|
// Emit comments that decode the call site.
|
||||||
|
Asm->OutStreamer.AddComment(Twine(">> Call Site ") +
|
||||||
|
llvm::utostr(idx) + " <<");
|
||||||
|
Asm->OutStreamer.AddComment(Twine(" On exception at call site ") +
|
||||||
|
llvm::utostr(idx));
|
||||||
|
|
||||||
|
if (S.Action == 0)
|
||||||
|
Asm->OutStreamer.AddComment(" Action: cleanup");
|
||||||
|
else
|
||||||
|
Asm->OutStreamer.AddComment(Twine(" Action: ") +
|
||||||
|
llvm::utostr((S.Action - 1) / 2 + 1));
|
||||||
|
|
||||||
|
Asm->OutStreamer.AddBlankLine();
|
||||||
|
}
|
||||||
|
|
||||||
// Offset of the landing pad, counted in 16-byte bundles relative to the
|
// Offset of the landing pad, counted in 16-byte bundles relative to the
|
||||||
// @LPStart address.
|
// @LPStart address.
|
||||||
Asm->EmitULEB128(idx, "Call Site");
|
Asm->EmitULEB128(idx);
|
||||||
|
|
||||||
// Offset of the first associated action record, relative to the start of
|
// Offset of the first associated action record, relative to the start of
|
||||||
// the action table. This value is biased by 1 (1 indicates the start of
|
// the action table. This value is biased by 1 (1 indicates the start of
|
||||||
// the action table), and 0 indicates that there are no actions.
|
// the action table), and 0 indicates that there are no actions.
|
||||||
Asm->EmitULEB128(S.Action, "Action");
|
Asm->EmitULEB128(S.Action);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// DWARF Exception handling
|
// DWARF Exception handling
|
||||||
|
|
@ -586,6 +602,7 @@ void DwarfException::EmitExceptionTable() {
|
||||||
Asm->OutStreamer.AddComment(Twine(" Call between ") +
|
Asm->OutStreamer.AddComment(Twine(" Call between ") +
|
||||||
BeginLabel->getName() + " and " +
|
BeginLabel->getName() + " and " +
|
||||||
EndLabel->getName());
|
EndLabel->getName());
|
||||||
|
|
||||||
if (!S.PadLabel) {
|
if (!S.PadLabel) {
|
||||||
Asm->OutStreamer.AddComment(" has no landing pad");
|
Asm->OutStreamer.AddComment(" has no landing pad");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue