| // Test the bits of .eh_frame on mips that are already implemented correctly. |
| |
| // FIXME: This test would be a lot cleaner if llvm-objdump had the |
| // --dwarf=frames option. |
| |
| // RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips |
| // RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS32 %s |
| |
| // RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mipsel |
| // RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS32EL %s |
| |
| // RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips64 |
| // RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS64 %s |
| |
| // RUN: llvm-mc -filetype=obj %s -o %t.o -arch=mips64el |
| // RUN: llvm-objdump -r -s %t.o | FileCheck --check-prefix=MIPS64EL %s |
| |
| func: |
| .cfi_startproc |
| .cfi_endproc |
| |
| // MIPS32: RELOCATION RECORDS FOR [.rel.eh_frame]: |
| // MIPS32-NEXT: R_MIPS_32 |
| // MIPS32: Contents of section .eh_frame: |
| // MIPS32-NEXT: 0000 |
| |
| // Length |
| // MIPS32: 00000010 |
| |
| // CIE ID |
| // MIPS32: 00000000 |
| |
| // Version |
| // MIPS32: 03 |
| |
| // Augmentation String |
| // MIPS32: 7a5200 |
| |
| // Code Alignment Factor |
| // MIPS32: 01 |
| |
| // Data Alignment Factor (-4) |
| // MIPS32: 7c |
| |
| // Return Address Register |
| // MIPS32: 1f |
| |
| // Augmentation Size |
| // MIPS32: 01 |
| |
| // MIPS32: .........zR..|.. |
| // MIPS32-NEXT: 0010 |
| |
| // Augmentation (fde pointer encoding: DW_EH_PE_sdata4) |
| // MIPS32: 0b |
| // FIXME: The instructions are different from the ones produces by gas. |
| |
| // MIPS32EL: RELOCATION RECORDS FOR [.rel.eh_frame]: |
| // MIPS32EL-NEXT: R_MIPS_32 |
| // MIPS32EL: Contents of section .eh_frame: |
| // MIPS32EL-NEXT: 0000 |
| |
| // Length |
| // MIPS32EL: 10000000 |
| |
| // CIE ID |
| // MIPS32EL: 00000000 |
| |
| // Version |
| // MIPS32EL: 03 |
| |
| // Augmentation String |
| // MIPS32EL: 7a5200 |
| |
| // Code Alignment Factor |
| // MIPS32EL: 01 |
| |
| // Data Alignment Factor (-4) |
| // MIPS32EL: 7c |
| |
| // Return Address Register |
| // MIPS32EL: 1f |
| |
| // Augmentation Size |
| // MIPS32EL: 01 |
| |
| // MIPS32EL: .........zR..|.. |
| // MIPS32EL-NEXT: 0010 |
| |
| // Augmentation (fde pointer encoding: DW_EH_PE_sdata4) |
| // MIPS32EL: 0b |
| // FIXME: The instructions are different from the ones produces by gas. |
| |
| // MIPS64: RELOCATION RECORDS FOR [.rela.eh_frame]: |
| // MIPS64-NEXT: R_MIPS_64 |
| // MIPS64: Contents of section .eh_frame: |
| // MIPS64-NEXT: 0000 |
| |
| // Length |
| // MIPS64: 00000010 |
| |
| // CIE ID |
| // MIPS64: 00000000 |
| |
| // Version |
| // MIPS64: 03 |
| |
| // Augmentation String |
| // MIPS64: 7a5200 |
| |
| // Code Alignment Factor |
| // MIPS64: 01 |
| |
| // Data Alignment Factor (-8). GAS uses -4. Should be ok as long as all |
| // offsets we need are a multiple of 8. |
| // MIPS64: 78 |
| |
| // Return Address Register |
| // MIPS64: 1f |
| |
| // Augmentation Size |
| // MIPS64: 01 |
| |
| // MIPS64: .........zR..x.. |
| // MIPS64-NEXT: 0010 |
| |
| // Augmentation (fde pointer encoding: DW_EH_PE_sdata8) |
| // MIPS64: 0c |
| // FIXME: The instructions are different from the ones produces by gas. |
| |
| |
| // MIPS64EL: RELOCATION RECORDS FOR [.rela.eh_frame]: |
| // MIPS64EL-NEXT: R_MIPS_64 |
| // MIPS64EL: Contents of section .eh_frame: |
| // MIPS64EL-NEXT: 0000 |
| |
| // Length |
| // MIPS64EL: 10000000 |
| |
| // CIE ID |
| // MIPS64EL: 00000000 |
| |
| // Version |
| // MIPS64EL: 03 |
| |
| // Augmentation String |
| // MIPS64EL: 7a5200 |
| |
| // Code Alignment Factor |
| // MIPS64EL: 01 |
| |
| // Data Alignment Factor (-8). GAS uses -4. Should be ok as long as all |
| // offsets we need are a multiple of 8. |
| // MIPS64EL: 78 |
| |
| // Return Address Register |
| // MIPS64EL: 1f |
| |
| // Augmentation Size |
| // MIPS64EL: 01 |
| |
| // MIPS64EL: .........zR..x.. |
| // MIPS64EL-NEXT: 0010 |
| |
| // Augmentation (fde pointer encoding: DW_EH_PE_sdata8) |
| // MIPS64EL: 0c |
| // FIXME: The instructions are different from the ones produces by gas. |