mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-09 22:13:07 +00:00
![Frederic Riss](/assets/img/avatar_default.png)
Linking the debug frame section is actually very easy as we just have to patch the start address in the FDE header and then copy the rest of the FDE without even looking at it. The only small complexity comes from the handling of the CIEs that we should unique across object file. This is also really easy by using a StringMap keyed on the raw contents of the CIE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239198 91177308-0d34-0410-b5e6-96231b3b80d8
48 lines
1.7 KiB
Plaintext
48 lines
1.7 KiB
Plaintext
# REQUIRES: object-emission
|
|
# RUN: rm -rf %t
|
|
# RUN: mkdir -p %t
|
|
# RUN: llc -filetype=obj %p/../Inputs/frame-dw2.ll -o %t/frame-dw2.o
|
|
# RUN: llc -filetype=obj %p/../Inputs/frame-dw4.ll -o %t/frame-dw4.o
|
|
# RUN: llvm-dsymutil -oso-prepend-path=%t -y %s -o - | llvm-dwarfdump -debug-dump=frames - | FileCheck %s
|
|
|
|
# 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-unknown-unknown-macho'
|
|
objects:
|
|
- filename: frame-dw2.o
|
|
symbols:
|
|
- { sym: _bar, objAddr: 0x0, binAddr: 0x1000, size: 0x12 }
|
|
- { sym: _baz, objAddr: 0x0, binAddr: 0x2000, size: 0x12 }
|
|
- filename: frame-dw4.o
|
|
symbols:
|
|
- { sym: _baz, objAddr: 0x0, binAddr: 0x3000, size: 0x12 }
|
|
- filename: frame-dw2.o
|
|
symbols:
|
|
- { sym: _bar, objAddr: 0x0, binAddr: 0x4000, size: 0x12 }
|
|
...
|
|
|
|
# CHECK: .debug_frame contents:
|
|
# CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE
|
|
# CHECK-NEXT: Version:{{.*}}1
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=00000000 pc=00001000...00001
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=00000000 pc=00002000...00002
|
|
# CHECK-NOT: FDE
|
|
# CHECK: [[CIEDW4:[0-9a-f]*]] 00000010 ffffffff CIE
|
|
# 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: Version:{{.*}}1
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=[[CIEDW2]] pc=00004000...00004
|
|
# CHECK-NOT: FDE
|
|
|