pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Building www/webkit-gtk: undefined reference to `__divmodti4'



From what I gather from the specs files from g++5 and 7 (from g++ -dumpspecs), 

g++5:
	*libgcc:
	%{static|static-libgcc:-lgcc}%{!static:%{!static-libgcc:--as-needed -lgcc_s --no-as-needed -lgcc}}

g++7:
	*libgcc:
	%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared-libgcc:-lgcc --as-needed -lgcc_s --no-as-needed}%{shared-libgcc:-lgcc_s%{!shared: -lgcc}}}}

it is the intention that when a shared library is created, it used a
shared version of libgcc (named libgcc_s.so). Gcc 7 does not seem to
install such a file, but there is one in the base system:
/lib/libgcc_s.so.

Unfortunately it does not define `__divmodti4' (unlike gcc7's libgcc.a).

So even if gcc7 did install libgcc_s.so, then it would be a version
incompatible with the base system (and all potential issues following
from that).

(This doesn't quite explain why C includes -lgcc anyway)

The option -static-libgcc turns on the use of libgcc.a:

$P/g++  -v -shared -static-libgcc c.c
	/usr/pkg/gcc7/libexec/gcc/x86_64--netbsd/7.4.0/collect2 -plugin
	/usr/pkg/gcc7/libexec/gcc/x86_64--netbsd/7.4.0/liblto_plugin.so
	-plugin-opt=/usr/pkg/gcc7/libexec/gcc/x86_64--netbsd/7.4.0/lto-wrapper
	-plugin-opt=-fresolution=/var/tmp//ccoG70VY.res
	-plugin-opt=-pass-through=-lgcc
	-plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lc
	-plugin-opt=-pass-through=-lgcc
	-plugin-opt=-pass-through=-lgcc_eh --eh-frame-hdr -shared
	/usr/lib/crti.o /usr/lib/crtbeginS.o
	-L/usr/pkg/gcc7/lib/gcc/x86_64--netbsd/7.4.0
	-L/usr/pkg/gcc7/lib/gcc/x86_64--netbsd/7.4.0/../../../../x86_64--netbsd/lib
	-L/usr/pkg/gcc7/lib/gcc/x86_64--netbsd/7.4.0/../../..
	-R/usr/pkg/gcc7/x86_64--netbsd/lib/. -R/usr/pkg/gcc7/lib/.
	/var/tmp//cciw8us0.o -lstdc++ -lm -lgcc -lgcc_eh -lc -lgcc
	-lgcc_eh /usr/lib/crtendS.o /usr/lib/crtn.o


so either this option can to be inserted somewhere appropriate, or the
spec file could be rewritten. Or gcc7 could install its own libgcc_s, if
we somehow avoid any troubles from that.

-Olaf.
-- 
Olaf 'Rhialto' Seibert -- rhialto at falu dot nl
___  Anyone who is capable of getting themselves made President should on
\X/  no account be allowed to do the job.       --Douglas Adams, "THGTTG"

Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index