mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[codeview] Revert inline line table change of r362264
Testing with debuggers shows that our previous behavior was correct. The reason I thought MSVC did things differently is that MSVC prefers to use the 0xB combined code offset and code length update opcode when inline sites are discontiguous. Keep the test changes, and update the llvm-pdbutil inline line table dumper to account for this new interpretation of the opcodes. llvm-svn: 362277
This commit is contained in:
parent
ca528ad2be
commit
713939cc13
@ -535,6 +535,7 @@ void CodeViewContext::encodeInlineLineTable(MCAsmLayout &Layout,
|
||||
unsigned Length = computeLabelDiff(Layout, LastLabel, Loc.getLabel());
|
||||
compressAnnotation(BinaryAnnotationsOpCode::ChangeCodeLength, Buffer);
|
||||
compressAnnotation(Length, Buffer);
|
||||
LastLabel = Loc.getLabel();
|
||||
}
|
||||
HaveOpenRange = false;
|
||||
continue;
|
||||
|
@ -36,12 +36,11 @@
|
||||
# ASM-NEXT: 2b: 0f 0b ud2
|
||||
# End inline loc
|
||||
|
||||
# CODEVIEW: S_INLINESITE [size = 26]
|
||||
# CODEVIEW: S_INLINESITE [size = 24]
|
||||
# CODEVIEW-NEXT: inlinee = 0x1002 (f), parent = 0, end = 0
|
||||
# CODEVIEW-NEXT: 0B2E code 0xE (+0xE) line 1 (+1)
|
||||
# CODEVIEW-NEXT: 0409 code end 0x17 (+0x9)
|
||||
# CODEVIEW-NEXT: 0602 line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0318 code 0x26 (+0x18)
|
||||
# CODEVIEW-NEXT: 0B2F code 0x26 (+0xF) line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0407 code end 0x2D (+0x7)
|
||||
|
||||
.text
|
||||
|
@ -25,7 +25,7 @@
|
||||
# CODEVIEW-NEXT: inlinee = 0x1002 (do_exit), parent = 0, end = 0
|
||||
# CODEVIEW-NEXT: 0602 line 1 (+1)
|
||||
# CODEVIEW-NEXT: 0409 code end 0x9 (+0x9)
|
||||
# CODEVIEW-NEXT: 0B2A code 0xA (+0xA) line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0B21 code 0xA (+0x1) line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0B28 code 0x12 (+0x8) line 3 (+1)
|
||||
# CODEVIEW-NEXT: 0400 code end 0x12 (+0x0)
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
# CODEVIEW-NEXT: inlinee = 0x1002 (do_exit), parent = 0, end = 0
|
||||
# CODEVIEW-NEXT: 0602 line 1 (+1)
|
||||
# CODEVIEW-NEXT: 0409 code end 0x9 (+0x9)
|
||||
# CODEVIEW-NEXT: 0B2A code 0xA (+0xA) line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0B21 code 0xA (+0x1) line 2 (+1)
|
||||
# CODEVIEW-NEXT: 0B28 code 0x12 (+0x8) line 3 (+1)
|
||||
# CODEVIEW-NEXT: 0400 code end 0x12 (+0x0)
|
||||
|
||||
|
@ -689,6 +689,10 @@ Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, InlineSiteSym &IS) {
|
||||
break;
|
||||
case BinaryAnnotationsOpCode::ChangeCodeLength:
|
||||
formatCodeLength(Annot.U1);
|
||||
// Apparently this annotation updates the code offset. It's hard to make
|
||||
// MSVC produce this opcode, but clang uses it, and debuggers seem to use
|
||||
// this interpretation.
|
||||
CodeOffset += Annot.U1;
|
||||
break;
|
||||
case BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset:
|
||||
formatCodeOffset(Annot.U1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user