diff --git a/lld/test/ELF/pre_init_fini_array.s b/lld/test/ELF/pre_init_fini_array.s --- a/lld/test/ELF/pre_init_fini_array.s +++ b/lld/test/ELF/pre_init_fini_array.s @@ -4,16 +4,16 @@ // RUN: ld.lld %t2 -o %t2.so -shared -soname=so // RUN: ld.lld %t %t2.so -o %t2 // RUN: llvm-readobj -r --symbols --sections --dynamic-table %t2 | FileCheck %s -// RUN: llvm-objdump -d %t2 | FileCheck --check-prefix=DISASM %s +// RUN: llvm-objdump -d --syms %t2 | FileCheck --check-prefix=DISASM %s .globl _start _start: - call __preinit_array_start - call __preinit_array_end - call __init_array_start - call __init_array_end - call __fini_array_start - call __fini_array_end + call *__preinit_array_start + call *__preinit_array_end + call *__init_array_start + call *__init_array_end + call *__fini_array_start + call *__fini_array_end .section .init_array,"aw",@init_array @@ -33,9 +33,9 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: [[INIT_ADDR:.*]] +// CHECK-NEXT: Address: 0x[[# %X, INIT_ADDR:]] // CHECK-NEXT: Offset: -// CHECK-NEXT: Size: [[INIT_SIZE:.*]] +// CHECK-NEXT: Size: [[# INIT_SIZE:]] // CHECK: Name: .preinit_array @@ -44,9 +44,9 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: [[PREINIT_ADDR:.*]] +// CHECK-NEXT: Address: 0x[[# %X, PREINIT_ADDR:]] // CHECK-NEXT: Offset: -// CHECK-NEXT: Size: [[PREINIT_SIZE:.*]] +// CHECK-NEXT: Size: [[# PREINIT_SIZE:]] // CHECK: Name: .fini_array @@ -55,23 +55,23 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: [[FINI_ADDR:.*]] +// CHECK-NEXT: Address: 0x[[# %X, FINI_ADDR:]] // CHECK-NEXT: Offset: -// CHECK-NEXT: Size: [[FINI_SIZE:.*]] +// CHECK-NEXT: Size: [[# FINI_SIZE:]] // CHECK: DynamicSection -// CHECK: PREINIT_ARRAY [[PREINIT_ADDR]] -// CHECK: PREINIT_ARRAYSZ [[PREINIT_SIZE]] (bytes) -// CHECK: INIT_ARRAY [[INIT_ADDR]] -// CHECK: INIT_ARRAYSZ [[INIT_SIZE]] (bytes) -// CHECK: FINI_ARRAY [[FINI_ADDR]] -// CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes) +// CHECK: PREINIT_ARRAY 0x[[# PREINIT_ADDR]] +// CHECK: PREINIT_ARRAYSZ [[# PREINIT_SIZE]] (bytes) +// CHECK: INIT_ARRAY 0x[[# INIT_ADDR]] +// CHECK: INIT_ARRAYSZ [[# INIT_SIZE]] (bytes) +// CHECK: FINI_ARRAY 0x[[# FINI_ADDR]] +// CHECK: FINI_ARRAYSZ [[# FINI_SIZE]] (bytes) // CHECK: Relocations [ // CHECK-NEXT: ] // CHECK: Name: __fini_array_end -// CHECK-NEXT: Value: +// CHECK-NEXT: Value: 0x[[# %X, FINI_ADDR + FINI_SIZE]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -82,7 +82,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: __fini_array_start -// CHECK-NEXT: Value: [[FINI_ADDR]] +// CHECK-NEXT: Value: 0x[[# FINI_ADDR]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -93,7 +93,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: __init_array_end -// CHECK-NEXT: Value: +// CHECK-NEXT: Value: 0x[[# %X, INIT_ADDR + INIT_SIZE]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -104,7 +104,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: __init_array_start -// CHECK-NEXT: Value: [[INIT_ADDR]] +// CHECK-NEXT: Value: 0x[[# INIT_ADDR]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -115,7 +115,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: __preinit_array_end -// CHECK-NEXT: Value: +// CHECK-NEXT: Value: 0x[[# %X, PREINIT_ADDR + PREINIT_SIZE]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -126,7 +126,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: __preinit_array_start -// CHECK-NEXT: Value: [[PREINIT_ADDR]] +// CHECK-NEXT: Value: 0x[[# PREINIT_ADDR]] // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -136,10 +136,18 @@ // CHECK-NEXT: Section: .preinit_array // CHECK-NEXT: } +// DISASM: SYMBOL TABLE: +// DISASM-DAG: {{0*}}[[# %x, PREINIT_ARRAY_START:]] l .preinit_array {{0+}} .hidden __preinit_array_start +// DISASM-DAG: {{0*}}[[# %x, PREINIT_ARRAY_END:]] l .preinit_array {{0+}} .hidden __preinit_array_end +// DISASM-DAG: {{0*}}[[# %x, INIT_ARRAY_START:]] l .init_array {{0+}} .hidden __init_array_start +// DISASM-DAG: {{0*}}[[# %x, INIT_ARRAY_END:]] l .init_array {{0+}} .hidden __init_array_end +// DISASM-DAG: {{0*}}[[# %x, FINI_ARRAY_START:]] l .fini_array {{0+}} .hidden __fini_array_start +// DISASM-DAG: {{0*}}[[# %x, FINI_ARRAY_END:]] l .fini_array {{0+}} .hidden __fini_array_end + // DISASM: <_start>: -// DISASM-NEXT: callq {{.*}} <__preinit_array_start> -// DISASM-NEXT: callq {{.*}} <__fini_array_start> -// DISASM-NEXT: callq {{.*}} <__init_array_start> -// DISASM-NEXT: callq {{.*}} <__preinit_array_start> -// DISASM-NEXT: callq {{.*}} <__fini_array_start> -// DISASM-NEXT: callq {{.*}} <__fini_array_end> +// DISASM-NEXT: callq *[[# %u, PREINIT_ARRAY_START]] +// DISASM-NEXT: callq *[[# %u, PREINIT_ARRAY_END]] +// DISASM-NEXT: callq *[[# %u, INIT_ARRAY_START]] +// DISASM-NEXT: callq *[[# %u, INIT_ARRAY_END]] +// DISASM-NEXT: callq *[[# %u, FINI_ARRAY_START]] +// DISASM-NEXT: callq *[[# %u, FINI_ARRAY_END]]