Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 336209 - kdelibs: disable fatal linker warnings
Summary: kdelibs: disable fatal linker warnings
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] KDE (show other bugs)
Hardware: ARM Linux
: High normal (vote)
Assignee: Gentoo KDE team
URL:
Whiteboard:
Keywords:
: 351934 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-09-06 11:37 UTC by Alexander Holler
Modified: 2011-05-09 20:52 UTC (History)
2 users (show)

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


Attachments
bzipped log from a failed VERBOSE=1 emerge -1kdelibs (build.log.bz2,68.68 KB, application/octet-stream)
2010-09-09 11:42 UTC, Alexander Holler
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Holler 2010-09-06 11:37:07 UTC
Emerging kdelibs-4.4.5 fails because of warnings (TEXTRELs) during linking:
-------------------
* QA Notice: The following files contain runtime text relocations
 *  Text relocations force the dynamic linker to perform extra
 *  work at startup, waste system resources, and may pose a security
 *  risk.  On some architectures, the code may not even function
 *  properly, if at all.
 *  For more information, see http://hardened.gentoo.org/pic-fix-guide.xml
 *  Please include the following list of files in your report:
 * TEXTREL usr/lib/libkhtml.so.5.4.0
 * TEXTREL usr/lib/kde4/libkhtmlpart.so
 * TEXTREL usr/lib/kde4/libkmultipart.so
 * TEXTREL usr/lib/kde4/krossmoduleforms.so
 * TEXTREL usr/lib/kde4/kjavaappletviewer.so
 * TEXTREL usr/lib/kde4/kded_proxyscout.so
 * TEXTREL usr/lib/kde4/plugins/script/libkrossqtsplugin.so.4.4.0
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_psd.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_rgb.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_pcx.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_xcf.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_tga.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_xview.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_eps.so
 * TEXTREL usr/lib/kde4/plugins/imageformats/kimg_dds.so
 * TEXTREL usr/lib/kde4/khtmladaptorpart.so
 * TEXTREL usr/lib/libplasma.so.3.0.0
 * TEXTREL usr/lib/libkjsembed.so.4.4.0
-------------------



Reproducible: Always

Actual Results:  
Linker warnings are fatal.

Expected Results:  
Ignore linker warnings.

kdelibs should not be used to do QA for the rest of the system. I have to use -Wl,--no-fatal-warnings in LDFLAGS to emerge it.

Maybe it would be a good idea to add an useflag like "no-system-qa" which would add the above linker flag to LDFLAGS for kdelibs.
Without that emerging kdelibs will fail whenever one of the dozens libs it is using has poor programming practices, which doesn't look like a good idea for me.
Comment 1 Jorge Manuel B. S. Vicetto (RETIRED) Gentoo Infrastructure gentoo-dev 2010-09-06 11:41:45 UTC
Please add the output of emerge --info
Comment 2 Alexander Holler 2010-09-06 11:57:31 UTC
Here it is:

---------------
beagle ~ # emerge --info
Portage 2.1.8.3 (default/linux/arm/10.0/desktop/kde, gcc-4.5.1, glibc-2.11.2-r0, 2.6.35.4-beagle-omap-dss2-00069-gc3887c9 armv7l)
=================================================================
System uname: Linux-2.6.35.4-beagle-omap-dss2-00069-gc3887c9-armv7l-ARMv7_Processor_rev_3_-v7l-with-gentoo-1.12.13
Timestamp of tree: Fri, 13 Aug 2010 18:40:01 +0000
app-shells/bash:     4.0_p37
dev-lang/python:     2.6.5-r3
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 1.12.13
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.13, 2.65
sys-devel/automake:  1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.3.4, 4.5.1
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.30-r1
ACCEPT_KEYWORDS="arm"
ACCEPT_LICENSE="* -@EULA"
CBUILD="armv7a-unknown-linux-gnueabi"
CFLAGS="-Os -pipe -mtune=cortex-a8 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -fno-tree-vectorize -std=gnu99"
CHOST="armv7a-unknown-linux-gnueabi"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-Os -pipe -mtune=cortex-a8 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -fno-tree-vectorize -std=gnu++0x -fvisibility-inlines-hidden"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://eiche.ahsoftware/GentooDistfiles ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo"
LANG="de_DE.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -Wl,--as-needed"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/ebuilds"
SYNC="rsync://eiche.ahsoftware/gentoo-portage"
USE="X a52 aac acl acpi alsa arm berkdb bluetooth branding bzip2 cairo cdr cli consolekit cracklib crypt cups cxx dbus dts dvdr emboss encode exif fam firefox flac fortran gdbm gif gpm gtk hal iconv ipv6 jpeg kde lcms ldap libnotify mad mikmod mng modules mp3 mp4 mpeg mudflap ncurses nls nptl nptlonly ogg opengl openmp pam pango pcre pdf perl png ppds pppd python qt3support qt4 readline reflection sdl session spell spl ssl startup-notification svg sysfs tcpd tiff truetype unicode usb vorbis xcb xml xorg xulrunner xv xvid zlib" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" QEMU_SOFTMMU_TARGETS="arm i386 x86_64" QEMU_USER_TARGETS="arm armeb i386 x86_64" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fbdev glint mach64 mga nv r128 radeon savage sis tdfx trident   voodoo" 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" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, LINGUAS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 3 Jorge Manuel B. S. Vicetto (RETIRED) Gentoo Infrastructure gentoo-dev 2010-09-06 12:12:02 UTC
FEATURES="assume-digests distlocks fixpackages news parallel-fetch
protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"

