[ 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