|
1 | 1 | // Test the bits of .eh_frame on mips that are already implemented correctly.
|
2 | 2 |
|
3 | 3 | // RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips-unknown-linux-gnu
|
4 |
| -// RUN: llvm-objdump -r -section=.rel.eh_frame %t.o | FileCheck --check-prefix=REL32 %s |
5 |
| -// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefix=DWARF32 %s |
| 4 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS32 %s |
| 5 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_ABS %s |
6 | 6 |
|
7 | 7 | // RUN: llvm-mc -filetype=obj %s -o %t.o -triple mipsel-unknown-linux-gnu
|
8 |
| -// RUN: llvm-objdump -r -section=.rel.eh_frame %t.o | FileCheck --check-prefix=REL32 %s |
9 |
| -// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefix=DWARF32 %s |
| 8 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS32 %s |
| 9 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_ABS %s |
10 | 10 |
|
11 | 11 | // RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu
|
12 |
| -// RUN: llvm-objdump -r -section=.rela.eh_frame %t.o | FileCheck --check-prefix=REL64 %s |
13 |
| -// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefix=DWARF64 %s |
| 12 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s |
| 13 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s |
14 | 14 |
|
15 | 15 | // RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu
|
16 |
| -// RUN: llvm-objdump -r -section=.rela.eh_frame %t.o | FileCheck --check-prefix=REL64 %s |
17 |
| -// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefix=DWARF64 %s |
| 16 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s |
| 17 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s |
| 18 | + |
| 19 | +/// Check that position-indenpendent code use PC-relative relocations: |
| 20 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips-unknown-linux-gnu --position-independent |
| 21 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC32 %s |
| 22 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_PIC %s |
| 23 | + |
| 24 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mipsel-unknown-linux-gnu --position-independent |
| 25 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC32 %s |
| 26 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_PIC %s |
| 27 | + |
| 28 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu --position-independent |
| 29 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s |
| 30 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s |
| 31 | + |
| 32 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu --position-independent |
| 33 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s |
| 34 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s |
| 35 | + |
| 36 | +/// However using the large code model forces R_MIPS_64 since there is no R_MIPS_PC64 relocation: |
| 37 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu --position-independent --large-code-model |
| 38 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s |
| 39 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s |
| 40 | + |
| 41 | +// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu --position-independent --large-code-model |
| 42 | +// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s |
| 43 | +// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s |
18 | 44 |
|
19 | 45 | func:
|
20 | 46 | .cfi_startproc
|
21 | 47 | .cfi_endproc
|
22 | 48 |
|
23 |
| -// REL32: R_MIPS_32 |
24 |
| -// REL64: R_MIPS_64/R_MIPS_NONE/R_MIPS_NONE |
| 49 | +// RELOCS: Relocations [ |
| 50 | +// RELOCS: Section ({{.+}}) .rel{{a?}}.eh_frame { |
| 51 | +// ABS32-NEXT: R_MIPS_32 |
| 52 | +// ABS64-NEXT: R_MIPS_64/R_MIPS_NONE/R_MIPS_NONE |
| 53 | +// PIC32-NEXT: R_MIPS_PC32 |
| 54 | +// PIC64-NEXT: R_MIPS_PC32/R_MIPS_NONE/R_MIPS_NONE |
| 55 | +// RELOCS-NEXT: } |
25 | 56 |
|
26 | 57 | // DWARF32: 00000000 00000010 ffffffff CIE
|
27 |
| -// DWARF32: Version: 1 |
28 |
| -// DWARF32: Augmentation: "zR" |
29 |
| -// DWARF32: Code alignment factor: 1 |
30 |
| -// DWARF32: Data alignment factor: -4 |
31 |
| -// DWARF32: Return address column: 31 |
32 |
| -// DWARF32: Augmentation data: 0B |
33 |
| -// ^^ fde pointer encoding: DW_EH_PE_sdata4 |
34 |
| -// DWARF32: DW_CFA_def_cfa_register: reg29 |
| 58 | +// DWARF32-NEXT: Version: 1 |
| 59 | +// DWARF32-NEXT: Augmentation: "zR" |
| 60 | +// DWARF32-NEXT: Code alignment factor: 1 |
| 61 | +// DWARF32-NEXT: Data alignment factor: -4 |
| 62 | +// DWARF32-NEXT: Return address column: 31 |
| 63 | +// DWARF32_ABS-NEXT: Augmentation data: 0B |
| 64 | +// ^^ fde pointer encoding: DW_EH_PE_sdata4 |
| 65 | +// DWARF32_PIC-NEXT: Augmentation data: 1B |
| 66 | +// ^^ fde pointer encoding: DW_EH_PE_pcrel | DW_EH_PE_sdata4 |
| 67 | +// DWARF32-EMPTY: |
| 68 | +// DWARF32-NEXT: DW_CFA_def_cfa_register: reg29 |
35 | 69 | //
|
36 | 70 | // DWARF32: 00000014 00000010 00000018 FDE cie=00000018 pc=00000000...00000000
|
37 |
| -// DWARF32: DW_CFA_nop: |
38 |
| -// DWARF32: DW_CFA_nop: |
39 |
| -// DWARF32: DW_CFA_nop: |
| 71 | +// DWARF32-NEXT: DW_CFA_nop: |
| 72 | +// DWARF32-NEXT: DW_CFA_nop: |
| 73 | +// DWARF32-NEXT: DW_CFA_nop: |
| 74 | + |
40 | 75 |
|
41 | 76 | // DWARF64: 00000000 00000010 ffffffff CIE
|
42 |
| -// DWARF64: Version: 1 |
43 |
| -// DWARF64: Augmentation: "zR" |
44 |
| -// DWARF64: Code alignment factor: 1 |
45 |
| -// DWARF64: Data alignment factor: -8 |
46 |
| -// ^^ GAS uses -4. Should be ok as long as |
47 |
| -// all offsets we need are a multiple of 8. |
48 |
| -// DWARF64: Return address column: 31 |
49 |
| -// DWARF64: Augmentation data: 0C |
50 |
| -// ^^ fde pointer encoding: DW_EH_PE_sdata8 |
51 |
| -// DWARF64: DW_CFA_def_cfa_register: reg29 |
| 77 | +// DWARF64-NEXT: Version: 1 |
| 78 | +// DWARF64-NEXT: Augmentation: "zR" |
| 79 | +// DWARF64-NEXT: Code alignment factor: 1 |
| 80 | +// DWARF64-NEXT: Data alignment factor: -8 |
| 81 | +// ^^ GAS uses -4. Should be ok as long as |
| 82 | +// all offsets we need are a multiple of 8. |
| 83 | +// DWARF64-NEXT: Return address column: 31 |
| 84 | +// DWARF64_ABS-NEXT: Augmentation data: 0C |
| 85 | +// ^^ fde pointer encoding: DW_EH_PE_sdata8 |
| 86 | +// DWARF64_PIC: Augmentation data: 1B |
| 87 | +// ^^ fde pointer encoding: DW_EH_PE_pcrel | DW_EH_PE_sdata4 |
| 88 | +// DWARF64-EMPTY: |
| 89 | +// DWARF64-NEXT: DW_CFA_def_cfa_register: reg29 |
| 90 | +// DWARF64_PIC-NEXT: DW_CFA_nop: |
52 | 91 | //
|
53 |
| -// DWARF64: 00000014 00000018 00000018 FDE cie=00000018 pc=00000000...00000000 |
54 |
| -// DWARF64: DW_CFA_nop: |
55 |
| -// DWARF64: DW_CFA_nop: |
56 |
| -// DWARF64: DW_CFA_nop: |
| 92 | +// DWARF64_ABS: 00000014 00000018 00000018 FDE cie=00000018 pc=00000000...00000000 |
| 93 | +// DWARF64_PIC: 00000014 00000010 00000018 FDE cie=00000018 pc=00000000...00000000 |
| 94 | +// DWARF64-NEXT: DW_CFA_nop: |
| 95 | +// DWARF64-NEXT: DW_CFA_nop: |
| 96 | +// DWARF64-NEXT: DW_CFA_nop: |
0 commit comments