[PATCH v2] nm: fix treating an ifunc symbol as a stab if '--ifunc-chars=--' is given

Jan Beulich jbeulich@suse.com
Mon Sep 8 11:47:16 GMT 2025


On 05.09.2025 18:39, Dmitry Klochkov wrote:
> If an ifunc symbol is processed in print_symbol(), a 'type' field of a
> 'syminfo' structure is set to any character specified by a user with an
> '--ifunc-chars' option.  But afterwards the 'type' field is used to
> check whether a symbol is a stab in print_symbol_info_{bsd,sysv}()
> functions in order to print additional stab related data.  If the 'type'
> field equals '-', a symbol is treated as a stab.  If '--ifunc-chars=--'
> is given, all ifunc symbols will be treated as stab symbols and
> uninitialized stab related fields of the 'syminfo' structure will be
> printed which can lead to segmentation fault.
> 
> To fix this, check if a symbol is a stab before override the 'type'
> field.  Also, add a test case for this fix.
> 
> 	PR binutils/32556
> 	* nm.c (extended_symbol_info): Add is_stab.
> 	(print_symbol): Check if a symbol is a stab.
> 	(print_symbol_info_bsd): Use info->is_stab.
> 	(print_symbol_info_sysv): Use info->is_stab.
> 	* testsuite/binutils-all/nm.exp: Test nm --ifunc-chars=--.
> 
> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32556
> Fixes: e6f6aa8d184 ("Add option to nm to change the characters displayed for ifunc symbols")
> Signed-off-by: Dmitry Klochkov <dmitry.klochkov@bell-sw.com>

Okay; please let me know if this needs committing on your behalf.

I wonder though whether the other SYM_TYPE() uses aren't also at risk of
getting confused by --ifunc-type=, when "suitable" characters are picked.

Jan


More information about the Binutils mailing list