File: unwind-non-relocatable.test

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (153 lines) | stat: -rw-r--r-- 5,868 bytes parent folder | download | duplicates (19)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
## Check that we dump the unwind information for a non-relocatable input properly.

## Check that we correctly decode function addresses and that we are able to
## locate corresponding STT_FUNC symbols and dump function names properly.
# RUN: yaml2obj %s -o %t
# RUN: llvm-readobj -u %t | FileCheck --check-prefix=UNWIND %s
# RUN: llvm-readelf -u %t | FileCheck --check-prefix=UNWIND %s

# UNWIND:      UnwindInformation {
# UNWIND-NEXT:   UnwindIndexTable {
# UNWIND-NEXT:     SectionIndex: 2
# UNWIND-NEXT:     SectionName: .ARM.exidx
# UNWIND-NEXT:     SectionOffset: 0x34
# UNWIND-NEXT:     Entries [
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x230
# UNWIND-NEXT:         FunctionName: func1
# UNWIND-NEXT:         Model: Compact (Inline)
# UNWIND-NEXT:         PersonalityIndex: 0
# UNWIND-NEXT:         Opcodes [
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:         ]
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x234
# UNWIND-NEXT:         FunctionName: func2
# UNWIND-NEXT:         Model: Compact (Inline)
# UNWIND-NEXT:         PersonalityIndex: 0
# UNWIND-NEXT:         Opcodes [
# UNWIND-NEXT:           0x9B      ; vsp = r11
# UNWIND-NEXT:           0x84 0x80 ; pop {fp, lr}
# UNWIND-NEXT:         ]
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x248
# UNWIND-NEXT:         FunctionName: func3
# UNWIND-NEXT:         Model: Compact (Inline)
# UNWIND-NEXT:         PersonalityIndex: 0
# UNWIND-NEXT:         Opcodes [
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:         ]
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x24C
# UNWIND-NEXT:         Model: CantUnwind
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x4000026B
# UNWIND-NEXT:         FunctionName: func4
# UNWIND-NEXT:         Model: Compact (Inline)
# UNWIND-NEXT:         PersonalityIndex: 0
# UNWIND-NEXT:         Opcodes [
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:           0xB0      ; finish
# UNWIND-NEXT:         ]
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x25C
# UNWIND-NEXT:         FunctionName: func5
# UNWIND-NEXT:         ExceptionHandlingTable: .ARM.extab
# UNWIND-NEXT:         TableEntryAddress: 0xAABE44
# UNWIND-NEXT:         Model: Generic
# UNWIND-NEXT:         PersonalityRoutineAddress: 0x33CCCF44
# UNWIND-NEXT:         PersonalityRoutineName: personality1
# UNWIND-NEXT:       }
# UNWIND-NEXT:       Entry {
# UNWIND-NEXT:         FunctionAddress: 0x25C
# UNWIND-NEXT:         FunctionName: func5
# UNWIND-NEXT:         ExceptionHandlingTable: .ARM.extab
# UNWIND-NEXT:         TableEntryAddress: 0xAABE48
# UNWIND-NEXT:         Model: Generic
# UNWIND-NEXT:         PersonalityRoutineAddress: 0xFFFFFFFFF811138C
# UNWIND-NEXT:       }
# UNWIND-NEXT:     ]
# UNWIND-NEXT:   }
# UNWIND-NEXT: }

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_ARM
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Address: 0x230
  - Name:    .ARM.exidx
    Type:    SHT_ARM_EXIDX
    Address: 0x24C
    Entries:
## A. Address of .ARM.exidx (0x24C) + entry offset (0) + 0x7fffffe4 (31 bit) == 0x230 (func1).
      - Offset: 0x7FFFFFE4
        Value:  0x80B0B0B0 ## arbitrary opcodes.
## B. Address of .ARM.exidx (0x24C) + entry offset (8) + 0x7fffffe0 (31 bit) == 0x234 (func2).
      - Offset: 0x7FFFFFE0
        Value:  0x809B8480 ## arbitrary opcodes.
## C. Address of .ARM.exidx (0x24C) + entry offset (16) + 0x7fffffec (31 bit) == 0x248 (func3).
      - Offset: 0x7FFFFFEC
        Value:  0x80B0B0B0 ## arbitrary opcodes.
## D. Address of .ARM.exidx (0x24C) + entry offset (24) + 0x7fffffe8 (31 bit) == 0x24C.
      - Offset: 0x7FFFFFE8
        Value:  EXIDX_CANTUNWIND
## E. Address of .ARM.exidx (0x24C) + entry offset (32) + 0x3FFFFFFF (31 bit) == 0x4000026b (func4).
      - Offset: 0x3FFFFFFF
        Value:  0x80B0B0B0 ## arbitrary opcodes.
## F. Address of .ARM.exidx (0x24C) + entry offset (40) + 0x7FFFFFE8 (31 bit) == 0x25c (func5).
      - Offset: 0x7FFFFFE8
## Generic model. .ARM.exidx (0x24C) + entry offset (40 + 4) + 0x00AABBCC ==
##                0x00AABE44 == address of entry [0] in the .ARM.extab section.
##                0x00AABE44 + 0x33221100 (31 bit, signed, .ARM.extab entry [0] value) ==
##                  0x33cccf44 == personality1 routine address.
        Value:  0x00AABBCC
## G. Address of .ARM.exidx (0x24C) + entry offset (48) + 0x7FFFFFE0 (31 bit) == 0x25c (func5).
      - Offset: 0x7FFFFFE0
## Generic model. .ARM.exidx (0x24C) + entry offset (48 + 4) + 0x00AABBC8 ==
##                0x00AABE48 == address of entry [1] in the .ARM.extab section.
##                0x00AABE48 + 0x77665544 (31 bit, signed, .ARM.extab entry [1] value) ==
##                  0xFFFFFFFFF811138C == the address of a personality routine function that does not exist.
        Value:  0x00AABBC8
  - Name:    .ARM.extab
    Type:    SHT_PROGBITS
    Address: 0x00AABE44
    Content: "0011223344556677"
Symbols:
  - Name:    func1
    Type:    STT_FUNC
    Section: .text
    Value:   0x230
  - Name:    func2
    Type:    STT_FUNC
    Section: .text
    Value:   0x234
  - Name:    func3
    Type:    STT_FUNC
    Section: .text
    Value:   0x248
  - Name:    func4
    Type:    STT_FUNC
    Section: .text
    Value:   0x4000026b
  - Name:    func5
    Type:    STT_FUNC
    Section: .text
    Value:   0x25c
  - Name:  personality1
    Type:  STT_FUNC
    Value: 0x33cccf44