// REQUIRES: x86 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/merge.s -o %t2.o // RUN: ld.lld %t.o %t2.o -o %t // RUN: llvm-readelf -S -s -x .mysec %t | FileCheck %s // RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s // CHECK: Name Type Address Off Size ES Flg Lk Inf Al // CHECK: .mysec PROGBITS 0000000000200120 000120 000008 04 AM 0 0 4 // CHECK-DAG: 0000000000200120 0 NOTYPE LOCAL DEFAULT 1 bar // CHECK-DAG: 0000000000200120 0 NOTYPE LOCAL DEFAULT 1 zed // CHECK-DAG: 0000000000200120 0 NOTYPE LOCAL HIDDEN 1 foo // CHECK: Hex dump of section '.mysec': // CHECK-NEXT: 0x00200120 42000000 10000000 .section .mysec,"aM",@progbits,4 .align 4 .global foo .hidden foo .long 0x10 foo: .long 0x42 bar: .long 0x42 zed: .long 0x42 .text .globl _start _start: // DISASM: Disassembly of section .text: // DISASM-EMPTY: // DISASM-NEXT: <_start>: movl .mysec, %eax // addr(0x10) // DISASM-NEXT: movl 0x200124, %eax movl .mysec+7, %eax // addr(0x42) + 3 // DISASM-NEXT: movl 0x200123, %eax movl .mysec+8, %eax // addr(0x42) // DISASM-NEXT: movl 0x200120, %eax movl bar+7, %eax // addr(0x42) + 3 // DISASM-NEXT: movl 0x200127, %eax movl bar+8, %eax // addr(0x42) // DISASM-NEXT: movl 0x200128, %eax movl foo, %eax // addr(0x42) // DISASM-NEXT: movl 0x200120, %eax movl foo+7, %eax // addr(0x42) + 7 // DISASM-NEXT: movl 0x200127, %eax movl foo+8, %eax // addr(0x42) + 8 // DISASM-NEXT: movl 0x200128, %eax // From the other file: movl .mysec, %eax // addr(0x42) // DISASM-NEXT: movl 0x200120, %eax