[PATCH,V2] gas: sframe: command line option takes precedence
Indu Bhagat
indu.bhagat@oracle.com
Fri Jul 25 06:02:30 GMT 2025
On 7/24/25 10:32 PM, Jan Beulich wrote:
> On 24.07.2025 18:14, Indu Bhagat wrote:
>> On 7/24/25 8:52 AM, Jan Beulich wrote:
>>> On 24.07.2025 07:52, Indu Bhagat via Binutils wrote:
>>>> over gas directive to emit .sframe section.
>>>>
>>>> Fix PR gas/33175 sframe: --gsframe=no does not disable when
>>>> .cfi_sections directive with .sframe
>>>>
>>>> --gsframe=no should also disable generation of SFrame section when
>>>> explicit CFI directive:
>>>> .cfi_sections .sframe
>>>> is specified in the input. This means we need to track whether SFrame
>>>> generation was explcitly disabled by the user. Introduce a new enum to
>>>> facilitate disambiguation between GEN_SFRAME_CONFIG_DISABLED and
>>>> GEN_SFRAME_DISABLED.
>>>>
>>>> While fixing the bug by adding the enum, keep the upcoming requirement
>>>> in mind: we will also need to disambiguate between
>>>> --enable-default-sframe and user-specified --gsframe/--gsframe=yes. The
>>>> intent is to not display SFrame related warnings or errors like:
>>>>
>>>> as_bad (_(".sframe not supported for target"));
>>>>
>>>> for unsupported targets if --enable-default-sframe is in effect.
>>>>
>>>> This implies we need to have a four state enum (
>>>> GEN_SFRAME_CONFIG_DISABLED, GEN_SFRAME_CONFIG_ENABLED,
>>>> GEN_SFRAME_DISABLED, GEN_SFRAME_ENABLED)
>>>
>>> Before I look at the change in detail: What is the supposed behavior for
>>> every one of these? (A code comment on the enumerators would have been
>>> nice.)
>>>
>>
>> I can add code comments to reflect that. Perhaps like following (hopefully that helps answer your question too).
>
> Yes, it addresses my question.
>
>> /* PR gas/33175.
>> Add enumerators to disambiguate between configure-time
>> enablement/disablement vs user-specficied enablement/disablement (the latter
>> via command line). The expected usage of these states is: command line
>> takes precedence over configure time setting. */
>
> This could do with making things explicit as to auto-generation vs.
> .cfi_* directive induced handling.
>
OK.
Now I have:
/* PR gas/33175.
Add enumerators to disambiguate between configure-time
enablement/disablement vs user-specficied enablement/disablement
(the latter
via command line). The expected usage of these states is:
- user-specified command line takes precedence over configure-time
setting and .cfi_sections directive usage.
- .cfi_sections usage takes precedence over configure-time
setting. */
>> enum gen_sframe_option
>> {
>> /* SFrame generation disabled at configure time. Default. */
>
> And the behavior then is? By the wording, it would mean no SFrame at all,
> command line option or not. Just that there is the comment ahead of the
> enumeration. Personally, as written I'd read these as contradictory with
> one another.
>
>> GEN_SFRAME_CONFIG_DISABLED,
>
> Maybe GEN_SFRAME_CONFIG_DISABLED simply isn't a good name, as it suggests
> stronger disabling than there is. Maybe GEN_SFRAME_DEFAULT_OFF or
> GEN_SFRAME_DEFAULT_DISABLED?
>
Right. As such there will be a --enable-default-sframe or such, not
really a configure-time disablement. So, GEN_SFRAME_DEFAULT_OFF is
good. Also GEN_SFRAME_DEFAULT_NONE is OK ?
(I can send V3 soon after this is settled). But this is how it is now
after addressing your comments :
/* PR gas/33175.
Add enumerators to disambiguate between configure-time
enablement/disablement vs user-specficied enablement/disablement
(the latter
via command line). The expected usage of these states is:
- user-specified command line takes precedence over configure-time
setting and .cfi_sections directive usage.
- .cfi_sections usage takes precedence over configure-time
setting. */
enum gen_sframe_option
{
/* Default. SFrame generation not enabled at configure time. GNU as will
not generate SFrame sections by default, unless enabled by user via
command line. */
GEN_SFRAME_DEFAULT_NONE,
/* SFrame generation enabled at configure time. GNU as will generate
SFrame
sections for all objects, unless disabled by user via command
line. */
GEN_SFRAME_CONFIG_ENABLED,
/* User specified disablement via --gsframe=no. */
GEN_SFRAME_DISABLED,
/* User specified enablement via --gsframe or --gsframe=yes. */
GEN_SFRAME_ENABLED,
};
>> /* SFrame generation enabled at configure time. GNU as will generate SFrame
>> sections for all objects, unless disabled by user via command line. */
>
> I think the equivalent of the 2nd sentence here would want to be in the
> earlier comment.
>
> Jan
>
OK.
>> GEN_SFRAME_CONFIG_ENABLED,
>> /* User specified disablement via --gsframe=no. */
>> GEN_SFRAME_DISABLED,
>> /* User specified enablement via --gsframe or --gsframe=yes. */
>> GEN_SFRAME_ENABLED,
>> };
>
>
More information about the Binutils
mailing list