When ld is configured with a sysroot prefix and test is executed: echo "Testing with absolute linker script (systems libz)..." echo "GROUP ( /lib/libz.so )" > "${PWD}/libfoo-script.so" armv4tl-softfloat-linux-gnueabi-gcc test.c -o test libfoo-script.so the linking process terminates with Testing with absolute linker script (systems libz)... /lib/libz.so: file not recognized: File format not recognized collect2: ld returned 1 exit status because the Host's library is linked in. For cross-compilation the desired behaviour is different. Here, the lib specified in the linker script should be searched in the sysroot first! Patch will be attached.
Created attachment 4025 [details] ld should search search in sysroot first When ld was configured with a sysroot, it should always search for libraries with absolute filename in this sysroot first.
Comment on attachment 4025 [details] ld should search search in sysroot first When ld was configured with a sysroot, it should always search for libraries with absolute filename in this sysroot first. This patch was tested on x86_64-pc-linux-gnu without sysroot and armv4tl-softfloat-linux-gnueabi with sysroot and works ffine on both.
background discussion can be found here: http://sourceware.org/ml/binutils/2009-05/msg00480.html
CVSROOT: /cvs/src Module name: src Changes by: amodra@sourceware.org 2012-03-08 05:29:33 Modified files: ld : ChangeLog ldfile.c ldfile.h ldlang.c ldlang.h ldlex.h ldlex.l Log message: PR ld/10340 * ldfile.c (is_sysrooted_pathname): Remove notsame param. (ldfile_add_library_path): Don't set sysrooted flag. (ldfile_open_file_search): Likewise, and don't copy them. (try_open): Delete exten and code handling such. Add sysrooted param and return whether path is in sysroot. (ldfile_find_command_file): Delete extend param. Add sysrooted param. Rename local var. Update try_open calls. (ldfile_open_command_file_1): Pass sysrooted to lex_push_file. * ldfile.h (search_dirs_type): Remove sysrooted field. * ldlang.c (new_afile): Always set sysrooted from input_flags. (load_symbols): Don't set input_flags.sysrooted. * ldlang.h (struct lang_input_statement_flags): Revise sysrooted comment. * ldlex.h (lex_push_file): Update prototype. * ldlex.l (sysrooted_stack): New array. (EOF): Pop input_flags.sysrooted. (lex_push_file): Add sysrooted param. Save and set input_flags.sysrooted. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&r1=1.2416&r2=1.2417 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldfile.c.diff?cvsroot=src&r1=1.65&r2=1.66 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldfile.h.diff?cvsroot=src&r1=1.19&r2=1.20 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlang.c.diff?cvsroot=src&r1=1.385&r2=1.386 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlang.h.diff?cvsroot=src&r1=1.102&r2=1.103 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlex.h.diff?cvsroot=src&r1=1.9&r2=1.10 http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlex.l.diff?cvsroot=src&r1=1.54&r2=1.55
More background discussion http://sourceware.org/ml/binutils/2003-02/msg00449.html
fixed
*** Bug 260998 has been marked as a duplicate of this bug. *** Seen from the domain http://volichat.com Page where seen: http://volichat.com/adult-chat-rooms Marked for reference. Resolved as fixed @bugzilla.