Date: Wed, 23 Dec 2020 12:25:09 -0400 From: Mitchell Horne <mhorne@freebsd.org> To: Dennis Clarke <dclarke@blastwave.org> Cc: freebsd-riscv <freebsd-riscv@freebsd.org> Subject: Re: llvm stage in buildworld fails with 368820. Has anyone even tried this ? Message-ID: <CADeAsy2cj4-XZdh-oLbaWaeWZ1hc6QgvtD1Ks-w%2BAS78JV-5vw@mail.gmail.com> In-Reply-To: <3396d30e-a2a1-d585-63f5-83f4e6c2233a@blastwave.org> References: <48461668-e8cd-ea55-273c-9f53cd318a1f@blastwave.org> <3396d30e-a2a1-d585-63f5-83f4e6c2233a@blastwave.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 21, 2020 at 10:38 AM Dennis Clarke via freebsd-riscv <freebsd-riscv@freebsd.org> wrote: > > > Fairly certain that Mr. Horne said to me that no one tries to run a > buildworld within a RISC-V system and it seems cross-compile is what > folks are doing. So I am going to assume this is a LLVM/Clang bug and > not really a bug within the FreeBSD buildworld. At least at this point > I see no alternative than to keep running my FreeBSD 13.0-CURRENT at > rev 367349. Any thoughts ? > Hi Dennis, To be clear, this is not a regression, but your first time attempting such a build within QEMU, is that correct? To update this system, you have the option of cross-building world + kernel on the host, mounting the QEMU disk image, and installing. Roughly, the instructions to do so are: # Crossbuild from host make TARGET=riscv buildworld make TARGET=riscv KERNCONF=QEMU buildkernel # Create md(4) disk from QEMU image file mdconfig -af /path/to/riscv.img gpart show md0 #show the partition table # Mount the ufs root filesystem (exact partition number may vary) mount /dev/md0p3 /mnt # Update world + kernel make TARGET=riscv DESTDIR=/mnt installworld make TARGET=riscv DESTDIR=/mnt installkernel # Unmount and cleanup umount /mnt mdconfig -du 0 The next time you boot riscv.img, it should have an updated world + kernel. It may seem obvious but your QEMU instance should be shut down while you do this. > > . > . > . > --- _bootstrap-tools-usr.bin/clang/llvm-tblgen --- > --- CodeGenSchedule.o --- > c++ -O2 -pipe -fno-common > -I/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvm > -march=rv64imafdc -mabi=lp64d -I/usr/src/head/lib/clang/include > -I/usr/src/head/contrib/llvm-project/llvm/include > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > -DHAVE_VCS_VERSION_INC > -DLLVM_DEFAULT_TARGET_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DLLVM_HOST_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DDEFAULT_SYSROOT=\"/usr/obj/usr/src/head/riscv.riscv64/tmp\" > -DLLVM_TARGET_ENABLE_RISCV > -DLLVM_NATIVE_ASMPARSER=LLVMInitializeRISCVAsmParser > -DLLVM_NATIVE_ASMPRINTER=LLVMInitializeRISCVAsmPrinter > -DLLVM_NATIVE_DISASSEMBLER=LLVMInitializeRISCVDisassembler > -DLLVM_NATIVE_TARGET=LLVMInitializeRISCVTarget > -DLLVM_NATIVE_TARGETINFO=LLVMInitializeRISCVTargetInfo > -DLLVM_NATIVE_TARGETMC=LLVMInitializeRISCVTargetMC -ffunction-sections > -fdata-sections -mno-relax -gline-tables-only -MD > -MF.depend.CodeGenSchedule.o -MTCodeGenSchedule.o > -Wno-format-zero-length -Qunused-arguments > -I/usr/obj/usr/src/head/riscv.riscv64/tmp/legacy/usr/include > -fno-exceptions -fno-rtti -std=c++14 -stdlib=libc++ > -Wno-c++11-extensions -c > /usr/src/head/contrib/llvm-project/llvm/utils/TableGen/CodeGenSchedule.cpp > -o CodeGenSchedule.o > --- _bootstrap-tools-usr.bin/clang/clang-tblgen --- > --- clang-tblgen.full --- > c++ -O2 -pipe -fno-common > -I/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvm > -march=rv64imafdc -mabi=lp64d -I/usr/src/head/lib/clang/include > -I/usr/src/head/contrib/llvm-project/llvm/include > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > -DHAVE_VCS_VERSION_INC > -DLLVM_DEFAULT_TARGET_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DLLVM_HOST_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DDEFAULT_SYSROOT=\"/usr/obj/usr/src/head/riscv.riscv64/tmp\" > -DLLVM_TARGET_ENABLE_RISCV > -DLLVM_NATIVE_ASMPARSER=LLVMInitializeRISCVAsmParser > -DLLVM_NATIVE_ASMPRINTER=LLVMInitializeRISCVAsmPrinter > -DLLVM_NATIVE_DISASSEMBLER=LLVMInitializeRISCVDisassembler > -DLLVM_NATIVE_TARGET=LLVMInitializeRISCVTarget > -DLLVM_NATIVE_TARGETINFO=LLVMInitializeRISCVTargetInfo > -DLLVM_NATIVE_TARGETMC=LLVMInitializeRISCVTargetMC -ffunction-sections > -fdata-sections -mno-relax -gline-tables-only -Wno-format-zero-length > -Qunused-arguments > -I/usr/obj/usr/src/head/riscv.riscv64/tmp/legacy/usr/include > -fno-exceptions -fno-rtti -std=c++14 -stdlib=libc++ > -Wno-c++11-extensions -Wl,--gc-sections -static > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/legacy/usr/lib -o > clang-tblgen.full ASTTableGen.o ClangASTNodesEmitter.o > ClangASTPropertiesEmitter.o ClangAttrEmitter.o > ClangCommentCommandInfoEmitter.o > ClangCommentHTMLNamedCharacterReferenceEmitter.o > ClangCommentHTMLTagsEmitter.o ClangDataCollectorsEmitter.o > ClangDiagnosticsEmitter.o ClangOpcodesEmitter.o > ClangOpenCLBuiltinEmitter.o ClangOptionDocEmitter.o > ClangSACheckersEmitter.o ClangTypeNodesEmitter.o MveEmitter.o > NeonEmitter.o SveEmitter.o TableGen.o > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libexecinfo > -lexecinfo > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libelf -lelf > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/ncurses/ncursesw > -lncursesw > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libthr -lpthread > -legacy > ld: error: undefined symbol: llvm::EnableABIBreakingChecks Seems that LLVM will purposefully cause this link error, according to the following code block I found: // One of these two variables will be referenced by a symbol defined in // llvm-config.h. We provide a link-time (or load time for DSO) failure when // there is a mismatch in the build configuration of the API client and LLVM. #if LLVM_ENABLE_ABI_BREAKING_CHECKS int EnableABIBreakingChecks; #else int DisableABIBreakingChecks; #endif Is this instance a copy of the image I provided you a few weeks back? If so, it's possible that while building it I took a WITHOUT_CLANG=yes shortcut and ended up with a mismatched clang and llvm library. I will see if I can reproduce the same error on a fresh build. If you end up doing the upgrade steps above, please try the native buildworld again and let me know if you see the same error. > >>> referenced by PrettyStackTrace.cpp > >>> PrettyStackTrace.o:(.sdata+0x0) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > >>> referenced by Signals.cpp > >>> Signals.o:(.sdata+0x8) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > >>> referenced by Timer.cpp > >>> Timer.o:(.sdata+0x28) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > c++: error: linker command failed with exit code 1 (use -v to see > invocation) > *** [clang-tblgen.full] Error code 1 > > make[3]: stopped in /usr/src/head/usr.bin/clang/clang-tblgen > 1 error > > make[3]: stopped in /usr/src/head/usr.bin/clang/clang-tblgen > --- _bootstrap-tools-usr.bin/clang/llvm-tblgen --- > real 3234.48 > user 5924.02 > sys 310.00 > ijiraq# > > The timestamp there tells you the sort of time needed within a qemu > instance. I fired off the buildworld thus : > > /usr/bin/time -p /usr/bin/nice -n +15 make -j 2 buildworld > > Concerned that I was tripping over some sort of error caused by > previous attempts I did destroy the zfs filesystem for /usr/src and > did a recreate and fresh checkout. No help there. > > ijiraq# > ijiraq# svnlite info > Path: . > Working Copy Root Path: /usr/src/head > URL: https://svn.freebsd.org/base/head > Relative URL: ^/head > Repository Root: https://svn.freebsd.org/base > Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f > Revision: 368820 > Node Kind: directory > Schedule: normal > Last Changed Author: lwhsu > Last Changed Rev: 368820 > Last Changed Date: 2020-12-20 02:59:44 +0000 (Sun, 20 Dec 2020) > > ijiraq# uname -apKU > FreeBSD ijiraq 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r367349: Wed Nov 4 > 22:48:25 UTC 2020 > root@FreeBSD-head-riscv64-build.jail.ci.FreeBSD.org:/usr/obj/usr/src/riscv.riscv64/sys/QEMU > riscv riscv64 1300125 1300125 > ijiraq# > > > -- > Dennis Clarke > RISC-V/SPARC/PPC/ARM/CISC > UNIX and Linux spoken > GreyBeard and suspenders optional > > > -------- Forwarded Message -------- > Subject: trying to build from head with 368820 and previous revs always fail > Date: Sun, 20 Dec 2020 15:33:12 -0500 > From: Dennis Clarke via freebsd-riscv <freebsd-riscv@freebsd.org> > Reply-To: Dennis Clarke <dclarke@blastwave.org> > To: freebsd-riscv@freebsd.org > > > buildworld seems to always blow up in the same place : > > > . > . > . > /src/head/lib/clang/include > -I/usr/src/head/contrib/llvm-project/llvm/include > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > -DHAVE_VCS_VERSION_INC > -DLLVM_DEFAULT_TARGET_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DLLVM_HOST_TRIPLE=\"riscv64-unknown-freebsd13.0\" > -DDEFAULT_SYSROOT=\"/usr/obj/usr/src/head/riscv.riscv64/tmp\" > -DLLVM_TARGET_ENABLE_RISCV > -DLLVM_NATIVE_ASMPARSER=LLVMInitializeRISCVAsmParser > -DLLVM_NATIVE_ASMPRINTER=LLVMInitializeRISCVAsmPrinter > -DLLVM_NATIVE_DISASSEMBLER=LLVMInitializeRISCVDisassembler > -DLLVM_NATIVE_TARGET=LLVMInitializeRISCVTarget > -DLLVM_NATIVE_TARGETINFO=LLVMInitializeRISCVTargetInfo > -DLLVM_NATIVE_TARGETMC=LLVMInitializeRISCVTargetMC -ffunction-sections > -fdata-sections -mno-relax -gline-tables-only -Wno-format-zero-length > -Qunused-arguments > -I/usr/obj/usr/src/head/riscv.riscv64/tmp/legacy/usr/include > -fno-exceptions -fno-rtti -std=c++14 -stdlib=libc++ > -Wno-c++11-extensions -Wl,--gc-sections -static > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/legacy/usr/lib -o > clang-tblgen.full ASTTableGen.o ClangASTNodesEmitter.o > ClangASTPropertiesEmitter.o ClangAttrEmitter.o > ClangCommentCommandInfoEmitter.o > ClangCommentHTMLNamedCharacterReferenceEmitter.o > ClangCommentHTMLTagsEmitter.o ClangDataCollectorsEmitter.o > ClangDiagnosticsEmitter.o ClangOpcodesEmitter.o > ClangOpenCLBuiltinEmitter.o ClangOptionDocEmitter.o > ClangSACheckersEmitter.o ClangTypeNodesEmitter.o MveEmitter.o > NeonEmitter.o SveEmitter.o TableGen.o > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libexecinfo > -lexecinfo > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libelf -lelf > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/ncurses/ncursesw > -lncursesw > -L/usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/libthr -lpthread > -legacy > ld: error: undefined symbol: llvm::EnableABIBreakingChecks > >>> referenced by PrettyStackTrace.cpp > >>> PrettyStackTrace.o:(.sdata+0x0) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > >>> referenced by Signals.cpp > >>> Signals.o:(.sdata+0x8) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > >>> referenced by Timer.cpp > >>> Timer.o:(.sdata+0x28) in archive > /usr/obj/usr/src/head/riscv.riscv64/tmp/obj-tools/lib/clang/libllvmminimal/libllvmminimal.a > c++: error: linker command failed with exit code 1 (use -v to see > invocation) > *** [clang-tblgen.full] Error code 1 > > make[3]: stopped in /usr/src/head/usr.bin/clang/clang-tblgen > 1 error > > make[3]: stopped in /usr/src/head/usr.bin/clang/clang-tblgen > --- _bootstrap-tools-usr.bin/clang/llvm-tblgen --- > > > any thoughts ? > > this is inside a very stable qemu instance. > > > -- > Dennis Clarke > RISC-V/SPARC/PPC/ARM/CISC > UNIX and Linux spoken > GreyBeard and suspenders optional > _______________________________________________ > freebsd-riscv@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-riscv > To unsubscribe, send any mail to "freebsd-riscv-unsubscribe@freebsd.org" > _______________________________________________ > freebsd-riscv@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-riscv > To unsubscribe, send any mail to "freebsd-riscv-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADeAsy2cj4-XZdh-oLbaWaeWZ1hc6QgvtD1Ks-w%2BAS78JV-5vw>