From: Lang Hames Date: Thu, 12 Mar 2020 01:44:58 +0000 (-0700) Subject: [JITLink] Read symbol linkage from the correct field. X-Git-Tag: llvmorg-12-init~12348 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c700e0317c25f3f397a8ba368752c4960f4ab975;p=platform%2Fupstream%2Fllvm.git [JITLink] Read symbol linkage from the correct field. MachO symbol linkage is described by the desc field of the nlist entry, not the type field. --- diff --git a/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp b/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp index 89eef578..eea3a72 100644 --- a/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp @@ -274,7 +274,7 @@ Error MachOLinkGraphBuilder::createNormalizedSymbols() { IndexToSymbol[SymbolIndex] = &createNormalizedSymbol(*Name, Value, Type, Sect, Desc, - getLinkage(Type), getScope(*Name, Type)); + getLinkage(Desc), getScope(*Name, Type)); } return Error::success(); diff --git a/llvm/test/ExecutionEngine/JITLink/X86/Inputs/MachO_weak_defs_extra.s b/llvm/test/ExecutionEngine/JITLink/X86/Inputs/MachO_weak_defs_extra.s new file mode 100644 index 0000000..b25bb8a --- /dev/null +++ b/llvm/test/ExecutionEngine/JITLink/X86/Inputs/MachO_weak_defs_extra.s @@ -0,0 +1,19 @@ +# Supplies a weak def, WeakDef, and a pointer holding its address, +# WeakDefAddrInExtraFile. + + .section __TEXT,__text,regular,pure_instructions + .build_version macos, 10, 14 sdk_version 10, 14 + .section __DATA,__data + .globl WeakDef + .weak_definition WeakDef + .p2align 2 +WeakDef: + .long 2 + + .globl WeakDefAddrInExtraFile + .p2align 3 +WeakDefAddrInExtraFile: + .quad WeakDef + + +.subsections_via_symbols diff --git a/llvm/test/ExecutionEngine/JITLink/X86/MachO_weak_definitions.s b/llvm/test/ExecutionEngine/JITLink/X86/MachO_weak_definitions.s new file mode 100644 index 0000000..e644013 --- /dev/null +++ b/llvm/test/ExecutionEngine/JITLink/X86/MachO_weak_definitions.s @@ -0,0 +1,39 @@ +# RUN: rm -rf %t && mkdir -p %t +# RUN: llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj \ +# RUN: -o %t/MachO_weak_defs_extra.o %S/Inputs/MachO_weak_defs_extra.s +# RUN: llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj \ +# RUN: -o %t/MachO_weak_definitions.o %s +# RUN: llvm-jitlink -noexec -check=%s %t/MachO_weak_definitions.o \ +# RUN: %t/MachO_weak_defs_extra.o +# +# Check that objects linked separately agree on the address of weak symbols. +# +# jitlink-check: *{8}WeakDefAddrInThisFile = *{8}WeakDefAddrInExtraFile + + .section __TEXT,__text,regular,pure_instructions + .build_version macos, 10, 14 sdk_version 10, 14 + .globl _main + .p2align 4, 0x90 +_main: + retq + + .section __DATA,__data + .globl WeakDef + .weak_definition WeakDef + .p2align 2 +WeakDef: + .long 1 + + .globl WeakDefAddrInThisFile + .p2align 3 +WeakDefAddrInThisFile: + .quad WeakDef + +# Take the address of WeakDefAddrInExtraFile to force its materialization + .globl extra_file_anchor + .p2align 3 +extra_file_anchor: + .quad WeakDefAddrInExtraFile + + +.subsections_via_symbols