mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
9ccf07fb89
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
33 lines
1.0 KiB
Plaintext
33 lines
1.0 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: llvm-dsymutil -oso-prepend-path=%t -y %s -o - | llvm-dwarfdump -debug-dump=frames - | FileCheck %s
|
|
|
|
# This test is meant to verify that identical CIEs will get reused
|
|
# in the same file but also inbetween files. For this to happen, we
|
|
# link twice the same file using this made-up debug map:
|
|
|
|
---
|
|
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-dw2.o
|
|
symbols:
|
|
- { sym: _baz, objAddr: 0x0, binAddr: 0x3000, size: 0x12 }
|
|
...
|
|
|
|
# CHECK: .debug_frame contents:
|
|
# CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=00000000 pc=00001000...00001
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=00000000 pc=00002000...00002
|
|
# CHECK-NOT: FDE
|
|
# CHECK: FDE cie=00000000 pc=00003000...00003
|
|
# CHECK-NOT: FDE
|
|
|