| # RUN: rm -rf %t && mkdir -p %t |
| # RUN: llvm-mc -triple x86_64-pc-linux-gnu -filetype=obj \ |
| # RUN: -o %t/ELF_weak_defs_extra.o %S/Inputs/ELF_weak_defs_extra.s |
| # RUN: llvm-mc -triple x86_64-pc-linux-gnu -filetype=obj \ |
| # RUN: -o %t/ELF_weak_definitions.o %s |
| # RUN: llvm-jitlink -noexec -check=%s %t/ELF_weak_definitions.o \ |
| # RUN: %t/ELF_weak_defs_extra.o |
| # |
| # Check that objects linked separately agree on the address of weak symbols. |
| # |
| # jitlink-check: *{8}WeakDefAddrInThisFile = *{8}WeakDefAddrInExtraFile |
| |
| .text |
| .file "ELF_weak_definitions.c" |
| .globl main |
| .p2align 4, 0x90 |
| .type main,@function |
| main: |
| movq WeakDef@GOTPCREL(%rip), %rax |
| movl (%rax), %eax |
| retq |
| .Lfunc_end0: |
| .size main, .Lfunc_end0-main |
| |
| .type WeakDef,@object |
| .data |
| .weak WeakDef |
| .p2align 2 |
| WeakDef: |
| .long 1 |
| .size WeakDef, 4 |
| |
| .type WeakDefAddrInThisFile,@object |
| .globl WeakDefAddrInThisFile |
| .p2align 3 |
| WeakDefAddrInThisFile: |
| .quad WeakDef |
| .size WeakDefAddrInThisFile, 8 |
| |
| |
| .type extra_file_anchor,@object |
| .globl extra_file_anchor |
| .p2align 3 |
| extra_file_anchor: |
| .quad WeakDefAddrInExtraFile |
| .size extra_file_anchor, 8 |
| |
| .ident "clang version 10.0.0-4ubuntu1 " |
| .section ".note.GNU-stack","",@progbits |
| .addrsig |
| .addrsig_sym WeakDef |
| .addrsig_sym WeakDefAddrInExtraFile |