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 -r -t | FileCheck %s
      3 
      4 @ Check whether the section is switched back or not.
      5 
      6 @ The assembler should emit the machine code of "func2" in .text section.
      7 @ It is incorrect if the machine code is emitted in .ARM.exidx or .ARM.extab.
      8 @ Besides, there should be two entries in .ARM.exidx section.
      9 
     10 	.syntax	unified
     11 
     12 	.text
     13 	.globl	func1
     14 	.align	2
     15 	.type	func1,%function
     16 	.fnstart
     17 func1:
     18 	bx	lr
     19 	.fnend
     20 
     21 	.globl	func2
     22 	.align	2
     23 	.type	func2,%function
     24 	.fnstart
     25 func2:
     26 	bx	lr
     27 	.fnend
     28 
     29 
     30 @-------------------------------------------------------------------------------
     31 @ Check the .text section.  There should be two "bx lr" instructions.
     32 @-------------------------------------------------------------------------------
     33 @ CHECK: Sections [
     34 @ CHECK:   Section {
     35 @ CHECK:     Name: .text
     36 @ CHECK:     SectionData (
     37 @ CHECK:       0000: 1EFF2FE1 1EFF2FE1                    |../.../.|
     38 @ CHECK:     )
     39 @ CHECK:   }
     40 
     41 
     42 @-------------------------------------------------------------------------------
     43 @ Check the .ARM.exidx section.
     44 @ There should be two entries (two words per entry.)
     45 @-------------------------------------------------------------------------------
     46 @ CHECK:   Section {
     47 @ CHECK:     Name: .ARM.exidx
     48 @ CHECK:     SectionData (
     49 @-------------------------------------------------------------------------------
     50 @ The first word should be the offset to .text.  The second word should be
     51 @ 0xB0B0B080, which means compact model 0 is used (0x80) and the rest of the
     52 @ word is filled with FINISH opcode (0xB0).
     53 @-------------------------------------------------------------------------------
     54 @ CHECK:       0000: 00000000 B0B0B080 04000000 B0B0B080 |................|
     55 @ CHECK:     )
     56 @ CHECK:   }
     57 @ CHECK: ]
     58 
     59 @-------------------------------------------------------------------------------
     60 @ The first word of each entry should be relocated to .text section.
     61 @-------------------------------------------------------------------------------
     62 @ CHECK:     Relocations [
     63 @ CHECK:       0x0 R_ARM_PREL31 .text 0x0
     64 @ CHECK:       0x0 R_ARM_NONE __aeabi_unwind_cpp_pr0 0x0
     65 @ CHECK:       0x8 R_ARM_PREL31 .text 0x0
     66 @ CHECK:     ]
     67 
     68 
     69 @-------------------------------------------------------------------------------
     70 @ Check the symbols "func1" and "func2".  They should belong to .text section.
     71 @-------------------------------------------------------------------------------
     72 @ CHECK: Symbols [
     73 @ CHECK:   Symbol {
     74 @ CHECK:     Name: func1
     75 @ CHECK:     Section: .text
     76 @ CHECK:   }
     77 @ CHECK:   Symbol {
     78 @ CHECK:     Name: func2
     79 @ CHECK:     Section: .text
     80 @ CHECK:   }
     81 @ CHECK: ]
     82