My PRELINK_MASK_PATH="/opt" yet I get this # prelink -afmR prelink: /opt/kylix3/bin/bc++: DT_JMPREL tag not adjacent to DT_REL relocations prelink: /opt/kylix3/bin/dcc: Not enough room to add .dynamic entry I have restarted xfree and loged back in a number of times, I have also manually done env-update and tried again and again but prelink keeps looking into /opt for some reason. I have also reemerged prelink but I still get those errors. I think that prelink has a bug because it is not reading /etc/env.d/99prelink Reproducible: Always Steps to Reproduce: 1. 2. 3. # emerge info Portage 2.0.48 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1) ================================================================= System uname: 2.4.20-gaming-r3 i686 AMD Athlon(tm) Processor GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/Linux/distributions/gentoo" CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR_OVERLAY="/usr/local/portage" USE="x86 oss 3dnow avi crypt cups encode gif jpeg libg++ mmx mpeg ncurses pdflib png quicktime spell truetype xml2 xmms xv zlib directfb gtkhtml alsa gdbm berkdb slang readline aalib bonobo svga ggi tcltk guile mysql X sdl gpm tcpd pam libwww ssl perl python imlib oggvorbis gnome gtk qt opengl mozilla gphoto2 ldap apache2 dvd emacs fbcon freetype gnomedb gtk2 imap innodb jack mpi odbc pic xfs xml xosd -apm -arts -java -mikmod -nls -esd -kde -motif -cdr -scanner" COMPILER="gcc3" CHOST="i686-pc-linux-gnu" CFLAGS="-Wall -march=athlon-tbird -O2 -fPIC -pipe" CXXFLAGS="-Wall -march=athlon-tbird -O2 -fPIC -pipe" ACCEPT_KEYWORDS="x86 ~x86" MAKEOPTS="-j2" AUTOCLEAN="yes" SYNC="rsync://rsync.us.gentoo.org/gentoo-portage" FEATURES="sandbox ccache prelink"
..more info.. Prelink is fails with this error: prelink: exec.c:779: prelink_exec: Assertion `data->d_size == dso->shdr[new_dynbss].sh_size + dso->shdr[new_dynbss + 1].sh_size' failed. Aborted The Gentoo Prelink documentation says: "Prelink aborts with "prelink: dso.c:306: fdopen_dso: Assertion `j == k' failed." This a known problem, kindly diagnosed here. Prelink cannot cope with UPX-compressed executables. As of prelink-20021213 there is no fix except to hide the executables while you are prelinking. See the Configuration section above for an easy way to do this." However as my last comment shows, PRELINK_MASK_PATH is not affecting prelink, so I have no way to hide these executables until this is fixed. Is anyone else having similar troubles with prelink and PRELINK_MASK_PATH?
Hm, how did this end up with me? This is a prelink bug as I see and I am not a prelink person... Reassiging back to bug-wranglers. George
Dang it! :)
Could you paste in your /etc/prelink.conf after a env-update and having PRELINK_MASK_PATH="/opt" set in /etc/env.d/99prelink please.
$ cat /etc/env.d/99prelink PRELINK_MASK_PATH="/opt" $ cat /etc/prelink.conf # prelink.conf autogenerated by env-update; make all changes to # contents of /etc/env.d directory -l /bin -l /sbin -l /usr/bin -l /usr/sbin -l /lib -l /usr/lib -h /usr/local/lib -h /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3 -h /usr/lib/opengl/nvidia/lib -h /usr/lib/mozilla -h /usr/X11R6/lib -h /opt/blackdown-jdk-1.4.1/jre/lib/i386/ -h /opt/blackdown-jdk-1.4.1/jre/lib/i386/native_threads/ -h /usr/qt/3/lib -h /usr/games/lib -h /usr/lib/fltk-1.1 -h /usr/local/bin -h /opt/bin -h /usr/i686-pc-linux-gnu/gcc-bin/3.2 -h /usr/X11R6/bin -h /opt/blackdown-jdk-1.4.1/bin -h /opt/blackdown-jdk-1.4.1/jre/bin -h /usr/qt/3/bin -h /usr/games/bin -h /opt/vmware/bin # prelink -afmR ~~snip~~ prelink: /opt/vmware/bin/vmnet-bridge: Not enough room to add .dynamic entry prelink: /opt/vmware/bin/vmware-ping: Not enough room to add .dynamic entry prelink: /opt/kylix3/bin/bc++: DT_JMPREL tag not adjacent to DT_REL relocations prelink: /opt/vmware/bin/vmware-nmbd: Not enough room to add .dynamic entry ~~snip~~ prelink: exec.c:779: prelink_exec: Assertion `data->d_size == dso->shdr[new_dynbss].sh_size + dso->shdr[new_dynbss + 1].sh_size' failed. Aborted
Ok, it looks like PRELINK_MASK_PATH is not a substring matcher, ie. /opt will not match /opt/bin. But the curious thing is that /opt/kylix3/bin/bc++ attemted to be prelinked, even though it is not in prelink.conf. So we have two seperate bugs; PRELINK_MASK_PATH not matching substrings, and prelink picking random files to be prelinked, I can fix the first in portage, but the second problem is a mystery ( for the moment ) thanks
Maybe there is a symlink to bc++ somewhere in the prelinked paths?
is this fixed in the latest prelink version?
A new version of prelink will be in portage soon, when I add it could you test it. This may also be a portage (env-update) problem.
ok, many new versions of prelink have come and gone. Closing bug, please reopen if it is still a problem ( latest versions of perlink are quite stable )
see last comment