1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -h -S -r --symbols - | FileCheck %s 2 3 .text 4 .globl main 5 .align 16, 0x90 6 .type main,@function 7main: # @main 8# %bb.0: 9 subq $8, %rsp 10 movl $.L.str1, %edi 11 callq puts 12 movl $.L.str2, %edi 13 callq puts 14 xorl %eax, %eax 15 addq $8, %rsp 16 call foo@GOTPCREL 17 ja foo 18 jae foo 19 jb foo 20 jbe foo 21 jc foo 22 je foo 23 jz foo 24 jg foo 25 jge foo 26 jl foo 27 jle foo 28 jna foo 29 jnae foo 30 jnb foo 31 jnbe foo 32 jnc foo 33 jne foo 34 jng foo 35 jnge foo 36 jnl foo 37 jnle foo 38 jno foo 39 jnp foo 40 jns foo 41 jnz foo 42 jo foo 43 jp foo 44 jpe foo 45 jpo foo 46 js foo 47 jz foo 48 ret 49.Ltmp0: 50 .size main, .Ltmp0-main 51 52 .type .L.str1,@object # @.str1 53 .section .rodata.str1.1,"aMS",@progbits,1 54.L.str1: 55 .asciz "Hello" 56 .size .L.str1, 6 57 58 .type .L.str2,@object # @.str2 59.L.str2: 60 .asciz "World!" 61 .size .L.str2, 7 62 63 .section .note.GNU-stack,"",@progbits 64 65// CHECK: ElfHeader { 66// CHECK: Class: 64-bit 67// CHECK: DataEncoding: LittleEndian 68// CHECK: FileVersion: 1 69// CHECK: } 70// CHECK: Sections [ 71// CHECK: Section { 72// CHECK: Index: 0 73// CHECK: Name: (0) 74 75// CHECK: Name: .text 76 77// CHECK: Name: .rela.text 78 79// CHECK: Relocations [ 80// CHECK: Section {{.*}} .rela.text { 81// CHECK-NEXT: 0x5 R_X86_64_32 .rodata.str1.1 0x0 82// CHECK-NEXT: 0xA R_X86_64_PLT32 puts 0xFFFFFFFFFFFFFFFC 83// CHECK-NEXT: 0xF R_X86_64_32 .rodata.str1.1 0x6 84// CHECK-NEXT: 0x14 R_X86_64_PLT32 puts 0xFFFFFFFFFFFFFFFC 85// CHECK-NEXT: 0x1F R_X86_64_GOTPCREL foo 0xFFFFFFFFFFFFFFFC 86// CHECK-NEXT: 0x25 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 87// CHECK-NEXT: 0x2B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 88// CHECK-NEXT: 0x31 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 89// CHECK-NEXT: 0x37 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 90// CHECK-NEXT: 0x3D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 91// CHECK-NEXT: 0x43 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 92// CHECK-NEXT: 0x49 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 93// CHECK-NEXT: 0x4F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 94// CHECK-NEXT: 0x55 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 95// CHECK-NEXT: 0x5B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 96// CHECK-NEXT: 0x61 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 97// CHECK-NEXT: 0x67 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 98// CHECK-NEXT: 0x6D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 99// CHECK-NEXT: 0x73 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 100// CHECK-NEXT: 0x79 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 101// CHECK-NEXT: 0x7F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 102// CHECK-NEXT: 0x85 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 103// CHECK-NEXT: 0x8B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 104// CHECK-NEXT: 0x91 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 105// CHECK-NEXT: 0x97 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 106// CHECK-NEXT: 0x9D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 107// CHECK-NEXT: 0xA3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 108// CHECK-NEXT: 0xA9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 109// CHECK-NEXT: 0xAF R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 110// CHECK-NEXT: 0xB5 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 111// CHECK-NEXT: 0xBB R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 112// CHECK-NEXT: 0xC1 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 113// CHECK-NEXT: 0xC7 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 114// CHECK-NEXT: 0xCD R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 115// CHECK-NEXT: 0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 116// CHECK-NEXT: 0xD9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC 117// CHECK-NEXT: } 118// CHECK-NEXT: ] 119 120// CHECK: Symbol { 121// CHECK: Binding: Local 122// CHECK: Type: Section 123 124// CHECK: Symbol { 125// CHECK: Name: main 126// CHECK: Binding: Global 127// CHECK: Type: Function 128// CHECK: } 129 130// CHECK: Symbol { 131// CHECK: Name: puts 132// CHECK: Binding: Global 133// CHECK: Type: None 134// CHECK: } 135