On Thu, Feb 24, 2022 at 11:45:27PM +0000, Stuart Henderson wrote:
> Looks like there is some issue linking sdl2-ttf with new Mesa (new ports
> bulk on i386); not sure if it will affect other ports too or if it's
> just this.
> 
> (for once ld.lld actually managed to complain about an undefined
> reference, we don't usually find these until it results in a runtime
> failure)
> 
> Anyone have ideas?
> 
> /usr/bin/libtool  --tag=CC    --mode=link cc  -O2 -pipe 
> -I/usr/X11R6/include/freetype2 -I/usr/local/include/SDL2 -I/usr/X11R6/include 
> -D_REENTRANT  -I/usr/X11R6/include -DHAVE_OPENGL   -L/usr/local/lib -o glfont 
> glfont.o libSDL2_ttf.la  -L/usr/X11R6/lib -lGL -lm -L/usr/X11R6/lib 
> -lfreetype -lz -L/usr/local/lib -L/usr/X11R6/lib -lSDL2
> libtool: link: cc -o .libs/glfont -pthread -O2 -pipe 
> -I/usr/X11R6/include/freetype2 -I/usr/local/include/SDL2 -I/usr/X11R6/include 
> -D_REENTRANT -I/usr/X11R6/include -DHAVE_OPENGL glfont.o -L.libs -lSDL2_ttf 
> -lm -lfreetype -lz -lSDL2 -lsndio -lsamplerate -lX11 -lxcb -lXext -lXcursor 
> -lXrender -lXfixes -lXinerama -lXi -lXrandr -lXss -lXxf86vm -lusbhid -lGL 
> -lexpat -lX11-xcb -lxcb-glx -lXau -lXdmcp -lxcb-dri2 -lxcb-shm -ldrm 
> -lpthread -lxcb-dri3 -lxcb-xfixes -lxcb-present -lxcb-sync -lxshmfence 
> -lglapi -Wl,-rpath-link,/usr/local/lib,-rpath-link,/usr/X11R6/lib
> ld: error: .libs/libGL.so.17.1: undefined reference to 
> std::__1::basic_string<char, std::__1::char_traits<char>, 
> std::__1::allocator<char> >::find(char, unsigned long) const 
> [--no-allow-shlib-undefined]
> ld: error: .libs/libGL.so.17.1: undefined reference to operator new(unsigned 
> long) [--no-allow-shlib-undefined]
> ld: error: .libs/libGL.so.17.1: undefined reference to operator delete(void*) 
> [--no-allow-shlib-undefined]
> ld: error: .libs/libGL.so.17.1: undefined reference to 
> std::__1::__basic_string_common<true>::__throw_length_error() const 
> [--no-allow-shlib-undefined] ld: error: .libs/libGL.so.17.1: undefined 
> reference to __gxx_personality_v0 [--no-allow-shlib-undefined]
> cc: error: linker command failed with exit code 1 (use -v to see 
> invocation)Error while executing cc -o .libs/glfont -pthread -O2 -pipe 
> -I/usr/X11R6/include/freetype2 -I/usr/local/include/SDL2 -I/usr/X11R6/include 
> -D_REENTRANT -I/usr/X11R6/include -DHAVE_OPENGL glfont.o -L.libs -lSDL2_ttf 
> -lm -lfreetype -lz -lSDL2 -lsndio -lsamplerate -lX11 -lxcb -lXext -lXcursor 
> -lXrender -lXfixes -lXinerama -lXi -lXrandr -lXss -lXxf86vm -lusbhid -lGL 
> -lexpat -lX11-xcb -lxcb-glx -lXau -lXdmcp -lxcb-dri2 -lxcb-shm -ldrm 
> -lpthread -lxcb-dri3 -lxcb-xfixes -lxcb-present -lxcb-sync -lxshmfence 
> -lglapi -Wl,-rpath-link,/usr/local/lib,-rpath-link,/usr/X11R6/lib
> *** Error 2 in /pobj/sdl2-ttf-2.0.15/build-i386 (Makefile:519 'glfont')

These references come from u_printf.cpp in libmesa_util.a

Follow what the meson build does and use section removal
to avoid them.

Index: lib/mesa/mk/libEGL/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/mesa/mk/libEGL/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- lib/mesa/mk/libEGL/Makefile 1 Aug 2021 01:52:49 -0000       1.4
+++ lib/mesa/mk/libEGL/Makefile 25 Feb 2022 05:29:37 -0000
@@ -41,6 +41,7 @@ CPPFLAGS+=    -I${MESA_SRC}/src/egl/main \
 LDADD+= -Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,--start-group \
        ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a \
        ${.CURDIR}/../libmesa_format/${__objdir}/libmesa_format.a \
+       -Wl,--gc-sections \
        -lz -lm \
        -L${X11BASE}/lib -lX11-xcb -lX11 -lxcb -lxcb-xfixes
 
Index: lib/mesa/mk/libGL/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/mesa/mk/libGL/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- lib/mesa/mk/libGL/Makefile  22 Jul 2021 11:10:09 -0000      1.3
+++ lib/mesa/mk/libGL/Makefile  25 Feb 2022 05:29:37 -0000
@@ -72,7 +72,8 @@ LDADD+=       -L${.CURDIR}/../libglapi/${__obj
        ${.CURDIR}/../libglapi_static/${__objdir}/libglapi_static.a \
        ${.CURDIR}/../libloader/${__objdir}/libloader.a \
        ${.CURDIR}/../libxmlconfig/${__objdir}/libxmlconfig.a \
-       ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a
+       ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a \
+       -Wl,--gc-sections
 
 .if ${XENOCARA_BUILD_DRI3:L} == "yes"
 LDADD+=        
${.CURDIR}/../libloader_dri3_helper/${__objdir}/libloader_dri3_helper.a
Index: lib/mesa/mk/libgbm/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/mesa/mk/libgbm/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- lib/mesa/mk/libgbm/Makefile 24 Feb 2022 02:29:48 -0000      1.4
+++ lib/mesa/mk/libgbm/Makefile 25 Feb 2022 05:29:37 -0000
@@ -24,6 +24,7 @@ LDADD+=       -Wl,--as-needed -Wl,--start-grou
        ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a \
        ${.CURDIR}/../libmesa_format/${__objdir}/libmesa_format.a \
        ${.CURDIR}/../libxmlconfig/${__objdir}/libxmlconfig.a \
+       -Wl,--gc-sections \
        -lz -lm -lexpat
 
 .if ${XENOCARA_BUILD_DRI:L} == "yes"
Index: lib/mesa/mk/libmesa_util/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/mesa/mk/libmesa_util/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- lib/mesa/mk/libmesa_util/Makefile   24 Feb 2022 02:29:49 -0000      1.3
+++ lib/mesa/mk/libmesa_util/Makefile   25 Feb 2022 05:29:37 -0000
@@ -65,7 +65,7 @@ SRCS+=        format_srgb.c
 .include "../Makefile.inc"
 
 CFLAGS+=       ${C_VIS_ARGS}
-CXXFLAGS+=     ${CXX_VIS_ARGS}
+CXXFLAGS+=     ${CXX_VIS_ARGS} -ffunction-sections -fdata-sections
 CPPFLAGS+=     -I${MESA_SRC}/src/util \
                -I${MESA_SRC}/src/mesa \
                -I${MESA_SRC}/src/gallium/include \

Reply via email to