[PATCH] readelf: objdump: sframe: fix dumping with section name

Jan Beulich jbeulich@suse.com
Tue Jul 22 07:43:14 GMT 2025


On 21.07.2025 22:41, Indu Bhagat wrote:
> On 7/21/25 3:36 AM, Jan Beulich wrote:
>> On 21.07.2025 08:00, Indu Bhagat wrote:
>>> On 7/20/25 10:46 PM, Jan Beulich wrote:
>>>> On 20.07.2025 07:34, Indu Bhagat via Binutils wrote:
>>>>> Fix PR binutils/33186 - No SFrame dump if section name is not .sframe
>>>>>
>>>>> When no section name is given, ensure that the dumping routines are able
>>>>> to dump a section of type SHT_GNU_SFRAME and not fail if the SFrame
>>>>> section name is not ".sframe".
>>>>>
>>>>> For objdump, in dump_dwarf_section (), use the match string of ".sframe"
>>>>> to find the corresponding debug_displays[] item for SFrame section.
>>>>> Doing this ensures that any call to dump_dwarf_section () with the
>>>>> section pointing to the SFrame section (with name possibly different
>>>>> from ".sframe") will successfully dump the SFrame section.
>>>>>
>>>>> If the SFrame section is named anything but ".sframe", the desirable
>>>>> behaviour is:
>>>>>
>>>>> $ readelf -S sort | grep sframe
>>>>>     [NN] .sframe2          GNU_SFRAME       0000000000NNNNNN  0000NNNN
>>>>> $ objdump --sframe sort
>>>>>
>>>>> sort:     file format elf64-x86-64
>>>>>
>>>>> No .sframe section present
>>>>>
>>>>> So, set dump_sframe_section_name to ".sframe" if user specifies no
>>>>> section name.  In the error checking done in dump_sframe_section, add
>>>>> the case when user specifies a valid section name but one that does not
>>>>> contain SFrame section data.
>>>>>
>>>>> Similar changes in readelf.
>>>>>
>>>>> Add a test each for objdump and readelf to dump a renamed section.  Use
>>>>> gas_sframe_check to limit the execution of these tests only when a gas
>>>>> supporting SFrame format is present.
>>>>>
>>>>> binutils/
>>>>> 	PR binutils/33186
>>>>> 	* objdump.c (dump_dwarf_section): Set match to ".sframe" which
>>>>> 	corresponds to the name in the debug_displays[] entry for
>>>>> 	SFrame section.
>>>>> 	(dump_sframe_section): Check if the user specified section name
>>>>> 	contains SFrame data.
>>>>> 	(main): Set default section name to ".sframe".
>>>>> 	* readelf.c (display_debug_section): Adjust checks to find the
>>>>> 	debug_diplay[] item for the input SFrame section in the arg.
>>>>> binutils/testsuite/
>>>>> 	PR binutils/33186
>>>>> 	* binutils-all/x86-64/objdump-sframe-01.d: New test.
>>>>> 	* binutils-all/x86-64/readelf-sframe-01.d: New test.
>>>>> 	* binutils-all/x86-64/sframe-func.s: New test.
>>>>>
>>>>> ----
>>>>>
>>>>> After the patch:
>>>>>
>>>>> $ objcopy --rename-section .sframe=.sframe2 sort
>>>>> $ $ readelf -S sort | grep sframe
>>>>>     [NN] .sframe2          GNU_SFRAME       0000000000NNNNNN  0000NNNN
>>>>>
>>>>> $ readelf  --sframe=.sframe sort
>>>>> readelf: Warning: Section '.sframe' was not dumped because it does not exist
>>>>> $ readelf  --sframe sort
>>>>> readelf: Warning: Section '.sframe' was not dumped because it does not exist
>>>>
>>>> Is this and ...
>>>>
>>>>> $ readelf  --sframe=.sframe2 sort
>>>>> Contents of the SFrame section .sframe2:
>>>>>     Header :
>>>>>
>>>>>       Version: SFRAME_VERSION_2
>>>>>      ...
>>>>> $ readelf  --sframe=.ctf sort
>>>>> Unrecognized debug section: .ctf
>>>>>
>>>>> $ objdump  --sframe=.sframe sort
>>>>> No .sframe section present
>>>>> $ objdump  --sframe sort
>>>>> No .sframe section present
>>>>
>>>> ... this really what is wanted? Shouldn't plain --sframe dump any GNU_SFRAME
>>>> sections, no matter what their names? (IOW there may want to be further test
>>>> cases covering the situation with more than one GNU_SFRAME section in an
>>>> object file.)
>>>>
>>>
>>> This is, for now, in alignment with the intention.  The options text
>>> communicated so far:
>>>
>>> $ objdump --help | grep sframe
>>>         --sframe[=SECTION]   Display SFrame info from SECTION, (default
>>> '.sframe')
>>>
>>> $ readelf --help | grep sframe
>>>     --sframe[=NAME]        Display SFrame info from section NAME,
>>> (default '.sframe')
>>
>> Hmm, this (documented or not) behavior feels pretty counterintuitive to me.
>>
> 
> I am not sure if its worth increasing the complexity at this time to 
> support an option which dumps non-".sframe" named sections or multiple 
> SHT_GNU_SFRAME Sections by default for "readelf --sframe" or "objdump 
> --sframe" at this time.
> 
> My intention was to fix the options to at least get them to work as 
> documented.

Sure, and I've re-replied to the patch itself. The impression I get is that
for readelf, no matter what doc says, your change would already lead to the
behavior I described. Am I overlooking anything?

Jan


More information about the Binutils mailing list