Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2231900/?format=api
{ "id": 2231900, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2231900/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/ydd5x5742ml.fsf_-_@CeBiTec.Uni-Bielefeld.DE/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.1/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<ydd5x5742ml.fsf_-_@CeBiTec.Uni-Bielefeld.DE>", "date": "2026-05-01T14:37:38", "name": "[v2,4/6] Remove HAVE_GNU_LD", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "897f59f9d683ade9a8fb260b13f0fe20d16de95a", "submitter": { "id": 4362, "url": "http://patchwork.ozlabs.org/api/1.1/people/4362/?format=api", "name": "Rainer Orth", "email": "ro@CeBiTec.Uni-Bielefeld.DE" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/ydd5x5742ml.fsf_-_@CeBiTec.Uni-Bielefeld.DE/mbox/", "series": [ { "id": 502464, "url": "http://patchwork.ozlabs.org/api/1.1/series/502464/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=502464", "date": "2026-05-01T14:22:24", "name": null, "version": 2, "mbox": "http://patchwork.ozlabs.org/series/502464/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2231900/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2231900/checks/", "tags": {}, "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=cebitec.uni-bielefeld.de header.i=@cebitec.uni-bielefeld.de\n header.a=rsa-sha256 header.s=20200306 header.b=TaB3D4N4;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=cebitec.uni-bielefeld.de header.i=@cebitec.uni-bielefeld.de\n header.a=rsa-sha256 header.s=20200306 header.b=TaB3D4N4", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=CeBiTec.Uni-Bielefeld.DE", "sourceware.org;\n spf=pass smtp.mailfrom=cebitec.uni-bielefeld.de", "server2.sourceware.org;\n arc=none smtp.remote-ip=129.70.160.84" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6YYd1fZqz1y04\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 00:38:13 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 3C74A43B5517\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 1 May 2026 14:38:11 +0000 (GMT)", "from smtp.CeBiTec.Uni-Bielefeld.DE (smtp.CeBiTec.Uni-Bielefeld.DE\n [129.70.160.84])\n by sourceware.org (Postfix) with ESMTPS id 25A3943B5509;\n Fri, 1 May 2026 14:37:41 +0000 (GMT)", "from localhost (localhost.CeBiTec.Uni-Bielefeld.DE [127.0.0.1])\n by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTP id 40114C791D;\n Fri, 1 May 2026 16:37:40 +0200 (CEST)", "from smtp.CeBiTec.Uni-Bielefeld.DE ([127.0.0.1])\n by localhost (smtp.cebitec.uni-bielefeld.de [127.0.0.1]) (amavisd-new,\n port 10026)\n with ESMTP id CFkEXJHbu_Ha; Fri, 1 May 2026 16:37:39 +0200 (CEST)", "from manam.CeBiTec.Uni-Bielefeld.DE (p508551ea.dip0.t-ipconnect.de\n [80.133.81.234]) (Authenticated sender: ro)\n by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTPSA id 5E6A5D830B;\n Fri, 1 May 2026 16:37:39 +0200 (CEST)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 3C74A43B5517", "OpenDKIM Filter v2.11.0 sourceware.org 25A3943B5509" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 25A3943B5509", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 25A3943B5509", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777646261; cv=none;\n b=kdOy/l8EKbdgR1YptSu1i99x5W+Q4Zc5cqNUqYLCadHS/d1R9bS8X/Zt3u/iOCXrwgnPaDPHTC/ko+hyOX7B5ncX8WsiXQ2jj7Ty0J8XM6BLtL5EbYm3N9UQR9vXEymvxLKu97RZZcAZHwT2Y0P/81UMCVtlvn3FT4kM5FRvSws=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777646261; c=relaxed/simple;\n bh=cWFwGDXI9+SCbGtmiMm1m6GVHmc+rzmyD7BsajbtcDI=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=SQHl3WJtwAXZlHwjydq/hTozo0RAB4989ef5PnmVHIZEEzaREnCMCZSEmstCRs926EaR08JbRdiSSrPOb0sV4PmXPerEK9JzX5cTur3Fqk6LI9NQ4M8xLW0xOBsICCDU+nh78bjS/m3Xzvh0OzYEtExneIG1m+OXI3eCjzT4xiU=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=\n cebitec.uni-bielefeld.de; h=content-type:content-type\n :mime-version:user-agent:message-id:date:date:references\n :in-reply-to:subject:subject:from:from:received:received; s=\n 20200306; t=1777646259; bh=cWFwGDXI9+SCbGtmiMm1m6GVHmc+rzmyD7Bsa\n jbtcDI=; b=TaB3D4N463v1afa44EtpBjfLBXrc5CJG1SO3TfnJs0t0gSbYshus4\n ZGYaMLcpsl9RZiZ3AH7/UVfFphRjmuTyQuaWAJ13kOzmhpXq88a/i/sjiQOmv3c8\n qZ430L57s81zH2ymGgAtyOcYpw1yq17QeMlFjVVMEc7ykNHCRphW7FFrqtvlcBI1\n splZrCPkazGYmslqP00BqDINRf+CkO8XRfX2KaJFb4WWanShDdVUgv4DtAIzd5Zf\n xrQOB9jz3AycKNSmGiJR22Ut4ZwUGg5X95+HlCO2mAggrSI+NscTpm7x55CP2WDi\n O0lB9zRkqCecuhWmyEHyYOKFfks0A8RmQ==", "X-Virus-Scanned": "amavisd-new at cebitec.uni-bielefeld.de", "From": "Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>", "To": "Eric Botcazou <botcazou@adacore.com>", "Cc": "gcc-patches@gcc.gnu.org, Alexandre Oliva <aoliva@gcc.gnu.org>,\n Douglas Rupp <douglas.b.rupp@gmail.com>,\n Tristan Gingold <tgingold@free.fr>, Richard Biener <rguenther@suse.de>", "Subject": "[PATCH v2 4/6] Remove HAVE_GNU_LD", "In-Reply-To": "<5723075.Lt9SDvczpP@fomalhaut> (Eric Botcazou's message of \"Thu,\n 30 Apr 2026 21:45:29 +0200\")", "References": "<yddqznx9846.fsf@CeBiTec.Uni-Bielefeld.DE>\n <12884745.O9o76ZdvQC@arcturus>\n <ydd7bpp92r1.fsf@CeBiTec.Uni-Bielefeld.DE>\n <5723075.Lt9SDvczpP@fomalhaut>", "Date": "Fri, 01 May 2026 16:37:38 +0200", "Message-ID": "<ydd5x5742ml.fsf_-_@CeBiTec.Uni-Bielefeld.DE>", "User-Agent": "Gnus/5.13 (Gnus v5.13)", "MIME-Version": "1.0", "Content-Type": "multipart/mixed; boundary=\"=-=-=\"", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "Hi Eric,\n\n>> Apart from Solaris, the only cases that would be affected are VMS\n>> (highly unlikely to change at this point), __svr4__ && __i386__ (the\n>> original SysVr4/x86, I believe, if this still exists/is supported).\n>\n> OK, then let's further clean things up by removing the VMS and SYSVr4/x86 \n> parts. And let's add \"other\" between \"all\" and \"systems\" in the sentence.\n\ndone in the attached v2 patch.\n\nThis leaves this part:\n\n\t* collect2.cc: Check HAVE_LD_AT_FILE instead of HAVE_GNU_LD.\n\nalthough this borders on obvious.\n\nSpeaking of VMS: two patches in this series\n\n\tbuild: Remove $gas\n https://gcc.gnu.org/pipermail/gcc-patches/2026-April/715163.html\nand\n\tRemove HAVE_GNU_LD\n https://gcc.gnu.org/pipermail/gcc-patches/2026-April/715165.html\n\naffect either the ia64-vms or alpha-vms targets. I've Cc'ed the listed\nmaintainers, but wonder if they are still active.\n\nCan you shed some light at the status of VMS support in GCC?\n\n\tRainer", "diff": "# HG changeset patch\n# Parent c397271d4262e7700ffb301e9cca725b7f8fa95e\nRemove HAVE_GNU_LD\n\ndiff --git a/gcc/ada/link.c b/gcc/ada/link.c\n--- a/gcc/ada/link.c\n+++ b/gcc/ada/link.c\n@@ -160,9 +160,9 @@ const char *__gnat_object_library_extens\n unsigned char __gnat_separate_run_path_options = 0;\n const char *__gnat_default_libgcc_subdir = \"lib\";\n \n-#elif (HAVE_GNU_LD)\n-/* These are the settings for all systems that use gnu ld. GNU style response\n- file is supported, the shared library default is STATIC. */\n+#elif (HAVE_LD_AT_FILE)\n+/* These are the settings for all other systems that support GNU style\n+ response files. The shared library default is STATIC. */\n \n const char *__gnat_object_file_option = \"-Wl,@\";\n const char *__gnat_run_path_option = \"\";\n@@ -174,17 +174,6 @@ const char *__gnat_object_library_extens\n unsigned char __gnat_separate_run_path_options = 0;\n const char *__gnat_default_libgcc_subdir = \"lib\";\n \n-#elif defined (VMS)\n-const char *__gnat_object_file_option = \"\";\n-const char *__gnat_run_path_option = \"\";\n-char __gnat_shared_libgnat_default = STATIC;\n-char __gnat_shared_libgcc_default = STATIC;\n-int __gnat_link_max = 2147483647;\n-unsigned char __gnat_objlist_file_supported = 0;\n-const char *__gnat_object_library_extension = \".olb\";\n-unsigned char __gnat_separate_run_path_options = 0;\n-const char *__gnat_default_libgcc_subdir = \"lib\";\n-\n #elif defined (__sun__)\n const char *__gnat_object_file_option = \"\";\n const char *__gnat_run_path_option = \"-Wl,-R\";\n@@ -202,17 +191,6 @@ const char *__gnat_default_libgcc_subdir\n const char *__gnat_default_libgcc_subdir = \"lib\";\n #endif\n \n-#elif defined (__svr4__) && defined (__i386__)\n-const char *__gnat_object_file_option = \"\";\n-const char *__gnat_run_path_option = \"\";\n-char __gnat_shared_libgnat_default = STATIC;\n-char __gnat_shared_libgcc_default = STATIC;\n-int __gnat_link_max = 2147483647;\n-unsigned char __gnat_objlist_file_supported = 0;\n-const char *__gnat_object_library_extension = \".a\";\n-unsigned char __gnat_separate_run_path_options = 0;\n-const char *__gnat_default_libgcc_subdir = \"lib\";\n-\n #else\n \n /* These are the default settings for all other systems. No response file\ndiff --git a/gcc/collect2.cc b/gcc/collect2.cc\n--- a/gcc/collect2.cc\n+++ b/gcc/collect2.cc\n@@ -718,7 +718,7 @@ maybe_run_lto_and_relink (char **lto_ld_\n \n /* Run the linker again, this time replacing the object files\n optimized by the LTO with the temporary file generated by the LTO. */\n- fork_execute (\"ld\", out_lto_ld_argv, HAVE_GNU_LD && at_file_supplied,\n+ fork_execute (\"ld\", out_lto_ld_argv, HAVE_LD_AT_FILE && at_file_supplied,\n \t\t \"ld_args\");\n /* We assume that temp files were created, and therefore we need to take\n that into account (maybe run dsymutil). */\n@@ -731,7 +731,7 @@ maybe_run_lto_and_relink (char **lto_ld_\n {\n /* Our caller is relying on us to do the link\n even though there is no LTO back end work to be done. */\n- fork_execute (\"ld\", lto_ld_argv, HAVE_GNU_LD && at_file_supplied,\n+ fork_execute (\"ld\", lto_ld_argv, HAVE_LD_AT_FILE && at_file_supplied,\n \t\t \"ld_args\");\n /* No LTO objects were found, so no new temp file. */\n post_ld_pass (/*temp_file*/false);\n@@ -749,7 +749,7 @@ do_link (char **ld_argv, const char *ats\n const char *prog = \"ld\";\n pex = collect_execute (prog, ld_argv, NULL, NULL,\n \t\t\t PEX_LAST | PEX_SEARCH,\n-\t\t\t HAVE_GNU_LD && at_file_supplied, atsuffix);\n+\t\t\t HAVE_LD_AT_FILE && at_file_supplied, atsuffix);\n int ret = collect_wait (prog, pex);\n if (ret)\n {\n@@ -1809,7 +1809,8 @@ main (int argc, char **argv)\n maybe_run_lto_and_relink (ld2_argv, object_lst, object, true);\n else\n {\n- fork_execute (\"ld\", ld2_argv, HAVE_GNU_LD && at_file_supplied, \"ld_args\");\n+ fork_execute (\"ld\", ld2_argv, HAVE_LD_AT_FILE && at_file_supplied,\n+\t\t \"ld_args\");\n post_ld_pass (/*temp_file*/false);\n }\n \ndiff --git a/gcc/config.in b/gcc/config.in\n--- a/gcc/config.in\n+++ b/gcc/config.in\n@@ -1616,12 +1616,6 @@\n #endif\n \n \n-/* Define to 1 if using GNU ld. */\n-#ifndef USED_FOR_TARGET\n-#undef HAVE_GNU_LD\n-#endif\n-\n-\n /* Define if the gold linker supports split stack and is available as a\n non-default */\n #ifndef USED_FOR_TARGET\n@@ -1703,6 +1697,12 @@\n #endif\n \n \n+/* Define if your linker supports GNU style response files. */\n+#ifndef USED_FOR_TARGET\n+#undef HAVE_LD_AT_FILE\n+#endif\n+\n+\n /* Define if your linker supports emulation avrxmega2_flmap. */\n #ifndef USED_FOR_TARGET\n #undef HAVE_LD_AVR_AVRXMEGA2_FLMAP\ndiff --git a/gcc/configure b/gcc/configure\n--- a/gcc/configure\n+++ b/gcc/configure\n@@ -13100,13 +13100,6 @@ $as_echo \"#define USE_LONG_LONG_FOR_WIDE\n \n fi\n \n-gnu_ld_bool=`if test x\"$gnu_ld\" = x\"yes\"; then echo 1; else echo 0; fi`\n-\n-cat >>confdefs.h <<_ACEOF\n-#define HAVE_GNU_LD $gnu_ld_bool\n-_ACEOF\n-\n-\n count=a\n for f in $host_xm_file; do\n \tcount=${count}x\n@@ -21949,7 +21942,7 @@ else\n lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2\n lt_status=$lt_dlunknown\n cat > conftest.$ac_ext <<_LT_EOF\n-#line 21952 \"configure\"\n+#line 21945 \"configure\"\n #include \"confdefs.h\"\n \n #if HAVE_DLFCN_H\n@@ -22055,7 +22048,7 @@ else\n lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2\n lt_status=$lt_dlunknown\n cat > conftest.$ac_ext <<_LT_EOF\n-#line 22058 \"configure\"\n+#line 22051 \"configure\"\n #include \"confdefs.h\"\n \n #if HAVE_DLFCN_H\n@@ -26782,6 +26775,28 @@ $as_echo \"#define HAVE_GAS_HIDDEN 1\" >>c\n \n fi\n \n+{ $as_echo \"$as_me:${as_lineno-$LINENO}: checking linker supports GNU style respones files\" >&5\n+$as_echo_n \"checking linker supports GNU style respones files... \" >&6; }\n+gcc_cv_ld_at_file=no\n+if test $in_tree_ld = yes ; then\n+ gcc_cv_ld_at_file=yes\n+elif test x\"$gcc_cv_as\" != x -a x\"$gcc_cv_ld\" != x; then\n+ echo '.byte 0' > conftest.s\n+ echo conftest.o > conftest.at\n+ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \\\n+ && $gcc_cv_ld -r -o conftest2.o @conftest.at > /dev/null 2>&1; then\n+ gcc_cv_ld_at_file=yes\n+ fi\n+ rm -f conftest.* conftest2.*\n+fi\n+\n+cat >>confdefs.h <<_ACEOF\n+#define HAVE_LD_AT_FILE `if test $gcc_cv_ld_at_file = yes; then echo 1; else echo 0; fi`\n+_ACEOF\n+\n+{ $as_echo \"$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_ro_rw_mix\" >&5\n+$as_echo \"$gcc_cv_ld_ro_rw_mix\" >&6; }\n+\n { $as_echo \"$as_me:${as_lineno-$LINENO}: checking linker read-only and read-write section mixing\" >&5\n $as_echo_n \"checking linker read-only and read-write section mixing... \" >&6; }\n gcc_cv_ld_ro_rw_mix=unknown\ndiff --git a/gcc/configure.ac b/gcc/configure.ac\n--- a/gcc/configure.ac\n+++ b/gcc/configure.ac\n@@ -2020,9 +2020,6 @@ if test x$use_long_long_for_widest_fast_\n efficiently supported by the host hardware.])\n fi\n \n-gnu_ld_bool=`if test x\"$gnu_ld\" = x\"yes\"; then echo 1; else echo 0; fi`\n-AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])\n-\n count=a\n for f in $host_xm_file; do\n \tcount=${count}x\n@@ -3379,6 +3376,24 @@ if test $gcc_cv_as_hidden = yes && test \n [Define if your assembler and linker support .hidden.])\n fi\n \n+AC_MSG_CHECKING(linker supports GNU style respones files)\n+gcc_cv_ld_at_file=no\n+if test $in_tree_ld = yes ; then\n+ gcc_cv_ld_at_file=yes\n+elif test x\"$gcc_cv_as\" != x -a x\"$gcc_cv_ld\" != x; then\n+ echo '.byte 0' > conftest.s\n+ echo conftest.o > conftest.at\n+ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \\\n+ && $gcc_cv_ld -r -o conftest2.o @conftest.at > /dev/null 2>&1; then\n+ gcc_cv_ld_at_file=yes\n+ fi\n+ rm -f conftest.* conftest2.*\n+fi\n+AC_DEFINE_UNQUOTED(HAVE_LD_AT_FILE,\n+ [`if test $gcc_cv_ld_at_file = yes; then echo 1; else echo 0; fi`],\n+ [Define if your linker supports GNU style response files.])\n+AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)\n+\n AC_MSG_CHECKING(linker read-only and read-write section mixing)\n gcc_cv_ld_ro_rw_mix=unknown\n if test $in_tree_ld = yes ; then\ndiff --git a/gcc/testsuite/gcc.misc-tests/outputs.exp b/gcc/testsuite/gcc.misc-tests/outputs.exp\n--- a/gcc/testsuite/gcc.misc-tests/outputs.exp\n+++ b/gcc/testsuite/gcc.misc-tests/outputs.exp\n@@ -50,15 +50,8 @@ if !$skip_lto {\n set ltop [check_linker_plugin_available]\n }\n \n-# Check for GNU LD. Some files like .ld1_args depend on this. This\n-# should really be testing whether HAVE_GNU_LD was set by configure.\n-# If we find GNU ld here, but the compiler wasn't configured\n-# --with-gnu-ld or with DEFAULT_LINKER pointing at GNU ld, on a target\n-# that doesn't set gnu_ld=yes unconditionally, configure and thus\n-# collect2 will conservatively assume there's no support for @file in\n-# the linker, but our atfile tests will expect ld1_args files to be\n-# created, and thus fail. Configuring the compiler --with-gnu-ld\n-# fixes this.\n+# Check for GNU ld. Some files like .ld1_args depend on this. This\n+# should really be testing whether the linker supports GNU style response files.\n set gld [check_effective_target_gld]\n \n # Prepare additional options to be used for linking.\n", "prefixes": [ "v2", "4/6" ] }