On Wed, Feb 5, 2025 at 3:29 AM Charlie Jenkins <charlie@xxxxxxxxxxxx> wrote:
On Tue, Feb 04, 2025 at 01:04:26PM +0900, Masahiro Yamada wrote:The latter.
On Sat, Feb 1, 2025 at 6:33 AM Charlie Jenkins <charlie@xxxxxxxxxxxx> wrote:Yes it is primarily an issue with riscv GCC. I was hoping for something
On Sat, Feb 01, 2025 at 12:10:02AM +0900, Masahiro Yamada wrote:You can use INSTALL_MOD_STRIP=--strip-unneeded for all architecture if you like.
On Fri, Jan 31, 2025 at 3:54 PM Charlie Jenkins <charlie@xxxxxxxxxxxx> wrote:Adding INSTALL_MOD_STRIP="--strip-unneeded" would be sufficient for
On Thu, Jan 30, 2025 at 08:52:45PM -0700, Nathan Chancellor wrote:
On Wed, Jan 22, 2025 at 07:17:26PM -0800, Charlie Jenkins wrote:I do not believe this would cause regressions. The description on gnu
On riscv, kernel modules end up with a significant number of localIs there any sort of regression risk with this patch? If so, another
symbols. This becomes apparent when compiling modules with debug symbols
enabled. Using amdgpu.ko as an example of a large module, on riscv the
size is 754MB (no stripping), 53MB (--strip-debug), and 21MB
(--strip-unneeded). ON x86, amdgpu.ko is 482MB (no stripping), 21MB
(--strip-debug), and 20MB (--strip-unneeded).
Use --strip-unneeded instead of --strip-debug to strip modules so
decrease the size of the resulting modules. This is particularly
relevant for riscv, but also marginally aids other architectures.
Signed-off-by: Charlie Jenkins <charlie@xxxxxxxxxxxx>
option may be to give another level to INSTALL_MOD_STRIP like 2 so that
INSTALL_MOD_STRIP=1 continues to behave as before but people can easily
opt into this option. No strong opinion because I am not sure but was
not sure if it was considered.
strip is:
"Remove all symbols that are not needed for relocation processing in
addition to debugging symbols and sections stripped by --strip-debug."
The description on llvm-strip is:
"Remove from the output all local or undefined symbols that are not
required by relocations. Also remove all debug sections."
gnu strip --strip-unneeded strips slightly more aggressively but it does
not appear this causes any issues.
Regardless:Thanks!
Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx>
It is true --strip-unneeded drops a lot of compiler-generated symbols, but
it also drops real symbols that originate in the source code.
So, this would give user-visible changes for kallsyms at least.
riscv. However, this has the downside that riscv will require different
flags than other architectures to get reasonably sized modules.
I assume this is a riscv issue. Specifically, riscv gcc.
With LLVM=1, I see much smaller riscv modules using INSTALL_MOD_STRIP=1.
--strip-unneeded is needlessly aggressive for other architectures,
and I do not see a good reason to change the default.
more standardized so that other people using riscv GCC wouldn't
encounter this. Would it be reasonable to add this flag by default only
for the riscv architecture, or do you think it's just better to leave it
up to the user's choice?
INSTALL_MOD_STRIP=1 passes --strip-debug.
This is clearly documented in Documentation/kbuild/makefiles.rst
and it has worked like that for many years, with no exception.
If users want it to work differently, the flexibility is already there.
If INSTALL_MOD_STRIP=1 worked differently, silently only for riscv,
I would regard it as insane behavior.