Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 543114 - sys-devel/gcc: hppa/microblaze/nios2 targets lack -pthread->-D_REENTRANT in their specs
Summary: sys-devel/gcc: hppa/microblaze/nios2 targets lack -pthread->-D_REENTRANT in t...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-13 08:11 UTC by Jeroen Roovers (RETIRED)
Modified: 2015-05-27 16:01 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
sci-libs:cfitsio-3.360:20150313-071924.log (20150313-071924.log,79.82 KB, text/plain)
2015-03-13 08:21 UTC, Jeroen Roovers (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jeroen Roovers (RETIRED) gentoo-dev 2015-03-13 08:11:03 UTC
libtool: link: hppa2.0-unknown-linux-gnu-gcc -mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment -pthread -Wl,-O1 -Wl,--hash-style=gnu -Wl,--no-keep-memory -o .libs/fitscopy fitscopy.o  -Wl,--as-needed ./.libs/libcfitsio.so -L/usr/lib -lz -lm -pthread
./.libs/libcfitsio.so: undefined reference to `Fitsio_Pthread_Status'
./.libs/libcfitsio.so: undefined reference to `Fitsio_Lock'


This is weird. The compiled library does turn out to have both those undefined, even when config.h has _REENTRANT properly defined.

Adding -D_REENTRANT makes it magically work as if the config.h had been ignored:

--- cfitsio-3.360.ebuild        8 Mar 2015 21:02:42 -0000       1.3
+++ cfitsio-3.360.ebuild        13 Mar 2015 08:10:33 -0000
@@ -6,7 +6,7 @@ EAPI=5

 FORTRAN_NEEDED=fortran

-inherit autotools-utils fortran-2
+inherit autotools-utils flag-o-matic fortran-2

 DESCRIPTION="C and Fortran library for manipulating FITS files"
 HOMEPAGE="http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html"
@@ -35,6 +35,7 @@ src_prepare() {
 }

 src_configure() {
+       use threads && append-flags -D_REENTRANT
        local myeconfargs=(
                $(use_enable fortran)
                $(use_enable threads)
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2015-03-13 08:21:40 UTC
Created attachment 398776 [details]
sci-libs:cfitsio-3.360:20150313-071924.log

Fri 13 Mar 09:18:50 CET 2015
emerge --info cfitsio
Portage 2.2.14 (python 3.4.1-final-0, default/linux/hppa/13.0, gcc-4.8.3, glibc-2.19-r1, 3.18.7-gentoo-JeR parisc64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.18.7-gentoo-JeR-parisc64-PA8800_-Mako-with-gentoo-2.2
KiB Mem:     8231380 total,   4805112 free
KiB Swap:    2101676 total,   2101676 free
Timestamp of tree: Fri, 13 Mar 2015 04:15:01 +0000
ld GNU ld (Gentoo 2.24 p1.4) 2.24
distcc 3.1 hppa2.0-unknown-linux-gnu [enabled]
ccache version 3.1.9 [disabled]
app-shells/bash:          4.2_p53
dev-lang/perl:            5.20.1-r4
dev-lang/python:          2.7.9-r1, 3.2.5-r6, 3.3.5-r1, 3.4.1
dev-util/ccache:          3.1.9-r4
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.13.11
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6-r1, 1.12.6, 1.13.4
sys-devel/binutils:       2.22-r1, 2.23.1, 2.23.2, 2.24-r3
sys-devel/gcc:            4.6.3, 4.6.4, 4.7.2-r1, 4.7.3-r1, 4.8.1-r1, 4.8.3, 4.8.4, 4.9.2
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.4
sys-devel/make:           4.1-r1
sys-kernel/linux-headers: 3.16 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo JeR
ACCEPT_KEYWORDS="hppa"
ACCEPT_LICENSE="*"
CBUILD="hppa2.0-unknown-linux-gnu"
CFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment"
CHOST="hppa2.0-unknown-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib/distcc/bin /usr/share/gnupg/qualified.txt /var/bind /var/spool/torque /var/www/localhost/htdocs/wordpress/wp-config.php"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/apache2-php5.4/ext-active/ /etc/php/apache2-php5.5/ext-active/ /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe"
DISTDIR="/world/distfiles"
EMERGE_DEFAULT_OPTS="--quiet-build=n --autounmask=n"
FCFLAGS=""
FEATURES="assume-digests binpkg-logs buildpkg cgroup compressdebug config-protect-if-modified distcc distlocks ebuild-locks fixlafiles merge-sync metadata-transfer news notitles parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict test test-fail-continue unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe"
GENTOO_MIRRORS="http://de-mirror.org/gentoo/ http://gentoo.mneisen.org/ http://mirror.netcologne.de/gentoo/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ http://ftp.halifax.rwth-aachen.de/gentoo/ http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/ http://ftp.uni-erlangen.de/pub/mirrors/gentoo http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/ http://mirror.leaseweb.com/gentoo/ http://gentoo.tiscali.nl/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo"
LANG="en_GB.utf8"
LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--no-keep-memory"
MAKEOPTS="-j6"
PKGDIR="/keeps/gentoo/packages/karsten"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/dev/shm"
PORTDIR="/world/gentoo/portage"
PORTDIR_OVERLAY="/keeps/gentoo/local"
USE="256-color X acl alsa amr anacron apng argyllcms audit bash-completion beautifulsoup3 berkdb bfio bittorrent botan bzip2 cairo canberra cli consolekit coverage cracklib crossdev crypt cups custom-cflags cxx dane dbus declarative dirac directfb distinct-l dlz doc dot dri emacs exceptions exif expat fbcon filecaps firefox firmware foomaticdb fortran frontend-optional g-sorcery gbm gdbm geoip geoloc glep gles1 gles2 gost gpg gpm graphite gsm gstreamer gtk gudev guile hddtemp hppa hwdb iconv idn imlib inotify ipv6 jadetex javascript jingle jit jpeg jpeg2k json kdrive kmod ladspa lasi launch-frontend libav libcaca libcanberra libevent libopts libsoxr libusb libwww lua lzma lzo mad mng mod modplug modules mp3 multislot multitarget munge nagios ncurses netlink nfs nls nptl objc objc++ objc-gc offensive openexr opengl openmp openrc openvg opus oqgraph osmesa oss pam pcre pcre16 php pic pkcs11 png pnm policykit python qt qt3support qt4 readline realtime regression-test rtmp samba sbc schroedinger sctp session smi socks5 speex spell spidermonkey sqlite ssl svg tcl tcpd test tga theora threads tiff tk tokyocabinet truetype unicode unwind v4l vim-syntax vorbis vpx wayland wcwidth x264 xa xattr xcb xft xhtml xkb xml2 xvfb xvid zlib" ALSA_CARDS="ad1889 usb-audio" APACHE2_MODULES="authz_host dir mime alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="nss" DRACUT_MODULES="nfs syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev joystick keyboard mouse acecad aiptek calcomp citron digitaledge dmc dynapro elo2300 elographics fpit hyperpen jamstudio magellan microtouch mutouch palmax penmount spaceorb summa tek4957 tslib ur98 void" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en nl he" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-4 php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3 python3_4" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="stifb dummy" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
USE_PYTHON="2.7 3.3"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC

=================================================================
                        Package Settings
=================================================================

sci-libs/cfitsio-3.360 was built with the following:
USE="doc fortran threads tools -examples -static-libs"
CFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment -D_REENTRANT"
CXXFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -D_REENTRANT"
Comment 2 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2015-03-17 15:20:35 UTC
That shouldn't be necessary as -pthread is provided during compilation of relevant object. 

Could you check that you get the following on hppa?

$ gcc -pthread -dM -E - < /dev/null | grep ENTR
#define _REENTRANT 1
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2015-03-18 05:36:15 UTC
(In reply to Kacper Kowalik (Xarthisius) from comment #2)
> That shouldn't be necessary as -pthread is provided during compilation of
> relevant object. 
> 
> Could you check that you get the following on hppa?
> 
> $ gcc -pthread -dM -E - < /dev/null | grep ENTR
> #define _REENTRANT 1

Well, that was the point of the patch really. On HPPA, you don't get that.
Comment 4 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2015-03-18 12:59:06 UTC
(In reply to Jeroen Roovers from comment #3)
> (In reply to Kacper Kowalik (Xarthisius) from comment #2)
> > That shouldn't be necessary as -pthread is provided during compilation of
> > relevant object. 
> > 
> > Could you check that you get the following on hppa?
> > 
> > $ gcc -pthread -dM -E - < /dev/null | grep ENTR
> > #define _REENTRANT 1
> 
> Well, that was the point of the patch really. On HPPA, you don't get that.

Is it by design? Shouldn't be that fixed system wide for hppa? I mean that's probably not the only package in tree that assumes consistent -pthread behavior.
Comment 5 SpanKY gentoo-dev 2015-03-19 01:36:56 UTC
(In reply to Kacper Kowalik (Xarthisius) from comment #4)

that does seem like a failure in the toolchain
Comment 6 SpanKY gentoo-dev 2015-05-27 14:12:35 UTC
specifically, normally gcc has this:
$ gcc-4.9.2 -dumpspecs |& grep -A 1 '^[*]cpp:'
*cpp:
%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}

but hppa is missing it entirely:
$ hppa2.0-unknown-linux-gnu-gcc-4.8.2 -dumpspecs |& grep REENT
<nothing>

a survey of all the cross-compilers on my system indicates these targets are also broken:
microblaze
nios2

in addition, the handling of -posix/-D_POSIX_SOURCE is inconsistent for:
aarch64
hppa2.0
microblaze
nios2
tilegx
aarch64