Re: Buildworld failing during llvm

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 18 Feb 2018 18:17:10 +0100
On 18 Feb 2018, at 02:52, Ben Woods <woodsb02_at_gmail.com> wrote:
> 
> My attempts to build FreeBSD 12-current have been failing as of yesterday
> with the error below. This problem persists with current at the time of
> writing this email (r329497).
> 
> Given llvm was updated to 6.0 around that time, I suspect it is related:
> https://svnweb.freebsd.org/base?view=revision&revision=329410
> 
> 
> --- clang.full ---
> c++ -O2 -pipe
> -I/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/clang/libclang
> -I/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/clang/libllvm
> -I/usr/src/contrib/llvm/tools/clang/include -I/usr/src/lib/clang/include
> -I/usr/src/contrib/llvm/include -DLLVM_BUILD_GLOBAL_ISEL
> -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
> -DLLVM_DEFAULT_TARGET_TRIPLE=\"x86_64-unknown-freebsd12.0\"
> -DLLVM_HOST_TRIPLE=\"x86_64-unknown-freebsd12.0\"
> -DDEFAULT_SYSROOT=\"/usr/obj/usr/src/amd64.amd64/tmp\" -ffunction-sections
> -fdata-sections -g -O0 -Qunused-arguments
> -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -std=c++11
> -fno-exceptions -fno-rtti -g -O0 -stdlib=libc++ -Wno-c++11-extensions
> -Wl,--gc-sections -static -L/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib
> -o clang.full  cc1_main.o cc1as_main.o driver.o
> /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/clang/libclang/libclang.a
> /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/clang/libllvm/libllvm.a
> -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libz -lz
> -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/ncurses/ncursesw
> -lncursesw -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libthr
> -lpthread -legacy
> /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/clang/libllvm/libllvm.a:
> could not read symbols: Malformed archive

Hi Ben,

This is most likely because you are setting CFLAGS to "-g -O0", which
causes libllvm.a and libclang.a to become too big (>2GiB) for ar to
handle.  Then the linker finds the archive malformed.

John Baldwin added some special handling for libraries under lib/clang,
so they emit smaller debug information, so just leave out -g from your
CFLAGS, buildworld will automatically take care of applying the right
-g flags in all the various places.

-Dimitry


Received on Sun Feb 18 2018 - 16:17:19 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:15 UTC