From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11248 invoked by alias); 30 Apr 2006 00:02:42 -0000 Received: (qmail 11239 invoked by uid 22791); 30 Apr 2006 00:02:41 -0000 X-Spam-Check-By: sourceware.org Received: from smtp107.sbc.mail.mud.yahoo.com (HELO smtp107.sbc.mail.mud.yahoo.com) (68.142.198.206) by sourceware.org (qpsmtpd/0.31) with SMTP; Sun, 30 Apr 2006 00:02:39 +0000 Received: (qmail 55069 invoked from network); 30 Apr 2006 00:02:37 -0000 Received: from unknown (HELO lucon.org) (hjjean@sbcglobal.net@75.0.171.244 with login) by smtp107.sbc.mail.mud.yahoo.com with SMTP; 30 Apr 2006 00:02:37 -0000 Received: by lucon.org (Postfix, from userid 1000) id EFCA664034; Sat, 29 Apr 2006 17:02:34 -0700 (PDT) Date: Sun, 30 Apr 2006 14:27:00 -0000 From: "H. J. Lu" To: binutils@sources.redhat.com Subject: PATCH: Xfail shared library without PIC when PIC is required Message-ID: <20060430000234.GA6593@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2006-04/txt/msg00435.txt.bz2 When PIC is required for shared library, like x86-64, shared library without PIC may fail. I will check in this patch. H.J. --- 2006-04-26 H.J. Lu * ld-elfvers/vers.exp: Xfail vers7a, vers7, vers23a, vers23b, vers23c, vers23d, vers23, vers25a, vers25b1, vers25b2, vers27a, vers27b, vers27c1, vers27c2, vers27d4 and vers27d5 if PIC is required. --- ld/testsuite/ld-elfvers/vers.exp.pic 2006-04-29 15:19:04.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers.exp 2006-04-29 15:25:52.000000000 -0700 @@ -830,9 +830,14 @@ build_exec "vers6" vers6.c vers6 "" vers # Another test to verify that something made local via 'local' is truly not # accessible. # -build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym +if [string match "yes" $pic] then { + xfail "vers7a" + xfail "vers7" +} else { + build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym -test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a" + test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a" +} # @@ -906,11 +911,19 @@ build_vers_lib_pic "vers22b" vers22b.c v build_vers_lib_pic "vers22" vers22.c vers22 "vers22a.so vers22b.so" "" vers22.ver vers22.dsym "" # Test versioned definitions in different files. -build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym -build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym "" -build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym "" -build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym "" -build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym "" +if [string match "yes" $pic] then { + xfail "vers23a" + xfail "vers23b" + xfail "vers23c" + xfail "vers23d" + xfail "vers23" +} else { + build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym + build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym "" + build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym "" + build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym "" + build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym "" +} # Test .symver x,x@VERS.0 set as_pic_flags "" @@ -931,9 +944,16 @@ run_ld_link_tests [list "\"vers24c\" \"libvers24c.so\" \"-fpic\""] # Test versioned definition vs. normal definition in different files. -build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym "" -build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym "" -build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym "" +if [string match "yes" $pic] then { + xfail "vers25a" + xfail "vers25b1" + xfail "vers25b2" +} else { + build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym "" + build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym "" + build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym "" +} + build_vers_lib_pic "vers26a" vers26a.c vers26a "" vers26a.map vers26a.ver vers26a.dsym "" build_vers_lib_pic "vers26b1" vers26b.c vers26b1 "" "" vers26b.ver vers26b.dsym "" build_vers_lib_pic "vers26b2" vers26b.c vers26b2 "vers26a.so vers26b1.so vers26a.o" "" vers26b.ver vers26b.dsym "" @@ -944,15 +964,27 @@ if [string match "yes" $pic] then { } # Test versioned definition vs. hidden definition in different files. -build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym "" -build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym "" -build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym "" -build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym "" -build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym -build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym "" -build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym "" -build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym "" -build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym "" +if [string match "yes" $pic] then { + xfail "vers27a" + xfail "vers27b" + xfail "vers27c1" + xfail "vers27c2" + xfail "vers27d1" + xfail "vers27d2" + xfail "vers27d3" + xfail "vers27d4" + xfail "vers27d5" +} else { + build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym "" + build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym "" + build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym "" + build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym "" + build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym + build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym "" + build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym "" + build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym "" + build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym "" +} # Test weak versioned definition vs. strong definition in different # files.