1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 02:33:06 +01:00

[dsymutil] Stop emulating dsymutil-classic CIE caching behavior

Stop emulating dsymutil-classic which only cached the last used CIE for
reuse.
This commit is contained in:
Jonas Devlieghere 2021-04-06 20:15:40 -07:00
parent 0bfa635758
commit 0567faf9a5
2 changed files with 2 additions and 15 deletions

View File

@ -1901,12 +1901,7 @@ void DWARFLinker::patchFrameInfoForObject(const DWARFFile &File,
auto IteratorInserted = EmittedCIEs.insert(
std::make_pair(CIEData, TheDwarfEmitter->getFrameSectionSize()));
// If there is no CIE yet for this ID, emit it.
if (IteratorInserted.second ||
// FIXME: dsymutil-classic only caches the last used CIE for
// reuse. Mimic that behavior for now. Just removing that
// second half of the condition and the LastCIEOffset variable
// makes the code DTRT.
LastCIEOffset != IteratorInserted.first->getValue()) {
if (IteratorInserted.second) {
LastCIEOffset = TheDwarfEmitter->getFrameSectionSize();
IteratorInserted.first->getValue() = LastCIEOffset;
TheDwarfEmitter->emitCIE(CIEData);

View File

@ -7,9 +7,6 @@
# Check the handling of multiple different CIEs. To have CIEs that
# appear to be different, use a dwarf2 version of the file along with
# a dwarf 4 version. The CIE header version (and layout) will be different.
# FIXME: this test also checks that we didn't reuse the first CIE when it
# appears again. This is a behavior we inherited from dsymutil-classic
# but this should be fixed (see comment in patchFrameInfoForObject())
---
triple: 'i386-apple-darwin'
objects:
@ -39,11 +36,6 @@ objects:
# CHECK-NEXT: Version:{{.*}}4
# CHECK-NOT: FDE
# CHECK: FDE cie=[[CIEDW4]] pc=00003000...00003
# CHECK-NOT: FDE
# CHECK: [[CIEDW2:[0-9a-f]*]] {{[0-9a-f]*}} ffffffff CIE
# CHECK-NEXT: Format: DWARF32
# CHECK-NEXT: Version:{{.*}}1
# CHECK-NOT: FDE
# CHECK: FDE cie=[[CIEDW2]] pc=00004000...00004
# CHECK: FDE cie=00000000 pc=00004000...00004
# CHECK-NOT: FDE
# CHECK: .eh_frame contents: