llvm/test/tools/dsymutil/X86/frame-2.test
Frederic Riss 9ccf07fb89 [dsymutil] Add support for linking the debug_frame section.
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
2015-06-05 23:06:11 +00:00

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