* [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder
@ 2022-04-16 18:36 Fangrui Song
2022-05-01 7:10 ` Fāng-ruì Sòng
2022-05-04 18:34 ` Adhemerval Zanella
0 siblings, 2 replies; 4+ messages in thread
From: Fangrui Song @ 2022-04-16 18:36 UTC (permalink / raw)
To: libc-alpha, Adhemerval Zanella
-fno-toplevel-reorder is a rough replacement for the legacy option
-fno-unit-at-a-time
(https://sourceware.org/pipermail/gcc-patches/2006-January/186801.html).
glibc currently requires GCC>=6.2 which assuredly has
-fno-toplevel-reorder -fno-section-anchors. Clang will use the else
branch as it does not implement -fno-toplevel-reorder.
---
config.make.in | 2 +-
configure | 6 +++---
configure.ac | 6 +++---
stdio-common/Makefile | 4 ++--
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/config.make.in b/config.make.in
index bf728c71c0..65e1f46da4 100644
--- a/config.make.in
+++ b/config.make.in
@@ -68,7 +68,7 @@ have-selinux = @have_selinux@
have-libaudit = @have_libaudit@
have-libcap = @have_libcap@
have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
-fno-unit-at-a-time = @fno_unit_at_a_time@
+fno-toplevel-reorder = @fno_toplevel_reorder@
bind-now = @bindnow@
have-hash-style = @libc_cv_hashstyle@
use-default-link = @use_default_link@
diff --git a/configure b/configure
index d2f413d05d..4c7b159b13 100755
--- a/configure
+++ b/configure
@@ -620,7 +620,7 @@ libc_cv_cc_loop_to_function
libc_cv_cc_submachine
libc_cv_cc_nofma
libc_cv_mtls_dialect_gnu2
-fno_unit_at_a_time
+fno_toplevel_reorder
libc_cv_has_glob_dat
libc_cv_hashstyle
libc_cv_fpie
@@ -6305,9 +6305,9 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fno_toplevel_reorder" >&5
$as_echo "$libc_cv_fno_toplevel_reorder" >&6; }
if test $libc_cv_fno_toplevel_reorder = yes; then
- fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
+ fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
else
- fno_unit_at_a_time=-fno-unit-at-a-time
+ fno_toplevel_reorder=
fi
diff --git a/configure.ac b/configure.ac
index b6a747dece..bdff5981c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1460,11 +1460,11 @@ else
fi
rm -f conftest*])
if test $libc_cv_fno_toplevel_reorder = yes; then
- fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
+ fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
else
- fno_unit_at_a_time=-fno-unit-at-a-time
+ fno_toplevel_reorder=
fi
-AC_SUBST(fno_unit_at_a_time)
+AC_SUBST(fno_toplevel_reorder)
AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
[dnl
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 435cd8904f..6de2dd84ce 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -333,8 +333,8 @@ CFLAGS-isoc99_vfscanf.c += -fexceptions
CFLAGS-isoc99_vscanf.c += -fexceptions
CFLAGS-isoc99_fscanf.c += -fexceptions
CFLAGS-isoc99_scanf.c += -fexceptions
-CFLAGS-errlist.c += $(fno-unit-at-a-time)
-CFLAGS-siglist.c += $(fno-unit-at-a-time)
+CFLAGS-errlist.c += $(fno-toplevel-reorder)
+CFLAGS-siglist.c += $(fno-toplevel-reorder)
# scanf14a.c and scanf16a.c test a deprecated extension which is no
# longer visible under most conformance levels; see the source files
--
2.36.0.rc0.470.gd361397f0d-goog
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder
2022-04-16 18:36 [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder Fangrui Song
@ 2022-05-01 7:10 ` Fāng-ruì Sòng
2022-05-04 18:34 ` Adhemerval Zanella
1 sibling, 0 replies; 4+ messages in thread
From: Fāng-ruì Sòng @ 2022-05-01 7:10 UTC (permalink / raw)
To: libc-alpha, Adhemerval Zanella
On Sat, Apr 16, 2022 at 11:36 AM Fangrui Song <maskray@google.com> wrote:
>
> -fno-toplevel-reorder is a rough replacement for the legacy option
> -fno-unit-at-a-time
> (https://sourceware.org/pipermail/gcc-patches/2006-January/186801.html).
> glibc currently requires GCC>=6.2 which assuredly has
> -fno-toplevel-reorder -fno-section-anchors. Clang will use the else
> branch as it does not implement -fno-toplevel-reorder.
> ---
> config.make.in | 2 +-
> configure | 6 +++---
> configure.ac | 6 +++---
> stdio-common/Makefile | 4 ++--
> 4 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/config.make.in b/config.make.in
> index bf728c71c0..65e1f46da4 100644
> --- a/config.make.in
> +++ b/config.make.in
> @@ -68,7 +68,7 @@ have-selinux = @have_selinux@
> have-libaudit = @have_libaudit@
> have-libcap = @have_libcap@
> have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
> -fno-unit-at-a-time = @fno_unit_at_a_time@
> +fno-toplevel-reorder = @fno_toplevel_reorder@
> bind-now = @bindnow@
> have-hash-style = @libc_cv_hashstyle@
> use-default-link = @use_default_link@
> diff --git a/configure b/configure
> index d2f413d05d..4c7b159b13 100755
> --- a/configure
> +++ b/configure
> @@ -620,7 +620,7 @@ libc_cv_cc_loop_to_function
> libc_cv_cc_submachine
> libc_cv_cc_nofma
> libc_cv_mtls_dialect_gnu2
> -fno_unit_at_a_time
> +fno_toplevel_reorder
> libc_cv_has_glob_dat
> libc_cv_hashstyle
> libc_cv_fpie
> @@ -6305,9 +6305,9 @@ fi
> { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fno_toplevel_reorder" >&5
> $as_echo "$libc_cv_fno_toplevel_reorder" >&6; }
> if test $libc_cv_fno_toplevel_reorder = yes; then
> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
> else
> - fno_unit_at_a_time=-fno-unit-at-a-time
> + fno_toplevel_reorder=
> fi
>
>
> diff --git a/configure.ac b/configure.ac
> index b6a747dece..bdff5981c1 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1460,11 +1460,11 @@ else
> fi
> rm -f conftest*])
> if test $libc_cv_fno_toplevel_reorder = yes; then
> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
> else
> - fno_unit_at_a_time=-fno-unit-at-a-time
> + fno_toplevel_reorder=
> fi
> -AC_SUBST(fno_unit_at_a_time)
> +AC_SUBST(fno_toplevel_reorder)
>
> AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
> [dnl
> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index 435cd8904f..6de2dd84ce 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -333,8 +333,8 @@ CFLAGS-isoc99_vfscanf.c += -fexceptions
> CFLAGS-isoc99_vscanf.c += -fexceptions
> CFLAGS-isoc99_fscanf.c += -fexceptions
> CFLAGS-isoc99_scanf.c += -fexceptions
> -CFLAGS-errlist.c += $(fno-unit-at-a-time)
> -CFLAGS-siglist.c += $(fno-unit-at-a-time)
> +CFLAGS-errlist.c += $(fno-toplevel-reorder)
> +CFLAGS-siglist.c += $(fno-toplevel-reorder)
>
> # scanf14a.c and scanf16a.c test a deprecated extension which is no
> # longer visible under most conformance levels; see the source files
> --
> 2.36.0.rc0.470.gd361397f0d-goog
>
Ping
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder
2022-04-16 18:36 [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder Fangrui Song
2022-05-01 7:10 ` Fāng-ruì Sòng
@ 2022-05-04 18:34 ` Adhemerval Zanella
2022-05-11 18:57 ` Fangrui Song
1 sibling, 1 reply; 4+ messages in thread
From: Adhemerval Zanella @ 2022-05-04 18:34 UTC (permalink / raw)
To: Fangrui Song, libc-alpha
On 16/04/2022 15:36, Fangrui Song wrote:
> -fno-toplevel-reorder is a rough replacement for the legacy option
> -fno-unit-at-a-time
> (https://sourceware.org/pipermail/gcc-patches/2006-January/186801.html).
> glibc currently requires GCC>=6.2 which assuredly has
> -fno-toplevel-reorder -fno-section-anchors. Clang will use the else
> branch as it does not implement -fno-toplevel-reorder.
I don't see much improvement here, it just trades one option by another.
Maybe a better approach would to reorganize the code to avoid requiring
special compiler options.
I did it for the gcc clang work [1], so check-abi is clean.
[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/fno-unit-at-fime-removal
> ---
> config.make.in | 2 +-
> configure | 6 +++---
> configure.ac | 6 +++---
> stdio-common/Makefile | 4 ++--
> 4 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/config.make.in b/config.make.in
> index bf728c71c0..65e1f46da4 100644
> --- a/config.make.in
> +++ b/config.make.in
> @@ -68,7 +68,7 @@ have-selinux = @have_selinux@
> have-libaudit = @have_libaudit@
> have-libcap = @have_libcap@
> have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
> -fno-unit-at-a-time = @fno_unit_at_a_time@
> +fno-toplevel-reorder = @fno_toplevel_reorder@
> bind-now = @bindnow@
> have-hash-style = @libc_cv_hashstyle@
> use-default-link = @use_default_link@
> diff --git a/configure b/configure
> index d2f413d05d..4c7b159b13 100755
> --- a/configure
> +++ b/configure
> @@ -620,7 +620,7 @@ libc_cv_cc_loop_to_function
> libc_cv_cc_submachine
> libc_cv_cc_nofma
> libc_cv_mtls_dialect_gnu2
> -fno_unit_at_a_time
> +fno_toplevel_reorder
> libc_cv_has_glob_dat
> libc_cv_hashstyle
> libc_cv_fpie
> @@ -6305,9 +6305,9 @@ fi
> { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fno_toplevel_reorder" >&5
> $as_echo "$libc_cv_fno_toplevel_reorder" >&6; }
> if test $libc_cv_fno_toplevel_reorder = yes; then
> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
> else
> - fno_unit_at_a_time=-fno-unit-at-a-time
> + fno_toplevel_reorder=
> fi
>
>
> diff --git a/configure.ac b/configure.ac
> index b6a747dece..bdff5981c1 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1460,11 +1460,11 @@ else
> fi
> rm -f conftest*])
> if test $libc_cv_fno_toplevel_reorder = yes; then
> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
> else
> - fno_unit_at_a_time=-fno-unit-at-a-time
> + fno_toplevel_reorder=
> fi
> -AC_SUBST(fno_unit_at_a_time)
> +AC_SUBST(fno_toplevel_reorder)
>
> AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
> [dnl
> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index 435cd8904f..6de2dd84ce 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -333,8 +333,8 @@ CFLAGS-isoc99_vfscanf.c += -fexceptions
> CFLAGS-isoc99_vscanf.c += -fexceptions
> CFLAGS-isoc99_fscanf.c += -fexceptions
> CFLAGS-isoc99_scanf.c += -fexceptions
> -CFLAGS-errlist.c += $(fno-unit-at-a-time)
> -CFLAGS-siglist.c += $(fno-unit-at-a-time)
> +CFLAGS-errlist.c += $(fno-toplevel-reorder)
> +CFLAGS-siglist.c += $(fno-toplevel-reorder)
>
> # scanf14a.c and scanf16a.c test a deprecated extension which is no
> # longer visible under most conformance levels; see the source files
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder
2022-05-04 18:34 ` Adhemerval Zanella
@ 2022-05-11 18:57 ` Fangrui Song
0 siblings, 0 replies; 4+ messages in thread
From: Fangrui Song @ 2022-05-11 18:57 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
On 2022-05-04, Adhemerval Zanella wrote:
>
>
>On 16/04/2022 15:36, Fangrui Song wrote:
>> -fno-toplevel-reorder is a rough replacement for the legacy option
>> -fno-unit-at-a-time
>> (https://sourceware.org/pipermail/gcc-patches/2006-January/186801.html).
>> glibc currently requires GCC>=6.2 which assuredly has
>> -fno-toplevel-reorder -fno-section-anchors. Clang will use the else
>> branch as it does not implement -fno-toplevel-reorder.
>
>I don't see much improvement here, it just trades one option by another.
>Maybe a better approach would to reorganize the code to avoid requiring
>special compiler options.
The patch ensures the legacy -fno-unit-at-a-time option is no longer used.
With the GNU as patch https://sourceware.org/pipermail/binutils/2022-April/120311.html (gas: copy st_size only if unset)
and the LLVM integrated assembler patch https://reviews.llvm.org/D123283 ([MC][ELF] Improve st_size propagation rule),
the glibc code as is is robust enough.
Removing -fno-toplevel-reorder needs the unreleased binutils 2.39, so fno-toplevel-reorder can be kept for now.
>I did it for the gcc clang work [1], so check-abi is clean.
>
>[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/fno-unit-at-fime-removal
This will be fine, too.
>> ---
>> config.make.in | 2 +-
>> configure | 6 +++---
>> configure.ac | 6 +++---
>> stdio-common/Makefile | 4 ++--
>> 4 files changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/config.make.in b/config.make.in
>> index bf728c71c0..65e1f46da4 100644
>> --- a/config.make.in
>> +++ b/config.make.in
>> @@ -68,7 +68,7 @@ have-selinux = @have_selinux@
>> have-libaudit = @have_libaudit@
>> have-libcap = @have_libcap@
>> have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
>> -fno-unit-at-a-time = @fno_unit_at_a_time@
>> +fno-toplevel-reorder = @fno_toplevel_reorder@
>> bind-now = @bindnow@
>> have-hash-style = @libc_cv_hashstyle@
>> use-default-link = @use_default_link@
>> diff --git a/configure b/configure
>> index d2f413d05d..4c7b159b13 100755
>> --- a/configure
>> +++ b/configure
>> @@ -620,7 +620,7 @@ libc_cv_cc_loop_to_function
>> libc_cv_cc_submachine
>> libc_cv_cc_nofma
>> libc_cv_mtls_dialect_gnu2
>> -fno_unit_at_a_time
>> +fno_toplevel_reorder
>> libc_cv_has_glob_dat
>> libc_cv_hashstyle
>> libc_cv_fpie
>> @@ -6305,9 +6305,9 @@ fi
>> { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fno_toplevel_reorder" >&5
>> $as_echo "$libc_cv_fno_toplevel_reorder" >&6; }
>> if test $libc_cv_fno_toplevel_reorder = yes; then
>> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
>> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
>> else
>> - fno_unit_at_a_time=-fno-unit-at-a-time
>> + fno_toplevel_reorder=
>> fi
>>
>>
>> diff --git a/configure.ac b/configure.ac
>> index b6a747dece..bdff5981c1 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -1460,11 +1460,11 @@ else
>> fi
>> rm -f conftest*])
>> if test $libc_cv_fno_toplevel_reorder = yes; then
>> - fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
>> + fno_toplevel_reorder="-fno-toplevel-reorder -fno-section-anchors"
>> else
>> - fno_unit_at_a_time=-fno-unit-at-a-time
>> + fno_toplevel_reorder=
>> fi
>> -AC_SUBST(fno_unit_at_a_time)
>> +AC_SUBST(fno_toplevel_reorder)
>>
>> AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
>> [dnl
>> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
>> index 435cd8904f..6de2dd84ce 100644
>> --- a/stdio-common/Makefile
>> +++ b/stdio-common/Makefile
>> @@ -333,8 +333,8 @@ CFLAGS-isoc99_vfscanf.c += -fexceptions
>> CFLAGS-isoc99_vscanf.c += -fexceptions
>> CFLAGS-isoc99_fscanf.c += -fexceptions
>> CFLAGS-isoc99_scanf.c += -fexceptions
>> -CFLAGS-errlist.c += $(fno-unit-at-a-time)
>> -CFLAGS-siglist.c += $(fno-unit-at-a-time)
>> +CFLAGS-errlist.c += $(fno-toplevel-reorder)
>> +CFLAGS-siglist.c += $(fno-toplevel-reorder)
>>
>> # scanf14a.c and scanf16a.c test a deprecated extension which is no
>> # longer visible under most conformance levels; see the source files
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-05-11 18:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-16 18:36 [PATCH] Change fno-unit-at-a-time to fno-toplevel-reorder Fangrui Song
2022-05-01 7:10 ` Fāng-ruì Sòng
2022-05-04 18:34 ` Adhemerval Zanella
2022-05-11 18:57 ` Fangrui Song
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).