When -export-symbols-regex is passed to libtool (for example in the systems source), it generates a version map that gold does not like:
$ make make --no-print-directory all-recursive Making all in . /bin/sh ./libtool --tag=CC --mode=link gcc-4.9 -std=gnu99 -pipe -Wall -Wextra -Wno-inline -Wundef -Wformat=2 -Wformat-security -Wformat-nonliteral -Wlogical-op -Wsign-compare -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wsuggest-attribute=noreturn -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing=2 -Wwrite-strings -Wno-long-long -Wno-overlength-strings -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result -Werror=overflow -Wdate-time -Wnested-externs -ffast-math -fno-common -fdiagnostics-show-option -fdiagnostics-color -fno-strict-aliasing -fvisibility=hidden -ffunction-sections -fdata-sections -fstack-protector --param=ssp-buffer-size=4 -flto -fvisibility=default -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -g -O2 -Wl,--as-needed -Wl,--no-undefined -Wl,--gc-section s -Wl,-z,relro -Wl,-z,now -Wl,-fuse-ld=gold -version-info 1:3:1 -export-dynamic -no-undefined -export-symbols-regex '^g_udev_.*' -o libgudev-1.0.la -rpath /usr/lib src/gudev/libgudev_1_0_la-gudevclient.lo src/gudev/libgudev_1_0_la-gudevdevice.lo src/gudev/libgudev_1_0_la-gudevenumerator.lo src/gudev/libgudev_1_0_la-gudevmarshal.lo src/gudev/libgudev_1_0_la-gudevenumtypes.lo libudev.la -lgio-2.0 -lgobject-2.0 -lglib-2.0 -ldl libtool: link: rm -fr .libs/libgudev-1.0.exp libtool: link: /usr/bin/nm -B src/gudev/.libs/libgudev_1_0_la-gudevclient.o src/gudev/.libs/libgudev_1_0_la-gudevdevice.o src/gudev/.libs/libgudev_1_0_la-gudevenumerator.o src/gudev/.libs/libgudev_1_0_la-gudevmarshal.o src/gudev/.libs/libgudev_1_0_la-gudevenumtypes.o | sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libgudev-1.0.exp libtool: link: /usr/bin/grep -E -e "^g_udev_.*" ".libs/libgudev-1.0.exp" > ".libs/libgudev-1.0.expT" libtool: link: mv -f ".libs/libgudev-1.0.expT" ".libs/libgudev-1.0.exp" libtool: link: echo "{ global:" > .libs/libgudev-1.0.ver libtool: link: cat .libs/libgudev-1.0.exp | sed -e "s/\(.*\)/\1;/" >> .libs/libgudev-1.0.ver libtool: link: echo "local: *; };" >> .libs/libgudev-1.0.ver libtool: link: gcc-4.9 -shared -fPIC -DPIC src/gudev/.libs/libgudev_1_0_la-gudevclient.o src/gudev/.libs/libgudev_1_0_la-gudevdevice.o src/gudev/.libs/libgudev_1_0_la-gudevenumerator.o src/gudev/.libs/libgudev_1_0_la-gudevmarshal.o src/gudev/.libs/libgudev_1_0_la-gudevenumtypes.o -Wl,-rpath -Wl,/home/jengelh/nocode/systemd/.libs ./.libs/libudev.so -lgio-2.0 -lgobject-2.0 -lglib-2.0 -ldl -flto -pthread -O2 -Wl,--as-needed -Wl,--no-undefined -Wl,--gc-sections -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,-fuse-ld=gold -pthread -Wl,-soname -Wl,libgudev-1.0.so.0 -Wl,-version-script -Wl,.libs/libgudev-1.0.ver -o .libs/libgudev-1.0.so.0.1.3 /usr/bin/ld.gold: error: .libs/libgudev-1.0.ver:2:1: syntax error, unexpected LOCAL, expecting STRING or QUOTED_STRING or EXTERN /usr/bin/ld.gold: fatal error: unable to parse version script file .libs/libgudev-1.0.ver collect2: error: ld returned 1 exit status make[2]: *** [libgudev-1.0.la] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 ld.bfd does not like it either: /usr/lib64/gcc/x86_64-suse-linux/4.9/../../../../x86_64-suse-linux/bin/ld:.libs/libgudev-1.0.ver:2: syntax error in VERSION script collect2: error: ld returned 1 exit status $ cat .libs/libgudev-1.0.ver { global: local: *; }; What it probably should be: WHATEVER { global: local: *; }; The culprit might be this line in libtool, which expressly omits "WHATEVER". archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ System is using automake 1.14, libtool 2.4.2, autoconf 2.69, binutils 2.23.2, gcc 4.8/4.9. _______________________________________________ https://lists.gnu.org/mailman/listinfo/libtool