Bug 259308 - buildworld failure in /usr/src/sbin/gbde: ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libmd.so: undefined reference to _libmd_SHA256_Transform [--no-allow-shlib-undefined]
Summary: buildworld failure in /usr/src/sbin/gbde: ld: error: /usr/obj/usr/src/amd64.a...
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: CURRENT
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-10-20 14:11 UTC by Oleh Vinichenko
Modified: 2023-03-02 17:46 UTC (History)
5 users (show)

See Also:


Attachments
Example src.conf to reproduce this (3.57 KB, text/plain)
2023-02-28 18:44 UTC, Michael Dexter
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oleh Vinichenko 2021-10-20 14:11:12 UTC
this is an attempt to build 14-current from stable/13 host
1. switch to main branch in /usr/src
2. make sure build env is clean and /usr/obj is empty
3. run make -j8 buildworld

Actual result:

===> sbin/gbde (all)
Building /usr/obj/usr/src/amd64.amd64/sbin/gbde/gbde
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 code 1

Stop.
make[4]: stopped in /usr/src/sbin/gbde
.ERROR_TARGET='gbde'
.ERROR_META_FILE='/usr/obj/usr/src/amd64.amd64/sbin/gbde/gbde.meta'
.MAKE.LEVEL='4'
MAKEFILE=''
.MAKE.MODE='meta missing-filemon=yes missing-meta=yes silent=yes verbose'
_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 -O2 -pipe -fno-common -I/usr/src/sys -march=sandybridge -fPIE -mretpoline -fsanitize=address -fPIC -fsanitize-recover=address -fsanitize=undefined -fsanitize-recover=undefined -std=gnu99 -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wchar-subscripts -Wnested-externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign -Wthread-safety -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Qunused-arguments  -pie -Wl,-zretpolineplt -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 gbde gbde.o template.o rijndael-alg-fst.o rijndael-api-fst.o sha512c.o g_bde_lock.o   -lmd  -lutil  -lgeom ;'
.CURDIR='/usr/src/sbin/gbde'
.MAKE='make'
.OBJDIR='/usr/obj/usr/src/amd64.amd64/sbin/gbde'
.TARGETS='all'
DESTDIR='/usr/obj/usr/src/amd64.amd64/tmp'
LD_LIBRARY_PATH=''
MACHINE='amd64'
MACHINE_ARCH='amd64'
MAKEOBJDIRPREFIX=''
MAKESYSPATH='/usr/src/share/mk'
MAKE_VERSION='20210206'
PATH='/usr/obj/usr/src/amd64.amd64/tmp/bin:/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/libexec::/sbin:/bin:/usr/sbin:/usr/bin'
SRCTOP='/usr/src'
OBJTOP='/usr/obj/usr/src/amd64.amd64'
.MAKE.MAKEFILES='/usr/src/share/mk/sys.mk /usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk /etc/src-env.conf /usr/src/share/mk/bsd.mkopt.mk /usr/src/share/mk/src.sys.obj.mk /usr/src/share/mk/auto.obj.mk /usr/src/share/mk/bsd.suffixes.mk /etc/make.conf /usr/src/share/mk/local.sys.mk /usr/src/share/mk/src.sys.mk /etc/src.conf /usr/src/sbin/gbde/Makefile /usr/src/share/mk/bsd.prog.mk /usr/src/share/mk/bsd.init.mk /usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/local.init.mk /usr/src/share/mk/src.init.mk /usr/src/sbin/gbde/../Makefile.inc /usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.own.mk /usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.endian.mk /usr/src/share/mk/bsd.linker.mk /usr/src/share/mk/bsd.sanitizer.mk /usr/src/lib/libclang_rt/compiler-rt-vars.mk /usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk /usr/src/share/mk/bsd.nls.mk /usr/src/share/mk/bsd.confs.mk /usr/src/share/mk/bsd.files.mk /usr/src/share/mk/bsd.dirs.mk /usr/src/share/mk/bsd.incs.mk /usr/src/share/mk/bsd.links.mk /usr/src/share/mk/bsd.man.mk /usr/src/share/mk/bsd.dep.mk /usr/src/share/mk/bsd.clang-analyze.mk /usr/src/share/mk/bsd.obj.mk /usr/src/share/mk/bsd.subdir.mk /usr/src/share/mk/bsd.sys.mk /dev/null'
.PATH='. /usr/src/sbin/gbde /usr/src/sys/geom/bde /usr/src/sys/crypto/rijndael /usr/src/sys/crypto/sha2'
*** Error code 1

Stop.
make[3]: stopped in /usr/src/sbin
*** Error code 1

Stop.
make[2]: stopped in /usr/src
       29.43 real        24.02 user         7.43 sys
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
Comment 1 Michael Dexter 2023-02-28 18:42:48 UTC
I am seeing similar issues when cross building ARM64 on AMD64 or vice-versa, with many WITHOUT_ build options enabled:

ld: error: undefined reference due to --no-allow-shlib-undefined: yp_next
>>> referenced by /usr/obj/usr/src/arm64.aarch64/tmp/lib/libc.so.7
--- all_subdir_usr.sbin ---
--- all_subdir_usr.sbin/syslogd ---
===> usr.sbin/syslogd (all)
--- all_subdir_usr.bin ---
--- all_subdir_usr.bin/login ---
===> usr.bin/login (all)
--- all_subdir_usr.bin/chpass ---

ld: error: undefined reference due to --no-allow-shlib-undefined: yp_match
>>> referenced by /usr/obj/usr/src/arm64.aarch64/tmp/lib/libc.so.7

The failure is on many utilities.

I will attach an example src.conf that reproduces this.
Comment 2 Michael Dexter 2023-02-28 18:44:16 UTC
Created attachment 240487 [details]
Example src.conf to reproduce this

The src.conf works on the same architecture but not cross-built. The host is a default installation with a full toolchain.
Comment 3 John Baldwin freebsd_committer freebsd_triage 2023-03-02 17:46:06 UTC
Probably due to WITHOUT_OPENSSL as that implies no libcrypto.  Not sure how that doesn't break for a amd64 on amd64 build the same way unless it is accidentally finding the host libcrypto.so (which it should not be).