On Sat, Nov 8, 2025 at 10:06 PM Sandra Loosemore
<[email protected]> wrote:
>
> This patch adds documentation for several options that the GCC driver
> passes to the linker via specs without further interpretation. I've
> also added some comments/documentation strings to common.opt for these
> and a couple other options that previously didn't have any.
OK.
Thanks,
Richard.
> gcc/ChangeLog
> PR other/122243
> * common.opt: Add comments/documentation for -N, -Q, -S, -T,
> -Tbss, -Tdata, -Ttext, -Z, -n, -Q, -s, -t, -z.
> * doc/invoke.texi: Add documentation for -Tbss, -Tdata, -Ttext,
> -N, -n, -t, -Z.
> ---
> gcc/common.opt | 20 +++++++++++++++++++-
> gcc/doc/invoke.texi | 25 ++++++++++++++++++++-----
> 2 files changed, 39 insertions(+), 6 deletions(-)
>
> diff --git a/gcc/common.opt b/gcc/common.opt
> index 9cbd2d8a794..cb8732d9336 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -457,6 +457,7 @@ Driver Joined Separate
>
> N
> Driver
> +Passed to the linker.
>
> O
> Common JoinedOrMissing Optimization
> @@ -478,8 +479,10 @@ Oz
> Common Optimization
> Optimize for space aggressively rather than speed.
>
> +; Driver passes -quiet to the front end if -Q is not specified.
> Q
> Driver
> +-Q --help prints what options are enabled. Just -Q enables verbose messages.
>
> Qn
> Driver Negative(Qy)
> @@ -492,27 +495,35 @@ Driver Joined Separate
>
> S
> Driver
> +Stop processing after generating assembly code; do not assemble.
>
> T
> Driver Joined Separate
> +Passed to the linker.
>
> Tbss
> Driver Separate
> +Passed to the linker.
>
> Tbss=
> Driver Joined
> +Passed to the linker.
>
> Tdata
> Driver Separate
> +Passed to the linker.
>
> Tdata=
> Driver Joined
> +Passed to the linker.
>
> Ttext
> Driver Separate
> +Passed to the linker.
>
> Ttext=
> Driver Joined
> +Passed to the linker.
>
> W
> Common RejectNegative Warning Alias(Wextra)
> @@ -929,6 +940,7 @@ Driver Separate
>
> Z
> Driver
> +Passed to the linker.
>
> aux-info
> Common Separate Var(aux_info_file_name)
> @@ -3827,6 +3839,7 @@ Driver Joined Separate
>
> n
> Driver
> +Passed to the linker.
>
> no-canonical-prefixes
> Driver
> @@ -3900,15 +3913,18 @@ Driver Var(print_sysroot)
> print-sysroot-headers-suffix
> Driver Var(print_sysroot_headers_suffix)
>
> +; The driver doesn't understand -quiet, only its inverse -Q.
> quiet
> -Common Var(quiet_flag) RejectDriver
> +Common Var(quiet_flag) RejectDriver Undocumented
> Do not display functions compiled or elapsed time.
>
> r
> Driver
> +Produce a relocatable object as output.
>
> s
> Driver
> +Remove all symbol table and relocation information from the executable.
>
> save-temps
> Driver
> @@ -3918,6 +3934,7 @@ Driver Joined
>
> t
> Driver
> +Passed to the linker.
>
> time
> Driver Var(report_times)
> @@ -4028,6 +4045,7 @@ Create a static position independent executable.
>
> z
> Driver Joined Separate
> +Passed to the linker.
>
> fipa-ra
> Common Var(flag_ipa_ra) Optimization
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 809bbc61b33..887a54e947e 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -777,7 +777,9 @@ Objective-C and Objective-C++ Dialects}.
> -static-libasan -static-libtsan -static-liblsan -static-libubsan
> -shared -shared-libgcc -symbolic
> -T @var{script} -Wl,@var{option} -Xlinker @var{option}
> --u @var{symbol} -z @var{keyword}
> +-u @var{symbol}
> +-Tbss=@var{addr} -Tdata=@var{addr} -Ttext=@var{addr}
> +-N -n -t -Z -z @var{keyword}
> --entry=@var{entry} --for-linker=@var{option}
> --force-link=@var{symbol} --no-standard-library
> --pie --static --static-pie --symbolic}
> @@ -20081,11 +20083,24 @@ Pretend the symbol @var{symbol} is undefined, to
> force linking of
> library modules to define it. You can use @option{-u} multiple times with
> different symbols to force loading of additional library modules.
>
> +@opindex Tbss
> +@opindex Tdata
> +@opindex Ttext
> +@opindex N
> +@opindex n
> +@opindex t
> +@opindex Z
> @opindex z
> -@item -z @var{keyword}
> -@option{-z} is passed directly on to the linker along with the keyword
> -@var{keyword}. See the section in the documentation of your linker for
> -permitted values and their meanings.
> +@item -Tbss=@var{addr}
> +@itemx -Tdata=@var{addr}
> +@itemx -Ttext=@var{addr}
> +@itemx -N
> +@itemx -n
> +@itemx -t
> +@itemx -Z
> +@itemx -z @var{keyword}
> +These options are passed through to the linker without interpretation by GCC.
> +Refer to your linker documentation for the meanings of these options.
> @end table
>
> @node Directory Options
> --
> 2.39.5
>