Re: problem linking kernel
- Reply: Wojciech Puchar : "Re: problem linking kernel "
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 29 Oct 2023 17:11:15 UTC
From: Wojciech Puchar <wojtek_at_puchar.net> wrote on Date: Sun, 29 Oct 2023 12:16:31 UTC : > reason found. > > > /usr/local/bin/ld which is part of gcc from ports takes precedence I've run into the FreeBSD system toolchain using a linker that was below /usr/local/ multiple times before. I try to avoid building ports that results in the conflict. But, in my view, the FreeBSD toolchain should require an explicit command line option to be willing to use part of a toolchain that is someplace under /usr/local/ instead of using its own toolchain materials for everything. See, for example, my report from 2022-Sept: https://lists.freebsd.org/archives/freebsd-toolchain/2022-September/000898.html where, in an aarch64 context, it used: /usr/local/bin/aarch64-unknown-freebsd14.0-ld instead of: /sur/bin/ld or: /usr/bin/dl.lld It did not do this if -fuse-ld=lld was explicitly indicated on the command line: one way to avoid the problem. What is used can be seen in the extra output from use of: clang++ -v Back then the example was: clang++ -v -std=c++20 -Wpedantic -Wall -Wextra -I../other_src_used -pedantic -g3 -O3 -mcpu=cortex-a72 -flto=thin -pthread -flto=thin ../objs/cpp_thousandslocale-clang++_14_O3lto-libc++.o ../objs/cpp_clockinfo-clang++_14_O3lto-libc++.o -o ../cpp_clockinfo_main-HoneyComb-65536MiB-threads_16-LP64-FreeBSD_main_n256584_5bc926af9fd1_64bit-clang++_14_O3lto-libc++ -DCPPCLOCKINFO_VERS='"acpphint_0.1.24"' ../other_src_used/cpp_clockinfo_main.cpp FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c) Target: aarch64-unknown-freebsd14.0 Thread model: posix InstalledDir: /usr/bin "/usr/bin/clang++" -cc1 -triple aarch64-unknown-freebsd14.0 -emit-llvm-bc -flto=thin -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name cpp_clockinfo_main.cpp -mrelocation-model static -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu cortex-a72 -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -target-feature +crc -target-feature +crypto -target-feature +sha2 -target-feature +aes -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=gdb -v -fcoverage-compilation-dir=/root/acpphint/acpphint_src -resource-dir /usr/lib/clang/14.0.5 -I ../other_src_used -D "CPPCLOCKINFO_VERS=\"acpphint_0.1.24\"" -internal-isystem /usr/include/c++/v1 -O3 -Wpedantic -Wall -Wextra -pedantic -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=/root/acpphint/acpphint_src -ferror-limit 19 -pthread -fno-signed-char -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/cpp_clockinfo_main-56273f.o -x c++ ../other_src_used/cpp_clockinfo_main.cpp clang -cc1 version 14.0.5 based upon LLVM 14.0.5 default target aarch64-unknown-freebsd14.0 #include "..." search starts here: #include <...> search starts here: ../other_src_used /usr/include/c++/v1 /usr/lib/clang/14.0.5/include /usr/include End of search list. "/usr/local/bin/aarch64-unknown-freebsd14.0-ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 --enable-new-dtags -o ../cpp_clockinfo_main-HoneyComb-65536MiB-threads_16-LP64-FreeBSD_main_n256584_5bc926af9fd1_64bit-clang++_14_O3lto-libc++ /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib -plugin /usr/bin/../lib/LLVMgold.so -plugin-opt=mcpu=cortex-a72 -plugin-opt=O3 -plugin-opt=thinlto ../objs/cpp_thousandslocale-clang++_14_O3lto-libc++.o ../objs/cpp_clockinfo-clang++_14_O3lto-libc++.o /tmp/cpp_clockinfo_main-56273f.o -lc++ -lm -lgcc --as-needed -lgcc_s --no-as-needed -lpthread -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtend.o /usr/lib/crtn.o /usr/local/bin/aarch64-unknown-freebsd14.0-ld: /usr/bin/../lib/LLVMgold.so: error loading plugin: Cannot open "/usr/bin/../lib/LLVMgold.so" clang++: error: linker command failed with exit code 1 (use -v to see invocation) *** Error code 1 Note the: "/usr/local/bin/aarch64-unknown-freebsd14.0-ld" after the search list. It looks like I did not report my PATH back then. But finding and using aarch64-unknown-freebsd14.0-ld is not going to be found under any system path for the system toolchain. So my view is that the name should not be looked for by the system toolchain --or should be last if the normal system names are not found. FYI: # echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/home/root/bin and it is unlikely to have had any changes since back then. > PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games make > > and all builds > > On Sun, 29 Oct 2023, Dimitry Andric wrote: > > > On 29 Oct 2023, at 11:34, Wojciech Puchar <wojtek@puchar.net> wrote: > >> > >> i get this linking my custom kernel. No errors until link > >> > >> linking kernel > >> ld: dynamic STT_GNU_IFUNC symbol `rdtsc_ordered' with pointer equality in `cpu_machdep.o' can not be used when making an executable; recompile with -fPIE and relink with -pie > >> > >> > >> kernel config attached, latest FreeBSD-13 downloaded today. > >> > >> can you help?<conf.txt> > > > > I just tried it here, and it works fine: > > > > ... > > linking kernel > > objcopy --strip-debug kernel > > text data bss dec hex filename > > 7925073 779012 3411328 12115413 0xb8ddd5 kernel > > -------------------------------------------------------------- > >>>> Kernel build for PUCHAR completed on Sun Oct 29 12:06:08 UTC 2023 > > -------------------------------------------------------------- > >>>> Kernel(s) PUCHAR built in 28 seconds, ncpu: 32, make -j32 > > -------------------------------------------------------------- > > === Mark Millard marklmi at yahoo.com