Home | History | Annotate | Download | only in ARM
      1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
      2 @ RUN:   | llvm-readobj -s -sd -sr > %t
      3 @ RUN: FileCheck %s < %t
      4 @ RUN: FileCheck --check-prefix=RELOC %s < %t
      5 
      6 @ Check the .handlerdata directive (without .personality directive)
      7 
      8 	.syntax unified
      9 
     10 @-------------------------------------------------------------------------------
     11 @ TEST1
     12 @-------------------------------------------------------------------------------
     13 	.section	.TEST1
     14 	.globl	func1
     15 	.align	2
     16 	.type	func1,%function
     17 	.fnstart
     18 func1:
     19 	bx	lr
     20 	.handlerdata
     21 	.fnend
     22 
     23 
     24 @ CHECK:Section {
     25 @ CHECK:  Name: .TEST1
     26 @ CHECK:  SectionData (
     27 @ CHECK:    0000: 1EFF2FE1                             |../.|
     28 @ CHECK:  )
     29 @ CHECK:}
     30 
     31 @ CHECK:Section {
     32 @ CHECK:  Name: .ARM.extab.TEST1
     33 @ CHECK:  SectionData (
     34 @ CHECK:    0000: B0B0B080                             |....|
     35 @ CHECK:  )
     36 @ CHECK:}
     37 
     38 @ CHECK:Section {
     39 @ CHECK:  Name: .ARM.exidx.TEST1
     40 @ CHECK:  SectionData (
     41 @ CHECK:    0000: 00000000 00000000                    |........|
     42 @ CHECK:  )
     43 @ CHECK:}
     44 @-------------------------------------------------------------------------------
     45 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the
     46 @ linker can keep __aeabi_unwind_cpp_pr0.
     47 @-------------------------------------------------------------------------------
     48 @ RELOC: Section {
     49 @ RELOC:  Name: .rel.ARM.exidx.TEST1
     50 @ RELOC:  Relocations [
     51 @ RELOC:    0x0 R_ARM_NONE __aeabi_unwind_cpp_pr0 0x0
     52 @ RELOC:    0x0 R_ARM_PREL31 .TEST1 0x0
     53 @ RELOC:    0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
     54 @ RELOC:  ]
     55 @ RELOC: }
     56 
     57 
     58 
     59 @-------------------------------------------------------------------------------
     60 @ TEST2
     61 @-------------------------------------------------------------------------------
     62 	.section	.TEST2
     63 	.globl	func2
     64 	.align	2
     65 	.type	func2,%function
     66 	.fnstart
     67 func2:
     68 @-------------------------------------------------------------------------------
     69 @ Use a lot of unwind opcdes to get __aeabi_unwind_cpp_pr1.
     70 @-------------------------------------------------------------------------------
     71 	.save	{r4, r5, r6, r7, r8, r9, r10, r11, r12}
     72 	push	{r4, r5, r6, r7, r8, r9, r10, r11, r12}
     73 	pop	{r4, r5, r6, r7, r8, r9, r10, r11, r12}
     74 	.pad	#0x240
     75 	sub	sp, sp, #0x240
     76 	add	sp, sp, #0x240
     77 	bx	lr
     78 	.handlerdata
     79 	.fnend
     80 
     81 
     82 
     83 @ CHECK:Section {
     84 @ CHECK:  Name: .TEST2
     85 @ CHECK:  SectionData (
     86 @ CHECK:    0000: F01F2DE9 F01FBDE8 09DD4DE2 09DD8DE2  |..-.......M.....|
     87 @ CHECK:    0010: 1EFF2FE1                             |../.|
     88 @ CHECK:  )
     89 @ CHECK:}
     90 
     91 @ CHECK:Section {
     92 @ CHECK:  Name: .ARM.extab.TEST2
     93 @ CHECK:  SectionData (
     94 @ CHECK:    0000: 0FB20181 B0B0FF81                    |........|
     95 @ CHECK:  )
     96 @ CHECK:}
     97 
     98 @ CHECK:Section {
     99 @ CHECK:  Name: .ARM.exidx.TEST2
    100 @ CHECK:  SectionData (
    101 @ CHECK:    0000: 00000000 00000000                    |........|
    102 @ CHECK:  )
    103 @ CHECK:}
    104 @-------------------------------------------------------------------------------
    105 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the
    106 @ linker can keep __aeabi_unwind_cpp_pr0.
    107 @-------------------------------------------------------------------------------
    108 @ RELOC: Section {
    109 @ RELOC:  Name: .rel.ARM.exidx.TEST2
    110 @ RELOC:  Relocations [
    111 @ RELOC:    0x0 R_ARM_NONE __aeabi_unwind_cpp_pr1 0x0
    112 @ RELOC:    0x0 R_ARM_PREL31 .TEST2 0x0
    113 @ RELOC:    0x4 R_ARM_PREL31 .ARM.extab.TEST2 0x0
    114 @ RELOC:  ]
    115 @ RELOC: }
    116