// This test checks whether BOLT can correctly handle relocations against weak symbols. // RUN: %clang %cflags -Wl,-z,notext -shared -Wl,-q %s -o %t.so // RUN: llvm-bolt %t.so -o %t.so.bolt // RUN: llvm-nm -n %t.so.bolt > %t.out.txt // RUN: llvm-objdump -z -dj .rodata %t.so.bolt >> %t.out.txt // RUN: FileCheck %s --input-file=%t.out.txt # CHECK: w func_1 # CHECK: {{0+}}[[#%x,ADDR:]] W func_2 # CHECK: {{.*}} <.rodata>: # CHECK-NEXT: {{.*}} .word 0x00000000 # CHECK-NEXT: {{.*}} .word 0x00000000 # CHECK-NEXT: {{.*}} .word 0x{{[0]+}}[[#ADDR]] # CHECK-NEXT: {{.*}} .word 0x00000000 .text .weak func_2 .weak func_1 .global wow .type wow, %function wow: bl func_1 bl func_2 ret .type func_2, %function func_2: ret .section .rodata .LC0: .xword func_1 .LC1: .xword func_2