Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 67762 - coreutils fails linking on libfetish due to __fixunstdfdi
Summary: coreutils fails linking on libfetish due to __fixunstdfdi
Status: RESOLVED WONTFIX
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: x86 Linux
: High minor (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-16 04:31 UTC by Markus Baumeister
Modified: 2005-12-11 18:44 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Baumeister 2004-10-16 04:31:15 UTC
emerge system as well as emerge coreutils fails while compiling du with the output shown in "results".

This is probably due to the -m128bit-long-double and/or -mfpmath=sse CFLAGS (at least the 'adjust_value' function as well as the name of the missing function sound so). I have no idea if it is caused by a compiler error or a missing/badly configured library.

Removing -m128bit-long-double from CFLAGS for coreutils stops the problem but then I fear I'm getting problems later on due to the change in calling conventions caused by that.


Reproducible: Always
Steps to Reproduce:
1. Set CFLAGS approprietely 
2. bootstrap (no idea if that is necessary but I did bootstrap with those CFLAGS)
3. emerge system

Actual Results:  
gcc  -O2 -march=pentium3 -mfpmath=sse -malign-double 
-m128bit-long-double -fomit-frame-pointer -pipe   -o du  du.o 
../lib/libfetish.a  ../lib/libfetish.a
../lib/libfetish.a(human.o)(.text+0x34): In function `adjust_value':
: undefined reference to `__fixunstfdi'
collect2: ld returned 1 exit status
make[3]: *** [du] Error 1
make[3]: Leaving directory 
`/var/tmp/portage/coreutils-5.2.1/work/coreutils-5.2.1/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory 
`/var/tmp/portage/coreutils-5.2.1/work/coreutils-5.2.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory 
`/var/tmp/portage/coreutils-5.2.1/work/coreutils-5.2.1'
make: *** [all] Error 2

!!! ERROR: sys-apps/coreutils-5.2.1 failed.
!!! Function src_compile, Line 111, Exitcode 2
!!! (no error message)


Gentoo Base System version 1.4.16
Portage 2.0.50-r11 (default-x86-2004.2, gcc-3.3.4,
glibc-2.3.3.20040420-r0,2.3.4.20040808-r1, 2.6.7-gentoo-r11)
=================================================================
System uname: 2.6.7-gentoo-r11 i686 Intel(R) Pentium(R) M processor 1300MHz
Autoconf: sys-devel/autoconf-2.59-r5
Automake: sys-devel/automake-1.8.5-r1
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CFLAGS="-O2 -march=pentium3 -mfpmath=sse -malign-double  -m128bit-long-double 
-fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
COMPILER=""
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config
/usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=pentium3 -mfpmath=sse -malign-double  -m128bit-long-double
 -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs ccache sandbox"
GENTOO_MIRRORS="ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/
http://www.gigaload.org/gentoo.org/ http://gentoo.tiscali.nl/gentoo/
http://ftp.easynet.nl/mirror/gentoo/"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X acpi alsa apache2 arts avi berkdb bitmap-fonts bzlib cdr crypt cups dga
divx4linux doc dvd encode ethereal exif f77 foomaticdb ftp gdbm gif gnutls
gphoto2 gpm gtk gtk2 imagemagick imlib java jpeg kde libg++ libwww mbox mikmod
mime mmx motif mozilla mpeg mysql ncurses nis nls offensive oggvorbis opengl pam
pcmcia pdflib perl php png pnp posix python qt quicktime readline samba sdl
slang socketsi spell sse ssl svga sysvipc tcpd tetex tiff truetype trusted usb
wxwindows x86 xface xine xml2 xmms xprint xv xvid zlib"
Comment 1 Markus Baumeister 2004-10-16 05:31:55 UTC
Removing -128bit-long-double is no solution as one gets very "interesting" behaviour of tools like 'ls' or 'cp' afterwards.

What seemingly solves the problem is to replace uintmax_t in adjust_value() in human.c with unsinged long, i.e.

from

  if (inexact_style != human_round_to_nearest && value < UINTMAX_MAX)
    {
      uintmax_t u = value;
      value = u + (inexact_style == human_ceiling && u != value);
    }

to

  if (inexact_style != human_round_to_nearest && value < ((unsigned long)(-1)))
    {
      unsigned long u = value;
      value = u + (inexact_style == human_ceiling && u != value);
    }

at the cost of only smaller numbers being able to be rounded like this.

Now I only have to find out how to insert this in emerge's make cycle since emerge tends to delete every source file in the beginning.
Comment 2 SpanKY gentoo-dev 2004-12-27 10:32:30 UTC
tar suffers from the same problem ...
Comment 3 SpanKY gentoo-dev 2005-04-01 17:04:29 UTC
does an updated version of gcc resolve this ?
Comment 4 Markus Baumeister 2005-04-03 16:59:21 UTC
Don't know. I rebootstrapped without -m128bit-long-double due to the errors and the resulting effort cured me from trying all the interesting-looking, architecture-dependent gcc options that in principle should work.
Comment 5 Mark Loeser (RETIRED) gentoo-dev 2005-12-11 18:44:47 UTC
A sane set of cflags resolves this issue.