On Sun, Oct 1, 2023 at 2:05 PM Alex Roberts <[email protected]> wrote: > > I identified the issue. libvtv's Makefile.in and Makefile.am are > expecting CC_FOR_TARGET to be set > > CXXVTV=$(CC_FOR_TARGET) > CXXLD=$(CC_FOR_TARGET) > > gcc-cross_9.3.inc exports CC_FOR_TARGET, but gcc-runtime_9.3.inc does not. > When libvtv is compiled during gcc-runtime recipe, CXXVTV and CXXLD > are empty and libtool fails with the error that the -D definitions are > unrecognized options. > > Setting CXXVTV=$(CXX) and CXXLD=$(CXX) allowed me to build libvtv and > cross-compile programs with the -fvtable-verify compiler option. >
meta/recipes-devtools/gcc/gcc-configure-common.inc sets CC_FOR_TARGET selectively for cross-compiled gcc recipes so it should be set in do_configure step of gcc-runtime but you can see that gcc-runtime overrides do_configure function in meta/recipes-devtools/gcc/gcc-runtime.inc, perhaps we should replicate the exports in gcc-runtme do_configure as well > On Thu, Sep 28, 2023 at 2:55 PM Alex Roberts via > lists.yoctoproject.org <[email protected]> > wrote: > > > > Today I revisited cloning gcc-sanitizers.inc and gcc-sanitizers_9.3.bb > > in an attempt to make a recipe that configures and builds libvtv. This > > somewhat works, but I get errors with libtool > > > > > > | /bin/sh ./libtool --tag=CXX --mode=compile -DPACKAGE_NAME=\"GNU\ > > Vtable\ Verification\ Runtime\ Library\" -DPACKAGE_TARNAME=\"libvtv\" > > -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"GNU\ Vtable\ > > Verification\ Runtime\ Library\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > > -DPACKAGE_URL=\"http://www.gnu.org/software/libvtv/\" -DSTDC_HEADERS=1 > > -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 > > -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 > > -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > > -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 > > -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DPACKAGE=\"libvtv\" > > -DVERSION=\"1.0\" -DHAVE_SECURE_GETENV=1 -DHAVE___FORTIFY_FAIL=1 > > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE__OBSTACK_BEGIN=1 -I. > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../include > > -D_GNU_SOURCE -Wall -Wextra -fno-exceptions > > -I./../libstdc++-v3/include > > -I./../libstdc++-v3/include/aarch64-oe-linux > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../libstdc++-v3/libsupc++ > > -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end -O2 > > -fomit-frame-pointer -Wa,--noexecstack -fexpensive-optimizations > > -frename-registers -ftree-vectorize -finline-functions > > -finline-limit=64 -Wno-error=maybe-uninitialized > > -Wno-error=unused-result -fvisibility-inlines-hidden -c -o > > vtv_malloc.lo > > ../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/vtv_malloc.cc > > | /bin/sh ./libtool --tag=CXX --mode=compile -DPACKAGE_NAME=\"GNU\ > > Vtable\ Verification\ Runtime\ Library\" -DPACKAGE_TARNAME=\"libvtv\" > > -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"GNU\ Vtable\ > > Verification\ Runtime\ Library\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > > -DPACKAGE_URL=\"http://www.gnu.org/software/libvtv/\" -DSTDC_HEADERS=1 > > -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 > > -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 > > -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > > -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 > > -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DPACKAGE=\"libvtv\" > > -DVERSION=\"1.0\" -DHAVE_SECURE_GETENV=1 -DHAVE___FORTIFY_FAIL=1 > > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE__OBSTACK_BEGIN=1 -I. > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../include > > -D_GNU_SOURCE -Wall -Wextra -fno-exceptions > > -I./../libstdc++-v3/include > > -I./../libstdc++-v3/include/aarch64-oe-linux > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../libstdc++-v3/libsupc++ > > -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end -O2 > > -fomit-frame-pointer -Wa,--noexecstack -fexpensive-optimizations > > -frename-registers -ftree-vectorize -finline-functions > > -finline-limit=64 -Wno-error=maybe-uninitialized > > -Wno-error=unused-result -fvisibility-inlines-hidden -c -o > > vtv_rts.lo > > ../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/vtv_rts.cc > > | /bin/sh ./libtool --tag=CXX --mode=compile -DPACKAGE_NAME=\"GNU\ > > Vtable\ Verification\ Runtime\ Library\" -DPACKAGE_TARNAME=\"libvtv\" > > -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"GNU\ Vtable\ > > Verification\ Runtime\ Library\ 1.0\" -DPACKAGE_BUGREPORT=\"\" > > -DPACKAGE_URL=\"http://www.gnu.org/software/libvtv/\" -DSTDC_HEADERS=1 > > -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 > > -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 > > -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 > > -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 > > -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DPACKAGE=\"libvtv\" > > -DVERSION=\"1.0\" -DHAVE_SECURE_GETENV=1 -DHAVE___FORTIFY_FAIL=1 > > -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE__OBSTACK_BEGIN=1 -I. > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../include > > -D_GNU_SOURCE -Wall -Wextra -fno-exceptions > > -I./../libstdc++-v3/include > > -I./../libstdc++-v3/include/aarch64-oe-linux > > -I../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/../libstdc++-v3/libsupc++ > > -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end -O2 > > -fomit-frame-pointer -Wa,--noexecstack -fexpensive-optimizations > > -frename-registers -ftree-vectorize -finline-functions > > -finline-limit=64 -Wno-error=maybe-uninitialized > > -Wno-error=unused-result -fvisibility-inlines-hidden -c -o > > vtv_utils.lo > > ../../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/libvtv/vtv_utils.cc > > | libtool: compile: unrecognized option `-DPACKAGE_NAME="GNU Vtable > > Verification Runtime Library"' > > | libtool: compile: Try `libtool --help' for more information. > > | libtool: compile: unrecognized option `-DPACKAGE_NAME="GNU Vtable > > Verification Runtime Library"' > > | libtool: compile: Try `libtool --help' for more information. > > | Makefile:607: recipe for target 'vtv_malloc.lo' failed > > | libtool: compile: unrecognized option `-DPACKAGE_NAME="GNU Vtable > > Verification Runtime Library"' > > | make[2]: *** [vtv_malloc.lo] Error 1 > > | libtool: compile: Try `libtool --help' for more information. > > | make[2]: *** Waiting for unfinished jobs.... > > | Makefile:607: recipe for target 'vtv_rts.lo' failed > > | make[2]: *** [vtv_rts.lo] Error 1 > > | Makefile:607: recipe for target 'vtv_utils.lo' failed > > | make[2]: *** [vtv_utils.lo] Error 1 > > > > On Wed, Sep 27, 2023 at 9:16 PM Alex Roberts via > > lists.yoctoproject.org <[email protected]> > > wrote: > > > > > > >If libvtv is a separate library (I've not looked) > > > > > > It is a separate library whose source is inside the gcc source folder. > > > Much of the documentation for enabling vtable verify is for compiling gcc > > > from source outside of Yocto and just references using the flag with > > > ./configure when building gcc from source. > > > > > > > I suspect there are tweaks needed to the gcc-runtime recipe to build it > > > > > > I put “—enable-vtable-verify” in the gcc-common include so it should have > > > been picked up by gcc.bb, gcc-cross and gcc-runtime. I also tried adding > > > to just gcc cross and gcc runtime recipes. I also looked at how the > > > sanitizer libraries were being built with gcc-sanitizers, but was unable > > > to get a working solution. I gave up to focus on other priorities, but > > > figured I’d ask the list in case someone had come across this before. > > > > > > > > > On Wednesday, September 27, 2023, Richard Purdie > > > <[email protected]> wrote: > > >> > > >> On Wed, 2023-09-27 at 09:40 -0500, Alex Roberts wrote: > > >> > Hello All, > > >> > > > >> > I'm having trouble getting gcc-cross-9.3.0 recipe to build libvtv. I > > >> > have added “—enable-vtable-verify” to EXTRA_OECONF via a .bbappend. > > >> > The vtable stubs are added to libstdc++ but libvtv itself is not > > >> > compiled. This causes recipes compiling with -fstandard-verify to fail > > >> > because libvtv doesn’t exist and cannot be linked in. > > >> > > > >> > Looking at the autoconf files and the resulting Makefile, libvtv > > >> > should be getting configured and compiled with the recipe, but I can > > >> > not determine why it is not. > > >> > > > >> > Does anyone have experience enabling vtable-verify to a cross-compiler > > >> > toolchain? > > >> > > >> If libvtv is a separate library (I've not looked), I suspect there are > > >> tweaks needed to the gcc-runtime recipe to build it? > > >> > > >> Cheers, > > >> > > >> Richard > > > > > > > > > > > > > > > > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#61184): https://lists.yoctoproject.org/g/yocto/message/61184 Mute This Topic: https://lists.yoctoproject.org/mt/101618304/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
