[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <DS7PR12MB576503711253C682DCE40524CBABA@DS7PR12MB5765.namprd12.prod.outlook.com>
Date: Sun, 5 Nov 2023 12:50:16 -0800
From: Fangrui Song <i@...kray.me>
To: Yuan Tan <tanyuan@...ylab.org>
Cc: falcon@...ylab.org, arnd@...db.de, linux-kernel@...r.kernel.org,
linux-mips@...r.kernel.org, linux-riscv@...ts.infradead.org,
luc.vanoostenryck@...il.com, linux-sparse@...r.kernel.org,
linux@...ssschuh.net, palmer@...osinc.com,
paul.walmsley@...ive.com, paulburton@...nel.org,
paulmck@...nel.org, tim.bird@...y.com, tsbogend@...ha.franken.de,
w@....eu
Subject: Re: [PATCH v1 09/14] DCE/DSE: inhibit .size directive for SHF_GROUP
On Fri, Nov 3, 2023 at 9:01 AM Yuan Tan <tanyuan@...ylab.org> wrote:
>
> .size directive fails in some functions with SHF_GROUP, this is not
> really required for normal building, inhibit it to silence the compiling
> failures with SHF_GROUP.
>
> Signed-off-by: Yuan Tan <tanyuan@...ylab.org>
> Signed-off-by: Zhangjin Wu <falcon@...ylab.org>
> ---
> Makefile | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index a4e522b747cb..f67b6e8d2c45 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -936,6 +936,9 @@ endif
> # `rustc`'s `-Zfunction-sections` applies to data too (as of 1.59.0).
> ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
> KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
> +ifdef CONFIG_SECTION_SHF_GROUP_SUPPORT
> +KBUILD_CFLAGS_KERNEL += -finhibit-size-directive
> +endif
> KBUILD_RUSTFLAGS_KERNEL += -Zfunction-sections=y
> LDFLAGS_vmlinux += --gc-sections
> ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION_DEBUG
> --
> 2.34.1
>
Clang doesn't support -finhibit-size-directive, so this would break
Clang builds.
GCC has had this option since 1992, but it is not used in the wild.
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-finhibit-size-directive
says
> ... This option is used when compiling crtstuff.c; you should not need to use it for anything else.
What problem have you seen with .size directives (st_size field in
symbol table entries)?
% cat a.c
int v;
void f() {}
% diff -u0 <(gcc -S a.c -o -) <(gcc -S -finhibit-size-directive a.c -o -)
--- /proc/self/fd/11 2023-11-05 12:42:51.298618475 -0800
+++ /proc/self/fd/15 2023-11-05 12:42:51.298618475 -0800
@@ -7 +6,0 @@
- .size v, 4
@@ -27 +25,0 @@
- .size f, .-f
Powered by blists - more mailing lists