I was trying to do a fresh build of master with the address sanitizer
enabled in Clang, and I am receiving a strange linker error, and was
curious if anyone else had any thoughts on it.

When it tries to link the eeschema executable, it throws an error
complaining about a missing Kiface symbol:

Scanning dependencies of target eeschema
[ 63%] Building CXX object
eeschema/CMakeFiles/eeschema.dir/__/common/single_top.cpp.o
[ 63%] Building CXX object
eeschema/CMakeFiles/eeschema.dir/__/common/pgm_base.cpp.o
[ 63%] Linking CXX executable eeschema
ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:538
(/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:538)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::config()) in
archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:546
(/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:546)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::sys_search()) in
archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:552
(/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:552)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::help_name()) in
archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:568
(/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:568)
>>>
eda_base_frame.cpp.o:(EDA_BASE_FRAME::UpdateFileHistory(wxString const&,
wxFileHistory*)) in archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:580
(/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:580)
>>>
eda_base_frame.cpp.o:(EDA_BASE_FRAME::GetFileFromHistory(int, wxString
const&, wxFileHistory*)) in archive ../common/libcommon.a

That symbol is defined in the _eeschema.kiface module though.

The verbose linker message is attached. Does anyone have any thoughts as to
why it seems the executable is unable to find the symbol when I enable the
address sanitizer?

Thanks,
-Ian
[imcinerney@kicad-wx 
~/Documents/dev/kicad/code/master/build/widgets31/eeschema]$ "/usr/bin/ld.lld" 
-export-dynamic --hash-style=gnu --no-add-needed --build-id --eh-frame-hdr -m 
elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o 
eeschema /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crt1.o 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crti.o 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/crtbegin.o -L/usr/local/lib 
-L/usr/local/lib -L/usr/bin/../lib/gcc/x86_64-redhat-linux/9 
-L/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64 
-L/usr/bin/../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 
-L/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../.. -L/usr/bin/../lib -L/lib 
-L/usr/lib --whole-archive 
/usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan-x86_64.a --no-whole-archive 
--dynamic-list=/usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan-x86_64.a.syms 
--whole-archive /usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan_cxx-x86_64.a 
--no-whole-archive 
--dynamic-list=/usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan_cxx-x86_64.a.syms
 CMakeFiles/eeschema.dir/__/common/single_top.cpp.o 
CMakeFiles/eeschema.dir/__/common/pgm_base.cpp.o -rpath /usr/local/lib: 
../common/libgal.a ../common/libcommon.a -lwx_gtk3u_gl-3.1 -lwx_gtk3u_aui-3.1 
-lwx_gtk3u_html-3.1 -lwx_gtk3u_core-3.1 -lwx_baseu_net-3.1 -lwx_baseu-3.1 
-lwx_baseu_xml-3.1 -lwx_gtk3u_stc-3.1 ../common/libgal.a -lGLEW -lcairo 
-lpixman-1 -lGL -lGLU ../polygon/libpolygon.a ../bitmaps_png/libbitmaps.a 
-lcurl -lssl -lcrypto -lwx_gtk3u_gl-3.1 -lwx_gtk3u_aui-3.1 -lwx_gtk3u_html-3.1 
-lwx_gtk3u_core-3.1 -lwx_baseu_net-3.1 -lwx_baseu-3.1 -lwx_baseu_xml-3.1 
-lwx_gtk3u_stc-3.1 -lstdc++ -lm --no-as-needed -lpthread -lrt -lm -ldl -lgcc_s 
-lgcc -lpthread -lc -lgcc_s -lgcc 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/crtend.o 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crtn.o --verbose
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crt1.o
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crti.o
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/crtbegin.o
ld.lld: /usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan-x86_64.a
ld.lld: /usr/lib64/clang/8.0.0/lib/linux/libclang_rt.asan_cxx-x86_64.a
ld.lld: CMakeFiles/eeschema.dir/__/common/single_top.cpp.o
ld.lld: CMakeFiles/eeschema.dir/__/common/pgm_base.cpp.o
ld.lld: ../common/libgal.a
ld.lld: ../common/libcommon.a
ld.lld: /usr/local/lib/libwx_gtk3u_gl-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_aui-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_html-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_core-3.1.so
ld.lld: /usr/local/lib/libwx_baseu_net-3.1.so
ld.lld: /usr/local/lib/libwx_baseu-3.1.so
ld.lld: /usr/local/lib/libwx_baseu_xml-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_stc-3.1.so
ld.lld: ../common/libgal.a
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libGLEW.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libcairo.so
ld.lld: 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libpixman-1.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libGL.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libGLU.so
ld.lld: ../polygon/libpolygon.a
ld.lld: ../bitmaps_png/libbitmaps.a
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libcurl.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libssl.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libcrypto.so
ld.lld: /usr/local/lib/libwx_gtk3u_gl-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_aui-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_html-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_core-3.1.so
ld.lld: /usr/local/lib/libwx_baseu_net-3.1.so
ld.lld: /usr/local/lib/libwx_baseu-3.1.so
ld.lld: /usr/local/lib/libwx_baseu_xml-3.1.so
ld.lld: /usr/local/lib/libwx_gtk3u_stc-3.1.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libstdc++.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libm.so
ld.lld: /lib64/libm.so.6
ld.lld: /usr/lib64/libmvec_nonshared.a
ld.lld: /lib64/libmvec.so.1
ld.lld: 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libpthread.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/librt.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libm.so
ld.lld: /lib64/libm.so.6
ld.lld: /usr/lib64/libmvec_nonshared.a
ld.lld: /lib64/libmvec.so.1
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libdl.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc_s.so
ld.lld: /lib64/libgcc_s.so.1
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc.a
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc.a
ld.lld: 
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libpthread.so
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libc.so
ld.lld: /lib64/libc.so.6
ld.lld: /usr/lib64/libc_nonshared.a
ld.lld: /lib64/ld-linux-x86-64.so.2
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc_s.so
ld.lld: /lib64/libgcc_s.so.1
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc.a
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/libgcc.a
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/crtend.o
ld.lld: /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../lib64/crtn.o
ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:538 
>>> (/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:538)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::config()) in archive 
>>> ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:546 
>>> (/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:546)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::sys_search()) in 
>>> archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:552 
>>> (/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:552)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::help_name()) in archive 
>>> ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:568 
>>> (/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:568)
>>>               
>>> eda_base_frame.cpp.o:(EDA_BASE_FRAME::UpdateFileHistory(wxString const&, 
>>> wxFileHistory*)) in archive ../common/libcommon.a

ld.lld: error: undefined symbol: Kiface()
>>> referenced by eda_base_frame.cpp:580 
>>> (/home/imcinerney/Documents/dev/kicad/code/master/common/eda_base_frame.cpp:580)
>>>               eda_base_frame.cpp.o:(EDA_BASE_FRAME::GetFileFromHistory(int, 
>>> wxString const&, wxFileHistory*)) in archive ../common/libcommon.a
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to