I've got undefined symbols in every drivers tested in xorg. I've tested : - vga - vesa - ati - fbdev Reproducible: Always Steps to Reproduce: startx Actual Results: startx X Window System Version 6.8.0 Release Date: 8 September 2004 X Protocol Version 11, Revision 0, Release 6.8 Build Operating System: Linux 2.6.8-ck7 i686 [ELF] Current Operating System: Linux khanybox 2.6.8-ck7 #4 Sat Sep 18 10:18:39 Local time zone must be set--see zic manu i686 Build Date: 19 September 2004 Before reporting problems, check http://wiki.X.Org to make sure that you have the latest version. Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Sun Sep 19 15:10:24 2004 (==) Using config file: "/etc/X11/xorg.conf" Using vt 7 dlopen: /usr/X11R6/lib/modules/drivers/vga_drv.so: undefined symbol: vgaHWUnmapMem (EE) Failed to load /usr/X11R6/lib/modules/drivers/vga_drv.so (EE) Failed to load module "vga" (loader failed, 7) (EE) No drivers available. Fatal server error: no screens found Please consult the The X.Org Foundation support at http://wiki.X.Org for help. Please also check the log file at "/var/log/Xorg.0.log" for additional information. Expected Results: X start ldd /usr/X11R6/lib/modules/drivers/vga_drv.so statically linked emerge info Portage 2.0.51_rc1 (default-x86-2004.2, gcc-3.4.1, glibc-2.3.4.20040808-r0, 2.6.8-ck7 i686) ================================================================= System uname: 2.6.8-ck7 i686 AMD Athlon(tm) XP 3000+ Gentoo Base System version 1.5.3 distcc 2.17 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.15.90.0.1.1-r3 Headers: sys-kernel/linux-headers-2.4.22 Libtools: sys-devel/libtool-1.5.2-r5 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=athlon-xp -O3 -pipe -fPIC -mfpmath=sse -msse -mmmx -m3dnow -fomit-frame-pointer -falign-functions=32" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=athlon-xp -O3 -pipe -fPIC -mfpmath=sse -msse -mmmx -m3dnow -fomit-frame-pointer -falign-functions=32" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs buildpkg ccache cvs distcc sandbox" GENTOO_MIRRORS="http://gentoo.osuosl.org http://distro.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow 3dnowex GAPING_SECURITY_HOLE X X509 aac aalib accessibility acpi acpi4linux aim alsa amd apache1 apache2 apm arts artswrappersuid async atm audiofile avi berkdb bitmap-fonts bluetooth bonobo bootsplash bzlib c++ cairo calendar cap caps cddb cdf cdinstall cdparanoia cdr cdrom cgi chroot clamav clanJavaScript codecs cpdflib crypt cscope ctype cups curl curlwrappers cyrus dba dbase dbcp dbm devfs devfs26 devmap dga dio directfb distcache distribution divx4linux djbfft dlloader dmx dts dv dvb dvd dvdr dvdread edl encode erandom escreen etwin exif exim ext-png ext-zlib extensions faac faad fam fbcon fbdev ffmpeg flac fluidsynth foomaticdb foreign-package foreign-sysvinit freetype fs ftp fusion gamma gatos gdbm ggi gif gimp gimpprint glade glgd gphoto2 gpm gps gtk gtk2 gtkhtml hardened hbci hdf hdf5 i8x0 icq ide idea imagemagick imap imlib2 inifile ipv6 irda irmc jabber java javacomm javamail javascript jbig jboss jce jikes jit jmx joystick jp2 jpeg jta justify kde lesstif libcaca libg++ libgda libwww lirc lm_sensors lufsusermount lzo lzw lzw-tiff m17n-lib mad mailbox maildir maildrop matroska mbox mbrola mcal mcve md5sum mdb mecab memlimit messages mhash mikmod milter mime mmap mmx mmx2 mng monkey mono motif mozcalendar mozctl mozdevelop mozilla mozp3p mozsvg mp3 mpeg mpeg4 mpi mplayer msn mysql nas ncurses net network neural nntp ntlm nvidia oav ofx oggvorbis ooo-kde openal opengl openssh oscar oss pam parse-clocks pcap pcntl pcre pda pdf pdflib pear-db perl php physfs pic pie png pnp portaudio posix procmail pthreads python qt quicktime quotes radeon radius rage128 readline recode rhino rtc samba sdl serial servlet-2.4 sftplogging shaper shared sharedmem simplexml slang slp smartcard sndfile snmp soap sockets socks5 spamassassin speedo speex spell sse sse2 ssl stencil-buffer subject-rewrite svg svga sysvipc szip tcltk tcpd tga theora threads tidy tiff timidity tokenizer transcode truetype type1 uim uml unicode usb userlocales uudeview v4l v4l2 vda vhosts videos vim virus-scan vnc wifi wsconvert wxwin wxwindows x86 xbase xforms xfs xgetdefault xine xinerama xml xml2 xmlrpc xmms xpm xprint xsl xv xvid yahoo yv12 zlib zvbi"
I've tryed to recompile with : no distcc USE="" CFLAGS="" CXXFLAGS="" Same problem.
something is breaking the expected libdl behaviour. the error message is coming from libdl, and on my system (dlloader -hardened -pic -pie) these drivers all work fine. not an X bug as such, then. reporter, please attach the output of 'nm /usr/X11R6/lib/modules/drivers/vga_drv.so | grep vgaHW'. hardened people, what gives? the X drivers should all be weak data ref free, but that's exactly what this bug looks like.
Here is the output of nm /usr/X11R6/lib/modules/drivers/vga_drv.so | grep vgaHW nm /usr/X11R6/lib/modules/drivers/vga_drv.so | grep vgaHW U vgaHWBlankScreen U vgaHWDPMSSet U vgaHWFreeHWRec U vgaHWGetHWRec U vgaHWGetIndex U vgaHWGetIOBase U vgaHWHandleColormaps U vgaHWHBlankKGA U vgaHWInit U vgaHWLock U vgaHWMapMem U vgaHWProtect U vgaHWRestore U vgaHWSave U vgaHWSaveScreen U vgaHWUnlock U vgaHWUnmapMem
I'm on the way toi recompile libc Here are USE options that I'm using emerge -vbp libc These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] sys-libs/glibc-2.3.4.20040808 -build -debug +erandom +hardened -makecheck -multilib -nls -nptl +pic +userlocales 0 kB
that nm output looks exactly the same as on my system, so i'm blaming libdl.
Still same pb after two compilations (with and without "userlocales")
Just noticed that you say that LD_BIND_NOW does not play along so well here (this may or may not be related). Outstanding dlloader issues: - dlloader will not work when LD_BIND_NOW is set. this is unavoidable until we abandon LoadSubModule for link-time dependencies. you'll get an error message about it though. Workaround: fix your scripts to clear LD_BIND_NOW before starting X http://freedesktop.org/~ajax/dlloader-status.txt The hardened toolchain enables now by default. The logic is as follows %{!nonow: -z now} Note: -Wl,-z,nonow is a hardened option only as the toolchain lacked the functionality. -------------------------------------------------------------------------------- ajax.. Please please let me give you a set of specs to try with the xorg 1 time. Most of these bugs could probably be resolved in one quick swoop that way. (just tell me what gcc revision your on)
dexedrine:~$ gcc --version gcc (GCC) 3.4.2 (Gentoo Linux 3.4.2-r1, ssp-3.4.1-1, pie-8.7.6.5) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. I wasn't aware you could set BIND_NOW behaviour at link time, interesting. I agree we really should be linking modules against each other rather than screwing around like this, but until we drop elfloader entirely that's not an option upstream. I can certainly add a dlloader hook for -z nonow in the Imakefiles though. Would that be acceptable?
Created attachment 39979 [details, diff] gcc-3.4.2-hardened-ia32.specs ajax: To enable these specs in your gcc. root@yourbox# cat gcc-3.4.2-hardened-ia32.specs > $(gcc -print-file-name=specs) Build xorg with all the common stuff you would like to get out of the way with hardened users. And to restore your default specs. root@yourbox# gcc -dumpspecs > $(gcc -print-file-name=specs) This does not pertain to this exactly but just general good knowledge about specs in general. http://dev.gentoo.org/~solar/toolchain/gcc/The_Specs_Language.txt
Also maybe of interest. A user Adam Mondl (tocharian->freenode) put this together this doc a few days ago to help give/set realistic expectations when using hardened toolchain and aiming to compile xorg. http://www.gentoo.org/proj/en/hardened/hardenedxorg.xml
Really better without USE="+dlloader" But now, I've got a problem with duplicarted symbols in libbitmap.a and libbitmap.a:modmap. So, I've tryed tu recompile with USE='-bitmaps-fonts' : same problem. Any ideas ?
Bug #43177
I've removed hardened, -fPIC and such things Still same PB with libbitmap : startx X Window System Version 6.8.0 Release Date: 8 September 2004 X Protocol Version 11, Revision 0, Release 6.8 Build Operating System: Linux 2.6.8-ck7 i686 [ELF] Current Operating System: Linux khanybox 2.6.8-ck7 #4 Sat Sep 18 10:18:39 Local time zone must be set--see zic manu i686 Build Date: 26 September 2004 Before reporting problems, check http://wiki.X.Org to make sure that you have the latest version. Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Mon Sep 27 00:23:37 2004 (==) Using config file: "/etc/X11/xorg.conf" Duplicate symbol __i686.get_pc_thunk.bx in /usr/X11R6/lib/modules/fonts/libbitmap.a:bitmapmod.o Also defined in /usr/X11R6/lib/modules/fonts/libbitmap.a Fatal server error: Module load failure Please consult the The X.Org Foundation support at http://wiki.X.Org for help. Please also check the log file at "/var/log/Xorg.0.log" for additional information. XIO: fatal IO error 104 (Connection reset by peer) on X server ":0.0" after 0 requests (0 known processed) with 0 events remaining. emerge info Portage 2.0.51_rc1 (default-x86-2004.2, gcc-3.4.1, glibc-2.3.4.20040808-r0, 2.6.8-ck7 i686) ================================================================= System uname: 2.6.8-ck7 i686 AMD Athlon(tm) XP 3000+ Gentoo Base System version 1.5.3 distcc 2.17 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.15.90.0.1.1-r3 Headers: sys-kernel/linux-headers-2.4.22 Libtools: sys-devel/libtool-1.5.2-r5 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=athlon-xp -O3 -pipe -mfpmath=sse -msse -mmmx -m3dnow -fomit-frame-pointer -falign-functions=32" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=athlon-xp -O3 -pipe -mfpmath=sse -msse -mmmx -m3dnow -fomit-frame-pointer -falign-functions=32" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs buildpkg ccache cvs distcc sandbox" GENTOO_MIRRORS="http://gentoo.osuosl.org http://distro.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow 3dnowex GAPING_SECURITY_HOLE X X509 aac aalib accessibility acpi acpi4linux aim alsa amd apache1 apache2 apm arts artswrappersuid async atm audiofile avi berkdb bitmap-fonts bluetooth bonobo bootsplash bzlib cairo calendar cap caps cddb cdf cdinstall cdparanoia cdr cdrom cgi chroot clamav clanJavaScript codecs cpdflib crypt cscope ctype cups curl curlwrappers cyrus dba dbase dbcp dbm devfs devfs26 devmap dga dio directfb distcache distribution divx4linux djbfft dlopen dmx dts dv dvb dvd dvdr dvdread edl encode erandom escreen etwin exif exim ext-png ext-zlib extensions faac faad fam fbcon fbdev ffmpeg flac fluidsynth foomaticdb foreign-package foreign-sysvinit freetype fs ftp fusion gamma gatos gdbm ggi gif gimp gimpprint glade glgd gphoto2 gpm gps gtk gtk2 gtkhtml hbci hdf hdf5 i8x0 icq ide idea imagemagick imap imlib2 inifile ipv6 irda irmc jabber java javacomm javamail javascript jbig jboss jce jikes jit jmx joystick jp2 jpeg jta justify kde lesstif libcaca libg++ libgda libwww lirc lm_sensors lufsusermount lzo lzw lzw-tiff m17n-lib mad mailbox maildir maildrop matroska mbox mbrola mcal mcve md5sum mdb mecab memlimit messages mhash mikmod milter mime mmap mmx mmx2 mng monkey mono motif mozcalendar mozctl mozdevelop mozilla mozp3p mozsvg mp3 mpeg mpeg4 mpi mplayer msn mysql nas ncurses net network neural nntp ntlm nvidia oav ofx oggvorbis ooo-kde openal opengl openssh oscar oss pam parse-clocks pcap pcntl pcre pda pdf pdflib pear-db perl php physfs pic pie png pnp portaudio posix procmail pthreads python qt quicktime quotes radeon radius rage128 readline recode rhino rtc samba sdl serial servlet-2.4 sftplogging shaper shared sharedmem simplexml slang slp smartcard sndfile snmp soap sockets socks5 spamassassin speedo speex spell sse sse2 ssl stencil-buffer subject-rewrite svg svga sysvipc szip tcltk tcpd tga theora threads tidy tiff timidity tokenizer transcode truetype type1 uim uml unicode usb userlocales uudeview v4l v4l2 vda vhosts videos vim virus-scan vnc wifi wsconvert wxwin wxwindows x86 xbase xforms xfs xgetdefault xine xinerama xml xml2 xmlrpc xmms xpm xprint xsl xv xvid yahoo yv12 zlib zvbi" nm /usr/X11R6/lib/modules/fonts/libbitmap.a | grep thunk 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx 00000000 T __i686.get_pc_thunk.bx Any suggestions are welcome.
Yes it's working !!!! Hehe, 1 week and about 30 compilations (including gcc and stb libs) But it's working now. Thank you all guys for your help. The solutions (resumed) for next redears : remove +hardened and +dlloading in USE and recompile GCC then XORG. Greetings and best regards, Philippe
Created attachment 40669 [details, diff] hardened-dlloader-nonow-1.patch this adds '-nonow' to the gcc link args everywhere it's needed - namely, the server itself and all the modules. should probably only be applied if USE="hardened dlloader". fixes the "unresolved symbol" error, and also makes it so you don't have to sort your Load statements to make X work. generated against CVS but should apply with some fuzz to 6.8. please test.
Any ideas for how to turn this into an unconditional patch?
Created attachment 40670 [details, diff] hardened-dlloader-nonow-2.patch something like this, with '#define GentooHardenedGccSpecs YES' in host.def. it'll be conditional on +hardened either way, since 'gcc -nonow' isn't valid without the hardened specs; just depends whether you want conditional patches to the Imakefiles or to host.def.
My goal is to get as much of the work and logic into the source and out of the ebuild as possible. Conditional patching has a tendency to break in odd combinations. Over time, when more conditional patches are added, there are a enormously fast-growing number of combinations. It's easier to use the latter solution and go with a host.def #define.
Created attachment 40678 [details, diff] hardened-dlloader-nonow-3.patch This patch is not so much for SSP as it is for general symbol resolution. With USE=static set this entire patch should really not be applied. Anyway attached is just an update to patch-2 with a few variable names renamed. Other distro's are adopting our toolchain (this patch is untested)
Created attachment 40680 [details, diff] hardened-dlloader-nonow-4.patch with USE=static the dynamic module target rules (the bits in Imake.rules) will never get called anyway. however we should still do -z now for the static server build. this should be safe to apply no matter what the USE flags.
Damn. this is going to be a pita to test. It's to CVS and not our 6.8.0-r1 (spy got one yet?) ebuild xorg-x11-6.8.0-r1.ebuild clean setup unpack cd $(portageq envvar PORTAGE_TMPDIR)/portage/xorg-x11-6.8.0-r1/work/xc wget -O - -q 'http://bugs.gentoo.org/attachment.cgi?id=40680' | patch --dry -p0
Created attachment 40685 [details, diff] dlloader patch that hopefully applies cleanly here? I tried even this at the end of the src_unpack bit of our 6.8.0-r1 but half of it was still rejected though just whitespace differences as far as i could see so this patch is an attempt to be exactly like the nonow-4 patch, except to actually patch cleanly. As such, the following line SHOULD work once its changed to whatever attachment number this becomes... wget -O - -q 'http://bugs.gentoo.org/attachment.cgi?id=40680' | patch -p0 --ignore-whitespace
Created attachment 40712 [details, diff] woohoo! ebuild! works for me!
Created attachment 40819 [details, diff] ../xorg-x11-6.8.0-r1.ebuild.diff After 9 or so recompiles I managed to get Xorg working with the ajax's -nonow patch and a bit keyboard banging. I had to add a USE flag you can and should(?) add the flag or allow people a way to disable the building of the glx toys. An unknown toolchain bugs with libstd++ and gcc-3.4.2 and some _Unwind_blah@GCC_3.3 symbol was getting in the way despite me reinstalling std++ and just about everything else I could think of. Anyway this new USE could be named it to something else like glxtoys or whatever you want. I chose minimal. I opted to sed the two problem areas right out of the Imakefile vs using the define it wanted. I was told it might yeild results that I perhaps might not want in releation to DRI if I disabled said define. lspci | grep -i vga | cut -d ' ' -f 2- VGA compatible controller: nVidia Corporation NV11 [GeForce2 MX/MX 400] (rev a1) Non-VGA unclassified device: 3DLabs Permedia II 2D+3D (rev 01) VGA compatible controller: 3Dfx Interactive, Inc. Voodoo 3 (rev 01) +3dfx -3dnow +bitmap-fonts -cjk -debug +dlloader -dmx -doc +hardened -insecure-drivers -ipv6 +minimal +mmx -nls -pam -sdk +sse -static +xprint The patch I'm attaching is by no means a secure one as it fetches directly from this bug #64168 but that did not matter to me so much for my testing. Now that xorg is installed and working there are a few gotchas. Q. One what happened to my fonts(?) A. No idea. But some things are showing up as little squares vs a known font. (I don't use xfs and can't be talked into it!) The PaX flag -M (mprotect/RANDMMAP) does not seem to work or with Xorg causes a really big slowdown. (may be cuz I'm using nvidia driver) The PaX flags -SP now work with Xorg. (non-executable stack) but users will need to remove Xorg - SEGMEXEC/PAGEEXEC exemptions from /etc/init.d/chpax I need to hit submit on this so I don't have to reexplain everything to a user on #-hardened.. I'll share what I learn later. (oh... two random crashes today that causes me to reboot. My box tends to be trouble free and non crashing)
OK. So I don't want to add solar's last patch to stop building tools, but it'll be a useful resource here til the toolchain bug is fixed. As for the nonow patch, is that good to go in?
for the first time, ever, i've got all my systems loading the modules, including GLcore and glx by way of dlloader. it is a thing of beauty. check it in! the warning in use.local.desc for dlloader can probably be toned down a bit from: x11-base/xorg-x11:dlloader - USE WITH CARE: Enable dynamic module loader (results in many unresolved symbols)
Remove this file my xorg-x11-6.8.0-r1.ebuild.diff and add it to ${FILESDIR} or a patchball. - + wget -O - -q 'http://bugs.gentoo.org/attachment.cgi?id=40685' | patch -p0
In 6.8.0-r2, patchset 0.2.3
will this ebuild patch work for xorg-x11-6.8.0-r3.ebuild as well?
Don't know for sure till ya try it =)
The patch doesn't apply to 6.8.0-r1.ebuild itself cleanly. (The first section doesn't apply, where it lists MD5 hashes), others are fine. Here is what I get. Hunk #1 FAILED at 1. 1 out of 1 hunk FAILED -- saving rejects to file xorg-x11-6.8.0-r1.ebuild.rej patching file xorg-x11-6.8.0-r1.ebuild Hunk #1 succeeded at 23 with fuzz 1. Hunk #2 succeeded at 320 (offset -10 lines). Hunk #3 succeeded at 606 (offset -5 lines).