[PATCH] gas: Add --compress-debug-sections=force

Tom de Vries tdevries@suse.de
Mon Feb 27 11:43:09 GMT 2023


[ was: Re: [PATCH] gas: Add --force-compress-debug-sections ]

On 2/27/23 10:03, Jan Beulich wrote:
> On 24.02.2023 15:57, Tom de Vries wrote:
>> On 2/24/23 15:26, Jan Beulich wrote:
>>> On 24.02.2023 15:11, Tom de Vries wrote:
>>>> On 2/24/23 14:23, Jan Beulich wrote:
>>>>> On 24.02.2023 13:21, Tom de Vries wrote:
>>>>>> On 2/24/23 12:28, Jan Beulich wrote:
>>>>>>> I also wouldn't see anything wrong with something
>>>>>>> like "...=force,zstd,none" - the last one(s) win. That's no different
>>>>>>> from specifying a second instance of the option. And without that it
>>>>>>> looks as if the parsing would end up simpler.
>>>>>>
>>>>>> OK, gave that a try.
>>>>>
>>>>> That's still accumulating none and force across the entire sequence
>>>>> (and then giving none priority over force, no matter that force may
>>>>> have been specified last),
>>>>
>>>> Um, so you're saying that none+zstd+force is currently interpreted as none?
>>>>
>>>> Lets try:
>>>> ...
>>>> $ gcc ~/hello.c -c -Wa,-gdwarf-5 -Xassembler
>>>> --compress-debug-sections=none+zstd+force
>>>> $ readelf -S -W hello.o | grep " .debug"
>>>>      [ 9] .debug_line       PROGBITS        0000a8 000064 00   C  0   0  8
>>>>      [11] .debug_line_str   PROGBITS        000110 000046 01 MSC  0   0  8
>>>>      [12] .debug_info       PROGBITS        000158 000046 00   C  0   0  8
>>>>      [14] .debug_abbrev     PROGBITS        0001a0 000049 00   C  0   0  8
>>>>      [15] .debug_aranges    PROGBITS        0001f0 000034 00   C  0   0  8
>>>>      [17] .debug_str        PROGBITS        000228 00005a 01 MSC  0   0  8
>>>>
>>>> ...
>>>>
>>>> So, that doesn't seem to be the case, compression is done, as expected.
>>>
>>> Oh, I've overlooked that you explicitly clear *none when you set *force
>>> (my attention was mainly on the bottom of parse_compress_debug_optarg()).
>>> I think that's more involved than necessary (possibly merely a result of
>>> you having worked incrementally from your earlier version), and less
>>> obviously doing the same as would happen when multiple separate options
>>> were parsed.
>>
>> I've tried to simplify further.
>>
>> Is this more how you want it?
> 
> I have to admit that I'm still puzzled by the presence of
> finalize_parse_compress_debug_optarg() as well as you needing both a new
> static variable and a new global one.

The latter I've fixed, by exporting the static variable.

That eliminates one half of finalize_parse_compress_debug_optarg().

The remaining half is necessary because we accumulate "none" into 
compress_debug_action instead of into flag_compress_debug, so after 
parsing is over we need to assign the accumulation result, if it is 
indeed cda_none, to flag_compress_debug.

And the reason we have that complicated setup is related to preventing 
none from zapping compression type.

> But I guess whether that's really
> needed first of all depends on the semantics we want e.g.
> 
> --nocompress-debug-sections --compress-debug-sections=force
> 
> to have (which, with how you have it presently, could also be expressed
> as
> 
> --compress-debug-sections=none+force
> 
> or
> 
> --compress-debug-sections=none --compress-debug-sections=force
> 
> afaict). I view the present meaning as one sensible one, but I could
> also see "none" (or equivalent) simply zapping the compression type
> (and hence rendering "force" meaningless) as another sensible one.

Sure, that's another possible semantics.

Should I implement that instead?

> A
> change in meaning may then also result in the three option combinations
> above possibly not all doing the same.
> 

> As an aside: As you update the patch, please try to keep the title in
> line with what the patch actually does.
> 

I'm assuming you mean the email title (the patch title looks ok to me), 
and I've updated it.

> Also, ftaod, I don't mean to stand in the way of another maintainer
> approving any of the forms proposed so far. This specifically also
> includes the use of '+' as a separator, which I personally don't
> (currently) intend to approve.

Well, in case that's blocking you from giving approval, I've updated the 
patch to use the ',' separator.

Thanks,
- Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-gas-Add-compress-debug-sections-force.patch
Type: text/x-patch
Size: 9714 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20230227/3f82765f/attachment.bin>


More information about the Binutils mailing list