[llvm] c700e03 - [JITLink] Read symbol linkage from the correct field.
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 11 20:05:12 PDT 2020
Author: Lang Hames
Date: 2020-03-11T20:04:54-07:00
New Revision: c700e0317c25f3f397a8ba368752c4960f4ab975
URL: https://github.com/llvm/llvm-project/commit/c700e0317c25f3f397a8ba368752c4960f4ab975
DIFF: https://github.com/llvm/llvm-project/commit/c700e0317c25f3f397a8ba368752c4960f4ab975.diff
LOG: [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.
Added:
llvm/test/ExecutionEngine/JITLink/X86/Inputs/MachO_weak_defs_extra.s
llvm/test/ExecutionEngine/JITLink/X86/MachO_weak_definitions.s
Modified:
llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp
Removed:
################################################################################
diff --git a/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp b/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp
index 89eef5783df9..eea3a72e68be 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 000000000000..b25bb8a3079b
--- /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 000000000000..e6440130e138
--- /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
More information about the llvm-commits
mailing list