[gcc r17-2655] testsuite: Provide shf_link_order effective target

Rainer Orth via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:c17883e6f27a0960ba35fe059db639293b7ab909

commit r17-2655-gc17883e6f27a0960ba35fe059db639293b7ab909
Author: Rainer Orth <[email protected]>
Date:   Thu Jul 23 10:29:33 2026 +0200

    testsuite: Provide shf_link_order effective target
    
    Like R_flag_in_section, the o_flag_in_section effective target is a
    misnomer.  It actually signifies support for the SHF_LINK_ORDER section
    flag.  Therefore this patch uses the et-static framework to determine it
    from HAVE_GAS_SECTION_LINK_ORDER in auto-host.h, adapting the existing
    uses.
    
    Bootstrapped without regressions on i386-pc-solaris2.11 and
    x86_64-pc-linux-gnu.
    
    2026-01-13  Rainer Orth  <[email protected]>
    
            gcc:
            * configure.ac (HAVE_GAS_SECTION_LINK_ORDER): Clarify comment.
            * config.in: Regenerate.
    
            * doc/sourcebuild.texi (Effective-Target Keywords)
            (o_flag_in_section): Rename to shf_link_order.  Update description.
    
            gcc/testsuite:
            * lib/target-supports.exp
            (check_effective_target_o_flag_in_section): Remove.
            * lib/et-static.def (shf_link_order): New effective target.
            * g++.dg/pr93195a.C: Require shf_link_order.
            * gcc.dg/pr110729.c: Likewise.

Diff:
---
 gcc/config.in                         |  2 +-
 gcc/configure.ac                      |  2 +-
 gcc/doc/sourcebuild.texi              |  6 +++---
 gcc/testsuite/g++.dg/pr93195a.C       |  2 +-
 gcc/testsuite/gcc.dg/pr110729.c       |  2 +-
 gcc/testsuite/lib/et-static.def       |  4 ++++
 gcc/testsuite/lib/target-supports.exp | 40 -----------------------------------
 7 files changed, 11 insertions(+), 47 deletions(-)

diff --git a/gcc/config.in b/gcc/config.in
index 95a1087c8a57..34ff1b1cb995 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1522,7 +1522,7 @@
 #endif
 
 
-/* Define 0/1 if your assembler supports 'o' flag in .section directive. */
+/* Define 0/1 if your assembler and linker support SHF_LINK_ORDER. */
 #ifndef USED_FOR_TARGET
 #undef HAVE_GAS_SECTION_LINK_ORDER
 #endif
diff --git a/gcc/configure.ac b/gcc/configure.ac
index c400be9114a5..9818f7b01488 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3793,7 +3793,7 @@ case "${target}" in
 esac
 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_LINK_ORDER,
   [`if test $gcc_cv_as_section_link_order = yes; then echo 1; else echo 0; fi`],
-  [Define 0/1 if your assembler supports 'o' flag in .section directive.])
+  [Define 0/1 if your assembler and linker support SHF_LINK_ORDER.])
 
 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
  [$fw_as_opt],
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index f3c5b13840c4..7b59cf89050a 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -3173,9 +3173,6 @@ Target supports the @code{noinit} variable attribute.
 @item nonpic
 Target does not generate PIC by default.
 
-@item o_flag_in_section
-Target supports the 'o' flag in .section directive in assembly inputs.
-
 @item offload_gcn
 Target has been configured for OpenACC/OpenMP offloading on AMD GCN.
 
@@ -3211,6 +3208,9 @@ Target supports section anchors.
 @item shf_gnu_retain
 Target supports @code{SHF_GNU_RETAIN}.
 
+@item shf_link_order
+Target supports @code{SHF_LINK_ORDER}.
+
 @item short_enums
 Target defaults to short enums.
 
diff --git a/gcc/testsuite/g++.dg/pr93195a.C b/gcc/testsuite/g++.dg/pr93195a.C
index 26d265da74eb..550b73adc4dd 100644
--- a/gcc/testsuite/g++.dg/pr93195a.C
+++ b/gcc/testsuite/g++.dg/pr93195a.C
@@ -1,5 +1,5 @@
 /* { dg-do link { target { ! { nvptx*-*-* visium-*-* } } } } */
-// { dg-require-effective-target o_flag_in_section }
+/* { dg-require-effective-target shf_link_order } */
 /* { dg-options "-O0 -fpatchable-function-entry=1" } */
 /* { dg-additional-options "-fno-pie" { target sparc*-*-* } } */
 /* { dg-additional-sources pr93195b.C } */
diff --git a/gcc/testsuite/gcc.dg/pr110729.c b/gcc/testsuite/gcc.dg/pr110729.c
index 29b8c1c1f439..4e4c62b3f747 100644
--- a/gcc/testsuite/gcc.dg/pr110729.c
+++ b/gcc/testsuite/gcc.dg/pr110729.c
@@ -1,5 +1,5 @@
 /* { dg-do compile { target { ! { nvptx*-*-* visium-*-* } } } } */
-/* { dg-require-effective-target o_flag_in_section } */
+/* { dg-require-effective-target shf_link_order } */
 /* { dg-options "-ffunction-sections -fpatchable-function-entry=2" } */
 /* { dg-additional-options "-fno-pie" { target sparc*-*-* } } */
 
diff --git a/gcc/testsuite/lib/et-static.def b/gcc/testsuite/lib/et-static.def
index 2c3b6eaa3ef3..b5a323359208 100644
--- a/gcc/testsuite/lib/et-static.def
+++ b/gcc/testsuite/lib/et-static.def
@@ -52,6 +52,10 @@ shf_gnu_retain
 HAVE_GAS_SHF_GNU_RETAIN
 this target supports SHF_GNU_RETAIN
 
+shf_link_order
+HAVE_GAS_SECTION_LINK_ORDER
+this target supports SHF_LINK_ORDER
+
 sht_init_array
 HAVE_INITFINI_ARRAY_SUPPORT
 this target supports SHT_INIT_ARRAY
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 0111fac3e42b..57a6df4f83ba 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -14207,46 +14207,6 @@ proc check_effective_target_gnu_retain { } {
                    && [check_effective_target_sht_init_array] } ]
 }
 
-# Return 1 if this target supports 'o' flag in .section directive, 0
-# otherwise.  Cache the result.
-
-proc check_effective_target_o_flag_in_section { } {
-    global tool
-    global GCC_UNDER_TEST
-
-    # Need auto-host.h to check linker support.
-    if { ![file exists ../../auto-host.h ] } {
-	return 0
-    }
-
-    return [check_cached_effective_target o_flag_in_section {
-
-	set src pie[pid].c
-	set obj pie[pid].o
-
-	set f [open $src "w"]
-	puts $f "#include \"../../auto-host.h\""
-	puts $f "#if HAVE_GAS_SECTION_LINK_ORDER == 0"
-	puts $f "# error Assembler does not support 'o' flag in .section directive."
-	puts $f "#endif"
-	close $f
-
-	verbose "check_effective_target_o_flag_in_section compiling testfile $src" 2
-	set lines [${tool}_target_compile $src $obj object ""]
-
-	file delete $src
-	file delete $obj
-
-	if [string match "" $lines] then {
-	    verbose "check_effective_target_o_flag_in_section testfile compilation passed" 2
-	    return 1
-	} else {
-	    verbose "check_effective_target_o_flag_in_section testfile compilation failed" 2
-	    return 0
-	}
-    }]
-}
-
 # Return 1 if LRA is supported.  This must not be called (results in ERROR) for
 # targets that don't do register allocation, and therefore neither use nor
 # don't use LRA.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.