From patchwork Sat Apr 4 20:28:05 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John David Anglin X-Patchwork-Id: 132692 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 3083C4BA2E2F for ; Sat, 4 Apr 2026 20:28:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3083C4BA2E2F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=bell.net header.i=@bell.net header.a=rsa-sha256 header.s=selector1 header.b=j5Yr3E7P X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from cmx-mtlrgo002.bell.net (mta-mtl-007.bell.net [209.71.208.29]) by sourceware.org (Postfix) with ESMTP id 3F6CB4BA2E26 for ; Sat, 4 Apr 2026 20:28:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3F6CB4BA2E26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=bell.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bell.net ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3F6CB4BA2E26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.71.208.29 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775334488; cv=none; b=nSt8RAfm7dJtZStBsfSOuZPb5ztEFyfCoxrRICzT4IrBYNHa/jOBTmqPNdbjGzCyYjiRjBUrjDvX7Toy4dJp9kHAPuXjBqMIVD9ni4VD/2fb8p878cBfnrSWp3mrD6YZAfslRfTeKT7Nd0KL+7tXd2QKyqJ2l40bbgSxw4jlqoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775334488; c=relaxed/simple; bh=ey4dss0W04O10lKIeKtD5mORWNiCUbjoakNZ3kWzSmU=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=whJazO5SCCWmtv+P2dbmtbhWOTfzoPDmbmODiMa1ZLgB0PZvhPHhf3SgXIfBbEybArL6pVQ5bTQQTlnOpjUIJ0T1DuF8qtBUHS05ozs+r3ORv0R8wh7j5gMSQEDuDnYD+NOBEKmOKn7T1WiqyBx+xoDnvYscRZ/Put3e9Z7yyyw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F6CB4BA2E26 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bell.net; s=selector1; t=1775334488; bh=JfN8t8pDNx7oOUpJrkebjB5UbJw/XQnKVwbdCQslra4=; h=Date:From:To:Subject:Message-ID:MIME-Version:Content-Type; b=j5Yr3E7PkO1xPj8v1WoJugJysIqxK0ajv/VSJMzPWQtCkc57giciiAQpJo/hyukTqbi1DjtqU40mvIflLJ77ZAZuTo7/4HGzVtw0PoCYFDdBWG08IzZZSGQGS6sVNLMjcgKQEN+sb3pd1FWdFQGLfky1+H4S22ZSyVSNWOmyo680RnHY2hYqmkOVfiBzt3L8f4v7rYdZYW6wAmASfkpPjskvuNyA8lGH2Lmme+bNuG0L0WDqsLgW5IHOJufR7VqeD6bn/tfEcqMzhxi6lsOhBo/9IYw6fDKKf4F0PRW53xFuzf7iGxQWcAW3Q5OCnBWOq0wrtm0RdSiQncqIdA7HmA== X-RG-SOPHOS: Clean X-RG-VADE-SC: 0 X-RG-VADE: Clean X-Originating-IP: [142.112.252.193] X-RG-Env-Sender: dave.anglin@bell.net X-RG-Rigid: 69B7AEA701C685C7 X-RazorGate-Vade: dmFkZTGQi5/9Bu8QhKmH4faedwu7nRp1TwKRqlkHInwBSPGxNjDeo2lbAQQJ7ucIFtXpOmXSBiUn/IQQ9ahfj+Y73VBrObegjDQZtueI/6dXjrrbbVZXX4Lm0yWHKIoJxMnGGSfzTg/hFGdE7mCmhXhlue/olyKk7LhAb/qDa8L2tEdooOKgCVWl8xDUpfvQ3YK+knuvgod5BTDOWfyTpFsDk0wdwPwO5HdtkdWlmq+hBGJ/GCvwKVPJrhGnyyEItZ3JCtIfdCMRECu8gLqkcq5DDgluWwIEhTvsgXo+/XIULupMoEtlN1xJnW+9dF2E//sOSZoD9cZwNt4WQ39PfQz6qwd8G8e4EneuBNKPF3bUvMMIjUVY30T7Qc3xwSDZzuG4wA8UGbFsbP164NG3cjLIK3xqzMwDMyw2xJjDLp7gVdbkPDX9cKtLTG8iWQtfDx7/OOpvQi6aWqRap+oZypHMvO0xMiXZ8WEg2E6mAhyxvrnwPgyxGC5tk8w3POGD0rh4JyATWNiBo3Ga9DrzHZoR7o3NI3hB1BYiCgRzuaFz7wMDdxULRTck0/97txpegJ0LxfK/3mIrYGxJ02gHDSun6/BwoAHvCB9J96mZBMz7u0zcaKpl/LQ9Ka/Jj5T7BoDi/zMsPWBIv2x0y1RkCOtepDtSED35IrWz3VKNg9YGbVcmcg X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Received: from mx3210.local (142.112.252.193) by cmx-mtlrgo002.bell.net (authenticated as dave.anglin@bell.net) id 69B7AEA701C685C7; Sat, 4 Apr 2026 16:28:07 -0400 Date: Sat, 4 Apr 2026 16:28:05 -0400 From: John David Anglin To: Binutils Subject: [PATCH] hppa64-hpux: Create dummy milli.a archives for binutils and ld testsuites Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org Okay? I had to hack default_link_ld to append LDFLAGS and modify the binutils default.exp to include procs from the ld testsuite. Tested on hppa64-hp-hpux11.11 and x86_64-pc-linux-gnu. Dave --- hppa64-hpux: Create dummy milli.a archives for binutils and ld testsuites The hppa64-*-hpux* target has to always link against the milli.a archive to resolve various millicode routines. However, this breaks the binutils and ld testsuites on hosts without the milli.a archive. This change adds dummy milli.a archives on the hppa64-*-hpux* target if ld cannot find the file. The procedure is similar to that used for alpha*-*-*vms* but we also need it for the binutils testsuite. Suggested-by: Maciej W. Rozycki 2026-04-04 John David Anglin binutils/ChangeLog: * testsuite/config/default.exp: Load ld-lib.exp. (ld_assemble, ld_link): New procs. Create dummy missing libraries for hppa*64-*-hpux* target. Append " -Ltmpdir" to LDFLAGS. ld/ChangeLog: * testsuite/config/default.exp: Create dummy missing libraries for hppa*64-*-hpux* target. Append " -Ltmpdir" to LDFLAGS. * testsuite/lib/ld-lib.exp (default_ld_link): Append LDFLAGS to flags variable. diff --git a/binutils/testsuite/config/default.exp b/binutils/testsuite/config/default.exp index 25bd1e64222..9dca734a27c 100644 --- a/binutils/testsuite/config/default.exp +++ b/binutils/testsuite/config/default.exp @@ -20,6 +20,7 @@ # This file was written by Rob Savoye. (rob@cygnus.com) load_lib utils-lib.exp +load_lib ../../../ld/testsuite/lib/ld-lib.exp if ![info exists AS] then { set AS [findfile $base_dir/../gas/as-new $base_dir/../gas/as-new [transform as]] @@ -120,6 +121,41 @@ proc link_or_copy { src dst } { catch "exec cp -fpu ../$src tmpdir/gas/$dst" status } +# +# ld_assemble +# assemble a file +# +proc ld_assemble { as source object } { + default_ld_assemble $as "" $source $object +} + +# +# ld_link +# link a program using ld +# +proc ld_link { ld target objects } { + default_ld_link $ld $target $objects +} + +if { [istarget hppa*64-*-hpux*] } { + set src tmpdir/empty.s + set f [open $src "w"] + close $f + if { [ld_assemble $AS $src tmpdir/empty.o] + && ![ld_link $LD tmpdir/empty tmpdir/empty.o] + && [regsub -all {[^\n]*: cannot find ([^\n :]*)[^\n]*} $exec_output {tmpdir/\1 } missing_libs] } { + regsub -all {\$} $missing_libs {\\\$} missing_libs + for { set i 0 } { $i < [llength $missing_libs] } { incr i } { + set f [lindex $missing_libs $i] + verbose -log "creating dummy $f" + ar_simple_create $AR {} $f tmpdir/empty.o + } + append LDFLAGS " -Ltmpdir" + unset i missing_libs + } + unset f src +} + if {[file isfile gas/as-new[exe_ext]]} then { link_or_copy gas/as-new[exe_ext] as[exe_ext] } else { diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp index 2796f719f22..cc0576b3975 100644 --- a/ld/testsuite/config/default.exp +++ b/ld/testsuite/config/default.exp @@ -552,6 +552,26 @@ if { [istarget alpha*-*-*vms*] } { unset f src } +# Provide dummy milli.a that hppa64-hpux-ld always loads +if { [istarget hppa*64-*-hpux*] } { + set src tmpdir/empty.s + set f [open $src "w"] + close $f + if { [ld_assemble $as $src tmpdir/empty.o] + && ![ld_link $LD tmpdir/empty tmpdir/empty.o] + && [regsub -all {[^\n]*: cannot find ([^\n :]*)[^\n]*} $exec_output {tmpdir/\1 } missing_libs] } { + regsub -all {\$} $missing_libs {\\\$} missing_libs + for { set i 0 } { $i < [llength $missing_libs] } { incr i } { + set f [lindex $missing_libs $i] + verbose -log "creating dummy $f" + ar_simple_create $ar {} $f tmpdir/empty.o + } + append LDFLAGS " -Ltmpdir" + unset i missing_libs + } + unset f src +} + set plug_opt "" if { [check_compiler_available] } { set plugin_names { diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index d37d33cd96c..d1b6f2e058f 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -231,11 +231,13 @@ proc get_board_flags {} { proc default_ld_link { ld target objects } { global host_triplet global exec_output + global LDFLAGS set flags "" if [is_endian_output_format $objects] then { set flags [big_or_little_endian] } + set flags "$flags $LDFLAGS" # When using GCC as the linker driver, we need to specify board cflags when # linking because cflags may contain linker options. For example when