| // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -h -s -r -t | FileCheck %s |
| |
| .text |
| .globl main |
| .align 16, 0x90 |
| .type main,@function |
| main: # @main |
| # %bb.0: |
| subq $8, %rsp |
| movl $.L.str1, %edi |
| callq puts |
| movl $.L.str2, %edi |
| callq puts |
| xorl %eax, %eax |
| addq $8, %rsp |
| call foo@GOTPCREL |
| ret |
| .Ltmp0: |
| .size main, .Ltmp0-main |
| |
| .type .L.str1,@object # @.str1 |
| .section .rodata.str1.1,"aMS",@progbits,1 |
| .L.str1: |
| .asciz "Hello" |
| .size .L.str1, 6 |
| |
| .type .L.str2,@object # @.str2 |
| .L.str2: |
| .asciz "World!" |
| .size .L.str2, 7 |
| |
| .section .note.GNU-stack,"",@progbits |
| |
| // CHECK: ElfHeader { |
| // CHECK: Class: 64-bit |
| // CHECK: DataEncoding: LittleEndian |
| // CHECK: FileVersion: 1 |
| // CHECK: } |
| // CHECK: Sections [ |
| // CHECK: Section { |
| // CHECK: Index: 0 |
| // CHECK: Name: (0) |
| |
| // CHECK: Name: .text |
| |
| // CHECK: Name: .rela.text |
| |
| // CHECK: Relocations [ |
| // CHECK: Section {{.*}} .rela.text { |
| // CHECK-NEXT: 0x5 R_X86_64_32 .rodata.str1.1 0x0 |
| // CHECK-NEXT: 0xA R_X86_64_PLT32 puts 0xFFFFFFFFFFFFFFFC |
| // CHECK-NEXT: 0xF R_X86_64_32 .rodata.str1.1 0x6 |
| // CHECK-NEXT: 0x14 R_X86_64_PLT32 puts 0xFFFFFFFFFFFFFFFC |
| // CHECK-NEXT: 0x1F R_X86_64_GOTPCREL foo 0xFFFFFFFFFFFFFFFC |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| |
| // CHECK: Symbol { |
| // CHECK: Binding: Local |
| // CHECK: Type: Section |
| |
| // CHECK: Symbol { |
| // CHECK: Name: main |
| // CHECK: Binding: Global |
| // CHECK: Type: Function |
| // CHECK: } |
| |
| // CHECK: Symbol { |
| // CHECK: Name: puts |
| // CHECK: Binding: Global |
| // CHECK: Type: None |
| // CHECK: } |