Undefined __dso_handle symbol when linking Fuse module

218 views
Skip to first unread message

Paweł Tomak

unread,
Aug 5, 2018, 5:17:46 PM8/5/18
to pi...@roxen.com
Hello,

I've started to get linking error when building Pike, both 8.0 and 8.1:

#### Making dynamic: modules/Fuse
Compiling modules/Fuse/fuse.c
Linking Fuse
/usr/lib64/libc_nonshared.a(atexit.oS): In function `atexit':
(.text+0x27): undefined reference to `__dso_handle'
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld:
/usr/lib64/libc_nonshared.a(atexit.oS): relocation R_X86_64_PC32 against
undefined hidden symbol `__dso_handle' can not be used when making a
shared object
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld:
final link failed: Bad value
collect2: error: ld returned 1 exit status
Linking failed:
/var/tmp/portage/dev-lang/pike-8.0.622_beta/work/Pike-v8.0.622/bin/smartlink
gcc -shared -nostartfiles -Wl,-O1 -Wl,--as-needed
-L/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0
-R/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0 -L/usr/lib64 -R/usr/lib64
-L/lib64 -R/lib64 -L/usr/x86_64-pc-linux-gnu/lib -rdynamic -o module.so
fuse.o -Wl,-O1 -Wl,--as-needed
-L/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0
-R/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0 -L/usr/lib64 -R/usr/lib64
-L/lib64 -R/lib64 -L/usr/x86_64-pc-linux-gnu/lib -ldl -lrt -lnsl -lm
-lpthread -lcrypt -lfuse /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc.a
-lc /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc.a
make[6]: *** [Makefile:421: module.so] Error 1
make[5]: *** [Makefile:100: all] Error 2
make[4]: *** [Makefile:100: Fuse] Error 1
make[3]: *** [Makefile:1175: dynamic_module_objects] Error 1
make[2]: *** [Makefile:1196: module_objects] Error 2
make[1]: *** [Makefile:149: _make_in_builddir] Error 2
make: *** [Makefile:66: compile] Error 2


I've built Pike-8.0.622 sucesfully on May 27th, since then only glibc
changed from 2.26 to 2.27 (there's also some bug in Debian tracker about
that issue, however it states that 8.0.610 is already fixed, but that's
not true in my case)

~Paweł

Lance Dillon

unread,
Aug 5, 2018, 6:33:17 PM8/5/18
to pi...@roxen.com, Paweł Tomak

I had to change my configure file, at around line 78659:

-    Linux*) LDSHARED="$REALCC -shared";;
+    Linux*) LDSHARED="$REALCC -shared -no-pie -fno-pie";;

That fixed that problem...  something to do with relocations and pie libs.  I've got the pages I looked that information up somewhere.

Came up with recent versions of gcc where pie was now default or something.


Reply all
Reply to author
Forward
0 new messages