2019-05-01 17:28:24 +08:00
|
|
|
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -h -S -r --symbols | FileCheck %s
|
2011-01-04 07:47:14 +08:00
|
|
|
|
|
|
|
.text
|
|
|
|
.globl main
|
|
|
|
.align 16, 0x90
|
|
|
|
.type main,@function
|
|
|
|
main: # @main
|
2017-12-05 01:18:51 +08:00
|
|
|
# %bb.0:
|
2011-01-04 07:47:14 +08:00
|
|
|
subq $8, %rsp
|
|
|
|
movl $.L.str1, %edi
|
|
|
|
callq puts
|
|
|
|
movl $.L.str2, %edi
|
|
|
|
callq puts
|
|
|
|
xorl %eax, %eax
|
|
|
|
addq $8, %rsp
|
2018-02-20 18:17:57 +08:00
|
|
|
call foo@GOTPCREL
|
2020-01-16 18:51:01 +08:00
|
|
|
ja foo
|
|
|
|
jae foo
|
|
|
|
jb foo
|
|
|
|
jbe foo
|
|
|
|
jc foo
|
|
|
|
je foo
|
|
|
|
jz foo
|
|
|
|
jg foo
|
|
|
|
jge foo
|
|
|
|
jl foo
|
|
|
|
jle foo
|
|
|
|
jna foo
|
|
|
|
jnae foo
|
|
|
|
jnb foo
|
|
|
|
jnbe foo
|
|
|
|
jnc foo
|
|
|
|
jne foo
|
|
|
|
jng foo
|
|
|
|
jnge foo
|
|
|
|
jnl foo
|
|
|
|
jnle foo
|
|
|
|
jno foo
|
|
|
|
jnp foo
|
|
|
|
jns foo
|
|
|
|
jnz foo
|
|
|
|
jo foo
|
|
|
|
jp foo
|
|
|
|
jpe foo
|
|
|
|
jpo foo
|
|
|
|
js foo
|
|
|
|
jz foo
|
2011-01-04 07:47:14 +08:00
|
|
|
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
|
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: ElfHeader {
|
|
|
|
// CHECK: Class: 64-bit
|
|
|
|
// CHECK: DataEncoding: LittleEndian
|
|
|
|
// CHECK: FileVersion: 1
|
|
|
|
// CHECK: }
|
|
|
|
// CHECK: Sections [
|
|
|
|
// CHECK: Section {
|
|
|
|
// CHECK: Index: 0
|
|
|
|
// CHECK: Name: (0)
|
2011-01-04 07:47:14 +08:00
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: Name: .text
|
2011-01-04 07:47:14 +08:00
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: Name: .rela.text
|
2011-01-04 07:47:14 +08:00
|
|
|
|
2018-02-20 18:17:57 +08:00
|
|
|
// 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
|
2020-01-16 18:51:01 +08:00
|
|
|
// CHECK-NEXT: 0x25 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x2B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x31 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x37 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x3D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x43 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x49 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x4F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x55 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x5B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x61 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x67 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x6D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x73 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x79 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x7F R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x85 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x8B R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x91 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x97 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0x9D R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xA3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xA9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xAF R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xB5 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xBB R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xC1 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xC7 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xCD R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
|
|
|
// CHECK-NEXT: 0xD9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
2018-02-20 18:17:57 +08:00
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK-NEXT: ]
|
2011-03-21 02:44:20 +08:00
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: Symbol {
|
|
|
|
// CHECK: Binding: Local
|
|
|
|
// CHECK: Type: Section
|
2011-03-21 02:44:20 +08:00
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: Symbol {
|
|
|
|
// CHECK: Name: main
|
|
|
|
// CHECK: Binding: Global
|
|
|
|
// CHECK: Type: Function
|
|
|
|
// CHECK: }
|
2011-03-21 02:44:20 +08:00
|
|
|
|
2013-04-12 12:06:46 +08:00
|
|
|
// CHECK: Symbol {
|
|
|
|
// CHECK: Name: puts
|
|
|
|
// CHECK: Binding: Global
|
|
|
|
// CHECK: Type: None
|
|
|
|
// CHECK: }
|