Message ID | 20220714091524.475739-1-richard.purdie@linuxfoundation.org |
---|---|
State | Accepted, archived |
Commit | 2070bcd10aa3a05c96c8501c6a8c1e129fb1d440 |
Headers | show |
Series | gcc-runtime: Fix build when using gold | expand |
On 7/14/22 5:15 AM, Richard Purdie wrote: > If gold is enabled as the default linker, it errors trying to link > to our dummy library empty file and this turns off things which should > be present in libstdc++. > > For example, _GLIBCXX_HAVE_S_ISREG isn't defined and HAVE_S_ISREG in > libstdc++-v3/config.h isn't set properly. > > Instead of just creating an empty file, create an empty elf binary > instead which addresses the issue. > > Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> > --- > meta/recipes-devtools/gcc/gcc-runtime.inc | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc > index c39a0caf8a7..7e920df2d34 100644 > --- a/meta/recipes-devtools/gcc/gcc-runtime.inc > +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc > @@ -68,7 +68,8 @@ do_configure () { > # libstdc++ isn't built yet so CXX would error not able to find it which breaks stdc++'s configure > # tests. Create a dummy empty lib for the purposes of configure. > mkdir -p ${WORKDIR}/dummylib > - touch ${WORKDIR}/dummylib/libstdc++.so > + touch ${WORKDIR}/dummylib/dummylib.c > + ${CC} ${WORKDIR}/dummylib/dummylib.c -shared -o ${WORKDIR}/dummylib/libstdc++.so you can improve it a little by using a one liner ${CC} -x c /dev/null -shared -o ${WORKDIR}/dummylib/libstdc++.so > for d in libgcc ${RUNTIMETARGET}; do > echo "Configuring $d" > rm -rf ${B}/${TARGET_SYS}/$d/ > > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#168028): https://lists.openembedded.org/g/openembedded-core/message/168028 > Mute This Topic: https://lists.openembedded.org/mt/92375338/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc index c39a0caf8a7..7e920df2d34 100644 --- a/meta/recipes-devtools/gcc/gcc-runtime.inc +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc @@ -68,7 +68,8 @@ do_configure () { # libstdc++ isn't built yet so CXX would error not able to find it which breaks stdc++'s configure # tests. Create a dummy empty lib for the purposes of configure. mkdir -p ${WORKDIR}/dummylib - touch ${WORKDIR}/dummylib/libstdc++.so + touch ${WORKDIR}/dummylib/dummylib.c + ${CC} ${WORKDIR}/dummylib/dummylib.c -shared -o ${WORKDIR}/dummylib/libstdc++.so for d in libgcc ${RUNTIMETARGET}; do echo "Configuring $d" rm -rf ${B}/${TARGET_SYS}/$d/
If gold is enabled as the default linker, it errors trying to link to our dummy library empty file and this turns off things which should be present in libstdc++. For example, _GLIBCXX_HAVE_S_ISREG isn't defined and HAVE_S_ISREG in libstdc++-v3/config.h isn't set properly. Instead of just creating an empty file, create an empty elf binary instead which addresses the issue. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/recipes-devtools/gcc/gcc-runtime.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)