mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
a834d6a4bb
Previously we assumed the section name had the form .text$foo, which is what we used to do for inline functions. If the dollar wasn't present, we'd put unwind data in the .pdata and .xdata sections for the main .text section, which is incorrect. Fixes PR22001. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224738 91177308-0d34-0410-b5e6-96231b3b80d8
108 lines
2.7 KiB
ArmAsm
108 lines
2.7 KiB
ArmAsm
// This test ensures functions in custom sections get unwind info emitted in a
|
|
// distinct .xdata section. Ideally we'd just emit a second .xdata section with
|
|
// the same name and characteristics, but MC uniques sections by name and
|
|
// characteristics, so that is not possible.
|
|
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s -sd | FileCheck %s
|
|
|
|
// CHECK: Name: .xdata$foo
|
|
// CHECK-NEXT: VirtualSize
|
|
// CHECK-NEXT: VirtualAddress
|
|
// CHECK-NEXT: RawDataSize: 8
|
|
// CHECK-NEXT: PointerToRawData
|
|
// CHECK-NEXT: PointerToRelocations
|
|
// CHECK-NEXT: PointerToLineNumbers
|
|
// CHECK-NEXT: RelocationCount: 0
|
|
// CHECK-NEXT: LineNumberCount: 0
|
|
// CHECK-NEXT: Characteristics [
|
|
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
|
|
// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
|
|
// CHECK-NEXT: IMAGE_SCN_MEM_READ
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: SectionData (
|
|
// CHECK-NEXT: 0000: 01050200 05500402
|
|
// CHECK-NEXT: )
|
|
|
|
// CHECK: Name: .xdata$.mytext
|
|
// CHECK-NEXT: VirtualSize
|
|
// CHECK-NEXT: VirtualAddress
|
|
// CHECK-NEXT: RawDataSize: 8
|
|
// CHECK-NEXT: PointerToRawData
|
|
// CHECK-NEXT: PointerToRelocations
|
|
// CHECK-NEXT: PointerToLineNumbers
|
|
// CHECK-NEXT: RelocationCount: 0
|
|
// CHECK-NEXT: LineNumberCount: 0
|
|
// CHECK-NEXT: Characteristics [
|
|
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
|
|
// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
|
|
// CHECK-NEXT: IMAGE_SCN_MEM_READ
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: SectionData (
|
|
// CHECK-NEXT: 0000: 01050200 05500402
|
|
// CHECK-NEXT: )
|
|
|
|
// CHECK: Name: .xdata
|
|
// CHECK-NEXT: VirtualSize
|
|
// CHECK-NEXT: VirtualAddress
|
|
// CHECK-NEXT: RawDataSize: 8
|
|
// CHECK-NEXT: PointerToRawData
|
|
// CHECK-NEXT: PointerToRelocations
|
|
// CHECK-NEXT: PointerToLineNumbers
|
|
// CHECK-NEXT: RelocationCount: 0
|
|
// CHECK-NEXT: LineNumberCount: 0
|
|
// CHECK-NEXT: Characteristics [
|
|
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
|
|
// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
|
|
// CHECK-NEXT: IMAGE_SCN_MEM_READ
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: SectionData (
|
|
// CHECK-NEXT: 0000: 01050200 05500402
|
|
// CHECK-NEXT: )
|
|
|
|
|
|
|
|
.section .text$foo,"x"
|
|
.globl foo
|
|
.def foo; .scl 2; .type 32; .endef
|
|
.seh_proc foo
|
|
foo:
|
|
subq $8, %rsp
|
|
.seh_stackalloc 8
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
.seh_endprologue
|
|
popq %rbp
|
|
addq $8, %rsp
|
|
ret
|
|
.seh_endproc
|
|
|
|
.section .mytext,"x"
|
|
.globl bar
|
|
.def bar; .scl 2; .type 32; .endef
|
|
.seh_proc bar
|
|
bar:
|
|
subq $8, %rsp
|
|
.seh_stackalloc 8
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
.seh_endprologue
|
|
popq %rbp
|
|
addq $8, %rsp
|
|
ret
|
|
.seh_endproc
|
|
|
|
.section .text
|
|
.globl baz
|
|
.def baz; .scl 2; .type 32; .endef
|
|
.seh_proc baz
|
|
baz:
|
|
subq $8, %rsp
|
|
.seh_stackalloc 8
|
|
pushq %rbp
|
|
.seh_pushreg %rbp
|
|
.seh_endprologue
|
|
popq %rbp
|
|
addq $8, %rsp
|
|
ret
|
|
.seh_endproc
|
|
|