All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix objtool error reporting and handling of very long symbol names
@ 2023-10-05  0:08 Aaron Plattner
  2023-10-05  0:08 ` [PATCH 1/2] objtool: return the result of objtool_run() so the build fails if objtool doesn't work Aaron Plattner
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Aaron Plattner @ 2023-10-05  0:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Josh Poimboeuf, Peter Zijlstra, Aaron Plattner

Two patches in this series:

First, when objtool encounters an error, it carefully propagates the return
code all the way up to main(), which proceeds to ignore it and return 0 no
matter what. This can cause problems with objtool to be missed because the
overall build succeeds. This appears to be a regression in commit
b51277eb9775c, which dropped a call to exit(ret) when a subcommand fails.

Fix that by returning the status code from main().


Second, very long symbol names with .cold variants cause objtool to fail.
This is due to using a small max length, which in turn is due to allocating
on the stack. However, there is not actually a requirement to allocate on
the stack in this (user space) code path, and in fact, the code is cleaner
with this fix: MAX_NAME_LEN is gone and the ugly manual NULL termination
is also removed.

The net result is a more capable objtool and slightly cleaner code.


Although this fix technically only applies to drivers that generate
unusually long symbol names, typically due to using C++ (and these cases
only appear to exist outside of the kernel tree so far), I think it's still
worth applying. That's because the net result is a more capable objtool:
one that lacks an arbitrary length limit for symbol names.

For example, Rust support is being added, and drivers will be the first
users of that support. And like C++, Rust also needs to mangle names [1].
So getting rid of the name length constraint is just good hygiene.

[1] https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html 


Aaron Plattner (2):
  objtool: return the result of objtool_run() so the build fails if
    objtool doesn't work
  objtool: use strndup() to avoid the need for a maximum symbol name
    length

 tools/objtool/elf.c     | 14 ++++++--------
 tools/objtool/objtool.c |  4 +---
 2 files changed, 7 insertions(+), 11 deletions(-)

-- 
2.42.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-10-05 23:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-05  0:08 [PATCH 0/2] Fix objtool error reporting and handling of very long symbol names Aaron Plattner
2023-10-05  0:08 ` [PATCH 1/2] objtool: return the result of objtool_run() so the build fails if objtool doesn't work Aaron Plattner
2023-10-05  0:08 ` [PATCH 2/2] objtool: use strndup() to avoid the need for a maximum symbol name length Aaron Plattner
2023-10-05 23:58 ` [PATCH 0/2] Fix objtool error reporting and handling of very long symbol names Josh Poimboeuf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.