2015-03-23 19:38:24 +08:00
|
|
|
# 1. Check entry point address for ARM code - should be even.
|
|
|
|
# RUN: yaml2obj -format=elf -docnum 1 %s > %t-arm.o
|
|
|
|
# RUN: lld -flavor gnu -target arm -m armelf_linux_eabi -Bstatic \
|
|
|
|
# RUN: --noinhibit-exec %t-arm.o -o %t-arm
|
|
|
|
# RUN: llvm-readobj -file-headers %t-arm | FileCheck -check-prefix=ARM-ENTRY %s
|
|
|
|
#
|
|
|
|
# ARM-ENTRY: Entry: 0x400074
|
|
|
|
|
|
|
|
# 2. Check entry point address for Thumb code - should be odd.
|
|
|
|
# RUN: yaml2obj -format=elf -docnum 2 %s > %t-thm.o
|
|
|
|
# RUN: lld -flavor gnu -target arm -m armelf_linux_eabi -Bstatic \
|
|
|
|
# RUN: --noinhibit-exec %t-thm.o -o %t-thm
|
|
|
|
# RUN: llvm-readobj -file-headers %t-thm | FileCheck -check-prefix=THM-ENTRY %s
|
|
|
|
#
|
|
|
|
# THM-ENTRY: Entry: 0x400075
|
|
|
|
|
2015-04-03 15:57:27 +08:00
|
|
|
# 3. Check wrong entry point address align for ARM code.
|
|
|
|
# RUN: yaml2obj -format=elf -docnum 3 %s > %t-arm-wrong.o
|
|
|
|
# RUN: not lld -flavor gnu -target arm -m armelf_linux_eabi -Bstatic \
|
2015-04-03 16:03:23 +08:00
|
|
|
# RUN: --noinhibit-exec %t-arm-wrong.o -o %t-arm-wrong 2> %t-error
|
|
|
|
# FileCheck -check-prefix=ARM-WRONG %s < %t-error
|
2015-04-03 15:57:27 +08:00
|
|
|
#
|
|
|
|
# ARM-WRONG: Two least bits must be zero for ARM entry point
|
|
|
|
|
2015-03-23 19:38:24 +08:00
|
|
|
# arm.o
|
|
|
|
---
|
|
|
|
FileHeader:
|
|
|
|
Class: ELFCLASS32
|
|
|
|
Data: ELFDATA2LSB
|
|
|
|
Type: ET_REL
|
|
|
|
Machine: EM_ARM
|
|
|
|
Flags: [ EF_ARM_EABI_VER5 ]
|
|
|
|
Sections:
|
|
|
|
- Name: .text
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
|
|
AddressAlign: 0x0000000000000004
|
|
|
|
Content: 04B02DE500B08DE20030A0E30300A0E100D04BE204B09DE41EFF2FE1
|
|
|
|
- Name: .data
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Content: ''
|
|
|
|
- Name: .bss
|
|
|
|
Type: SHT_NOBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Symbols:
|
|
|
|
Global:
|
|
|
|
- Name: _start
|
|
|
|
Type: STT_FUNC
|
|
|
|
Section: .text
|
|
|
|
|
|
|
|
# thm.o
|
|
|
|
---
|
|
|
|
FileHeader:
|
|
|
|
Class: ELFCLASS32
|
|
|
|
Data: ELFDATA2LSB
|
|
|
|
Type: ET_REL
|
|
|
|
Machine: EM_ARM
|
|
|
|
Flags: [ EF_ARM_EABI_VER5 ]
|
|
|
|
Sections:
|
|
|
|
- Name: .text
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
|
|
AddressAlign: 0x0000000000000004
|
|
|
|
Content: 80B400AF00231846BD465DF8047B7047
|
|
|
|
- Name: .data
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Content: ''
|
|
|
|
- Name: .bss
|
|
|
|
Type: SHT_NOBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Symbols:
|
|
|
|
Global:
|
|
|
|
- Name: _start
|
|
|
|
Type: STT_FUNC
|
|
|
|
Section: .text
|
|
|
|
Value: 0x0000000000000001
|
2015-04-03 15:57:27 +08:00
|
|
|
|
|
|
|
# arm-wrong.o
|
|
|
|
---
|
|
|
|
FileHeader:
|
|
|
|
Class: ELFCLASS32
|
|
|
|
Data: ELFDATA2LSB
|
|
|
|
Type: ET_REL
|
|
|
|
Machine: EM_ARM
|
|
|
|
Flags: [ EF_ARM_EABI_VER5 ]
|
|
|
|
Sections:
|
|
|
|
- Name: .text
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
|
|
AddressAlign: 0x0000000000000006
|
|
|
|
Content: 04B02DE500B08DE20030A0E30300A0E100D04BE204B09DE41EFF2FE1
|
|
|
|
- Name: .data
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Content: ''
|
|
|
|
- Name: .bss
|
|
|
|
Type: SHT_NOBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
AddressAlign: 0x0000000000000001
|
|
|
|
Symbols:
|
|
|
|
Global:
|
|
|
|
- Name: _start
|
|
|
|
Type: STT_FUNC
|
|
|
|
Section: .text
|
|
|
|
Value: 0x0000000000000002
|
2015-03-23 19:38:24 +08:00
|
|
|
...
|