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