linker errors with WITH_UBSAN and WITH_ASAN
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 02 Sep 2021 01:35:12 UTC
Hi,
I'm seeing the following linker errors when using WITH_UBSAN (without
WITH_ASAN) and WITH_ASAN (without WITH_UBSAN), having isolated other
variables in src.conf and src-env.conf (attached below):
--- ftpd.full ---
ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libmd.so: undefined
reference to _libmd_SHA256_Transform [--no-allow-shlib-undefined]
cc: error: linker command failed with exit code 1 (use -v to see invocation)
_ERROR_CMD='cc -target x86_64-unknown-freebsd14.0
--sysroot=/usr/obj/usr/src/amd64.amd64/tmp
-B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -march=sandybridge
-mtune=sandybridge -O2 -pipe -fcolor-diagnostics -fno-common
-march=sandybridge -DSETPROCTITLE -DLOGIN_CAP -DVIRTUAL_HOSTING
-I/usr/src/libexec/ftpd -Dmain=ls_main -I/usr/src/bin/ls -DUSE_BLACKLIST
-I/usr/src/contrib/blacklist/include -DINET6 -DUSE_PAM -fPIE
-fsanitize=address -fPIC -fsanitize-recover=address -fsanitize=undefined
-fsanitize-recover=undefined -g -gz=zlib -std=gnu99
-Wno-format-zero-length -fstack-protector-strong -Wsystem-headers
-Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign
-Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable
-Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality
-Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef
-Wno-address-of-packed-member -Wno-switch -Wno-switch-enum
-Wno-knr-promoted-parameter -Qunused-arguments
-L/usr/obj/usr/src/amd64.amd64/lib/libblacklist -pie -fsanitize=address
-fsanitize=undefined
-resource-dir=/usr/obj/usr/src/amd64.amd64/tmp/usr/lib/clang/12.0.1
-Wl,--enable-new-dtags -Wl,-rpath,/usr/lib/ clang/12.0.1/lib/freebsd
-o ftpd.full ftpd.o ftpcmd.o logwtmp.o popen.o ls.o cmp.o print.o util.o
blacklist.o -lcrypt -lxo -lutil -lopie -lmd -lm -lblacklist
-lpam ;'
I believe Kyle (cc'd) may have identified the cause of it ("applying
__attribute__((optnone)) to SHA256_Transform fixes it")
WITH_ASAN (without WITH_UBSAN), fails to link with the following errors:
--- all_subdir_usr.bin ---
--- all_subdir_usr.bin/clang/lldb ---
--- lldb.full ---
ld: error: undefined symbol:
lldb_private::formatters::CMTimeSummaryProvider(lldb_private::ValueObject&,
lldb_private::Stream&, lldb_private::TypeSummaryOptions const&)
>>> referenced by memory:1265
(/usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/memory:1265)
>>> ObjCLanguage.o:(void
std::__1::__call_once_proxy<std::__1::tuple<lldb_private::ObjCLanguage::GetFormatters()::$_0&&>
>(void*)) in archive
/usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::AppleObjCRuntimeV2::Initialize()
>>> referenced by AppleObjCRuntime.cpp:60
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:60)
>>>
AppleObjCRuntime.o:(lldb_private::lldb_initialize_AppleObjCRuntime()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by AppleObjCRuntime.cpp:60
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:60)
>>>
AppleObjCRuntime.o:(lldb_private::AppleObjCRuntime::Initialize()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::AppleObjCRuntimeV1::Initialize()
>>> referenced by AppleObjCRuntime.cpp:61
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:61)
>>>
AppleObjCRuntime.o:(lldb_private::lldb_initialize_AppleObjCRuntime()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by AppleObjCRuntime.cpp:61
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:61)
>>>
AppleObjCRuntime.o:(lldb_private::AppleObjCRuntime::Initialize()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::AppleObjCRuntimeV2::Terminate()
>>> referenced by AppleObjCRuntime.cpp:65
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:65)
>>>
AppleObjCRuntime.o:(lldb_private::lldb_terminate_AppleObjCRuntime()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by AppleObjCRuntime.cpp:65
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:65)
>>>
AppleObjCRuntime.o:(lldb_private::AppleObjCRuntime::Terminate()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::AppleObjCRuntimeV1::Terminate()
>>> referenced by AppleObjCRuntime.cpp:66
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:66)
>>>
AppleObjCRuntime.o:(lldb_private::lldb_terminate_AppleObjCRuntime()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by AppleObjCRuntime.cpp:66
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp:66)
>>>
AppleObjCRuntime.o:(lldb_private::AppleObjCRuntime::Terminate()) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::CFBasicHash::IsValid() const
>>> referenced by NSSet.cpp:570
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:570)
>>>
NSSet.o:(lldb_private::formatters::NSCFSetSyntheticFrontEnd::CalculateNumChildren())
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSDictionary.cpp:712
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:712)
>>>
NSDictionary.o:(lldb_private::formatters::NSCFDictionarySyntheticFrontEnd::CalculateNumChildren())
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::CFBasicHash::GetCount() const
>>> referenced by NSSet.cpp:572
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:572)
>>>
NSSet.o:(lldb_private::formatters::NSCFSetSyntheticFrontEnd::CalculateNumChildren())
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSSet.cpp:315
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:315)
>>> NSSet.o:(bool
lldb_private::formatters::NSSetSummaryProvider<true>(lldb_private::ValueObject&,
lldb_private::Stream&, lldb_private::TypeSummaryOptions const&)) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSSet.cpp:315
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:315)
>>> NSSet.o:(bool
lldb_private::formatters::NSSetSummaryProvider<false>(lldb_private::ValueObject&,
lldb_private::Stream&, lldb_private::TypeSummaryOptions const&)) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced 3 more times
ld: error: undefined symbol: lldb_private::CFBasicHash::Update(unsigned
long, lldb_private::ExecutionContextRef)
>>> referenced by NSSet.cpp:588
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:588)
>>>
NSSet.o:(lldb_private::formatters::NSCFSetSyntheticFrontEnd::Update())
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSSet.cpp:313
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:313)
>>> NSSet.o:(bool
lldb_private::formatters::NSSetSummaryProvider<true>(lldb_private::ValueObject&,
lldb_private::Stream&, lldb_private::TypeSummaryOptions const&)) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSSet.cpp:313
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:313)
>>> NSSet.o:(bool
lldb_private::formatters::NSSetSummaryProvider<false>(lldb_private::ValueObject&,
lldb_private::Stream&, lldb_private::TypeSummaryOptions const&)) in
archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced 3 more times
ld: error: undefined symbol:
lldb_private::CFBasicHash::GetValuePointer() const
>>> referenced by NSSet.cpp:598
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSSet.cpp:598)
>>>
NSSet.o:(lldb_private::formatters::NSCFSetSyntheticFrontEnd::GetChildAtIndex(unsigned
long)) in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
>>> referenced by NSDictionary.cpp:742
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:742)
>>>
NSDictionary.o:(lldb_private::formatters::NSCFDictionarySyntheticFrontEnd::GetChildAtIndex(unsigned
long)) in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol: lldb_private::CFBasicHash::GetKeyPointer()
const
>>> referenced by NSDictionary.cpp:741
(/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp:741)
>>>
NSDictionary.o:(lldb_private::formatters::NSCFDictionarySyntheticFrontEnd::GetChildAtIndex(unsigned
long)) in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol:
lldb_private::lldb_renderscript::fixupX86_64FunctionCalls(llvm::Module&)
>>> referenced by RenderScriptExpressionOpts.cpp:109
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptExpressionOpts.cpp:109)
>>>
RenderScriptExpressionOpts.o:(RenderScriptRuntimeModulePass::runOnModule(llvm::Module&))
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
ld: error: undefined symbol:
lldb_private::lldb_renderscript::fixupX86FunctionCalls(llvm::Module&)
>>> referenced by RenderScriptExpressionOpts.cpp:101
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptExpressionOpts.cpp:101)
>>>
RenderScriptExpressionOpts.o:(RenderScriptRuntimeModulePass::runOnModule(llvm::Module&))
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
--- all_subdir_lib ---
Building
/usr/obj/usr/src/amd64.amd64/lib/libarchive/tests/test_read_format_cpio_bin_gz.o
--- all_subdir_usr.sbin ---
Building /usr/obj/usr/src/amd64.amd64/usr.sbin/mld6query/mld6query.full
--- all_subdir_usr.bin ---
ld: error: undefined symbol:
NewCommandObjectRenderScriptScriptGroup(lldb_private::CommandInterpreter&)
>>> referenced by RenderScriptRuntime.cpp:4926
(/usr/src/contrib/llvm-project/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp:4926)
>>>
RenderScriptRuntime.o:(CommandObjectRenderScriptRuntime::CommandObjectRenderScriptRuntime(lldb_private::CommandInterpreter&))
in archive /usr/obj/usr/src/amd64.amd64/lib/clang/liblldb/liblldb.a
--- all_subdir_usr.sbin ---
Building /usr/obj/usr/src/amd64.amd64/usr.sbin/mld6query/mld6query.debug
=============================================
src.conf:
MALLOC_PRODUCTION=yes
WITHOUT_LLVM_ASSERTIONS=yes
WITH_PIE=yes
WITH_BIND_NOW=yes
WITH_RETPOLINE=yes
WITH_SSP=yes
WITH_ASAN=yes
WITH_UBSAN=yes
WITH_CCACHE_BUILD=yes
CCACHE_PREFIX=/usr/local/bin/distcc
==============================================
src-env.conf:
WITH_META_MODE=yes