101 lines · plain
1// Test the bits of .eh_frame on mips that are already implemented correctly.2 3// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips-unknown-linux-gnu4// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS32 %s5// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_ABS %s6 7// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mipsel-unknown-linux-gnu8// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS32 %s9// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_ABS %s10 11// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu12// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s13// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s14 15// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu16// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,ABS64 %s17// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_ABS %s18 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-independent21// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC32 %s22// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_PIC %s23 24// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mipsel-unknown-linux-gnu --position-independent25// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC32 %s26// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF32,DWARF32_PIC %s27 28// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu --position-independent29// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s30// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s31 32// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu --position-independent33// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s34// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s35 36// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64-unknown-linux-gnu --position-independent --large-code-model37// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s38// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s39 40// RUN: llvm-mc -filetype=obj %s -o %t.o -triple mips64el-unknown-linux-gnu --position-independent --large-code-model41// RUN: llvm-readobj -r %t.o | FileCheck --check-prefixes=RELOCS,PIC64 %s42// RUN: llvm-dwarfdump -eh-frame %t.o | FileCheck --check-prefixes=DWARF64,DWARF64_PIC %s43 44func:45 .cfi_startproc46 .cfi_endproc47 48// RELOCS: Relocations [49// RELOCS: Section ({{.+}}) .rel{{a?}}.eh_frame {50// ABS32-NEXT: R_MIPS_3251// ABS64-NEXT: R_MIPS_64/R_MIPS_NONE/R_MIPS_NONE52// PIC32-NEXT: R_MIPS_PC3253// PIC64-NEXT: R_MIPS_PC32/R_MIPS_NONE/R_MIPS_NONE54// RELOCS-NEXT: }55 56// DWARF32: 00000000 00000010 00000000 CIE57// DWARF32-NEXT: Format: DWARF3258// DWARF32-NEXT: Version: 159// DWARF32-NEXT: Augmentation: "zR"60// DWARF32-NEXT: Code alignment factor: 161// DWARF32-NEXT: Data alignment factor: -462// DWARF32-NEXT: Return address column: 3163// DWARF32_ABS-NEXT: Augmentation data: 0B64// ^^ fde pointer encoding: DW_EH_PE_sdata465// DWARF32_PIC-NEXT: Augmentation data: 1B66// ^^ fde pointer encoding: DW_EH_PE_pcrel | DW_EH_PE_sdata467// DWARF32-EMPTY:68// DWARF32-NEXT: DW_CFA_def_cfa_register: SP_6469//70// DWARF32_ABS: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...0000000071// DWARF32_PIC: 00000014 00000010 00000018 FDE cie=00000000 pc=0000001c...0000001c72// DWARF32-NEXT: Format: DWARF3273// DWARF32-NEXT: DW_CFA_nop:74// DWARF32-NEXT: DW_CFA_nop:75// DWARF32-NEXT: DW_CFA_nop:76 77 78// DWARF64: 00000000 00000010 00000000 CIE79// DWARF64-NEXT: Format: DWARF3280// DWARF64-NEXT: Version: 181// DWARF64-NEXT: Augmentation: "zR"82// DWARF64-NEXT: Code alignment factor: 183// DWARF64-NEXT: Data alignment factor: -884// ^^ GAS uses -4. Should be ok as long as85// all offsets we need are a multiple of 8.86// DWARF64-NEXT: Return address column: 3187// DWARF64_ABS-NEXT: Augmentation data: 0C88// ^^ fde pointer encoding: DW_EH_PE_sdata889// DWARF64_PIC: Augmentation data: 1B90// ^^ fde pointer encoding: DW_EH_PE_pcrel | DW_EH_PE_sdata491// DWARF64-EMPTY:92// DWARF64-NEXT: DW_CFA_def_cfa_register: SP_6493// DWARF64_PIC-NEXT: DW_CFA_nop:94//95// DWARF64_ABS: 00000014 00000018 00000018 FDE cie=00000000 pc=00000000...0000000096// DWARF64_PIC: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...0000000097// DWARF64-NEXT: Format: DWARF3298// DWARF64-NEXT: DW_CFA_nop:99// DWARF64-NEXT: DW_CFA_nop:100// DWARF64-NEXT: DW_CFA_nop:101