You're using FEATURES="strict" and that's why Portage dies. You can either drop strict, at least for building kdelibs, or you'll have to wait for us to fix or get upstream to fix those QA tests.
Comment 4 Alexander Holler 2010-09-06 12:19:58 UTC
I haven't enabled that strict (explicit). Is there a way to disable that feature on a per package basis?
Comment 5 Alexander Holler 2010-09-06 12:32:55 UTC
btw. I haven't got that problem with any other package, so it seems strict only enables --fatal-warnings for kdelibs.
Comment 6 Jonathan Callen (RETIRED) gentoo-dev 2010-09-08 21:39:29 UTC
Those QA warnings should *not* be fatal with FEATURES=strict (only with FEATURES=stricter). In fact, FEATURES=strict is enabled by default on all systems, so it shouldn't be causing that kind of issue.

The output you have given doesn't appear to have anything to do with why portage is failing. Please attach the full build.log.
Comment 7 Alexander Holler 2010-09-09 06:52:35 UTC
The output was from a build using LDFLAGS with -Wl,--no-fatal-warnings, otherwise it wouldn't be that complete because it would fail linking the first stuff. A short grep revealed the following:
-------------------------------------------------
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/kjsembed/qtonly/FindQJSInternal.cmake:      set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/kjsembed/qtonly/FindQJSInternal.cmake:      set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/kjsembed/qtonly/FindQJSInternal.cmake:      set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/kjsembed/qtonly/FindQJSInternal.cmake:      set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/cmake/modules/FindKDE4Internal.cmake:      set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/cmake/modules/FindKDE4Internal.cmake:      set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/cmake/modules/FindKDE4Internal.cmake:      set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}")
/var/tmp/portage/kde-base/kdelibs-4.4.5/work/kdelibs-4.4.5/cmake/modules/FindKDE4Internal.cmake:      set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}")
-------------------------------------------------

Looking at FindKDE4Internal.cmake I see the following:

-------------------------------------------------
if (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)
   if (CMAKE_COMPILER_IS_GNUCXX)
      set ( _KDE4_PLATFORM_DEFINITIONS -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE)
      set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}")
      set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}")
-------------------------------------------------

So this explains why many KDE packages will fail whenever a lib they depend on forces TEXTRELs. If a build.log is still needed, I can attach one, when the run I've just started finally failed (needs some time on a beagleboard), but I assume the above explains all.

So maybe one of the kde-eclasses should append -Wl,--no-fatal-warnings to LDFLAGS in order to overwrite the --fatal-warnings found in the original makefile.
Comment 8 Alexander Holler 2010-09-09 11:42:20 UTC
Created attachment 246587 [details]
bzipped log from a failed VERBOSE=1 emerge -1kdelibs
Comment 9 Alexander Holler 2010-11-04 19:09:26 UTC
I've just stumbled over the fact, why this warning doesn't occure on other systems than Gentoo. Gentoo has enabled --warn-shared-textrel (for ld) by default through one of the patches for binutils. This means with other binutils who don't use that gentoo-specific patch, building KDE would not fail if one of the used libraries has such textrels. So this is a Gentoo only thing.
Comment 10 Alexander Holler 2010-11-21 14:09:23 UTC
The patch which cause this problem is 66_all_binutils-2.18.50.0.2-warn-textrel.patch included in binutils-*-patches-*.tar.bz2
Comment 11 Andreas K. Hüttel archtester gentoo-dev 2011-04-03 16:34:09 UTC
*** Bug 351934 has been marked as a duplicate of this bug. ***
Comment 12 Richard H. 2011-04-11 18:44:53 UTC
This also made impossible to upgrade to kdelibs-4.6.2 on x86. Only setting LDFLAGS="-Wl,--no-fatal-warnings" helped for me.
Comment 13 Andreas K. Hüttel archtester gentoo-dev 2011-05-09 20:52:31 UTC
Should be fixed for arm (fatal warnings disabled only there), if not please reopen.