[PATCH v11 23/25] gnu directives: gas/readelf tests for gnu attributes v2

Jan Beulich jbeulich@suse.com
Thu Jan 15 08:14:10 GMT 2026


On 14.01.2026 17:36, Matthieu Longo wrote:
> On 09/01/2026 09:19, Jan Beulich wrote:
>> On 31.12.2025 00:05, Matthieu Longo wrote:
>>> --- /dev/null
>>> +++ b/gas/testsuite/gas/gnu-attributes/oav2-interleaved-subsections.d
>>> @@ -0,0 +1,34 @@
>>> +# name: GNU attributes v2: correct context switching between interleaved subsections
>>> +# target: [supports_oa_v2]
>>> +# readelf: -A
>>> +
>>> +Subsections:
>>> + - Name:	  foo_1
>>> +   Scope:	  private
>>> +   Length:	  20
>>> +   Comprehension: optional
>>> +   Encoding:	  ULEB128
>>> +   Values:
>>> +    Tag_unknown_1:	1 \(0x1\)
>>> +    Tag_unknown_2:	0 \(0x0\)
>>> +    Tag_unknown_3:	0 \(0x0\)
>>> +    Tag_unknown_4:	0 \(0x0\)
>>> +
>>> + - Name:	  gnu_abi
>>> +   Scope:	  public
>>> +   Length:	  18
>>> +   Comprehension: required
>>> +   Encoding:	  ULEB128
>>> +   Values:
>>> +    Tag_unknown_1:	1 \(0x1\)
>>> +    Tag_unknown_2:	1 \(0x1\)
>>> +
>>> + - Name:	  gnu_feature_and_bits
>>> +   Scope:	  public
>>> +   Length:	  33
>>> +   Comprehension: optional
>>> +   Encoding:	  ULEB128
>>> +   Values:
>>> +    Tag_unknown_0:	1 \(0x1\)
>>> +    Tag_unknown_1:	0 \(0x0\)
>>> +    Tag_unknown_2:	1 \(0x1\)
>>
>> Similar remark here (applicable elsewhere as well): This looks to be a verbatim
>> copy of readelf output, just with backslashes added as needed. I don't think it
>> needs to be as tight for the purpose of the test. E.g. the secondary (hex)
>> printing of numbers could be matched by .* instead. Whether e.g. the precise
>> values for Length: are a required part of the test I can't tell. The exact way
>> blank padding is effected also doesn't look to be relevant for the test.
> 
> Is the below what you meant ?

Almost. While ...

>   - Name:[	 ]+gnu_abi
>     Scope:[	 ]+public
>     Length:[	 ]+18
>     Comprehension:[	 ]+required
>     Encoding:[	 ]+ULEB128
>     Values:

... up to here indentation may indeed matter (to match the dash-prefixed Name:),
...

>      Tag_unknown_1:[	 ]+1 .*
>      Tag_unknown_2:[	 ]+1 .*

... here it doesn't anymore, so would want to be

[	 ]+Tag_unknown_1:[	 ]+1 .*

or the easier

 +Tag_unknown_1:[	 ]+1 .*

> Regarding the length, it is part of the tests. It allowed me in the past to detect some bugs, so I would prefer to keep it.

Okay, thanks for clarifying.

> Regarding the whitespaces, it seems to me that this change is making the tests less readable. It would also argue that it is more difficult to maintain as I usually append the new output of readelf to the file, and try to rework the minimum.

I understand that the use of [	 ] hampers readability some. Yet that's imo a
fair price to pay to keep the need for future changes down. After all at some
point someone may want to make

- Name:	  foo_1
  Scope:	  private
  Length:	  20
  Comprehension: optional
  Encoding:	  ULEB128

into reliably padded

- Name:          foo_1
  Scope:         private
  Length:        20
  Comprehension: optional
  Encoding:      ULEB128

(arguably this may want doing right away, albeit it may end up a little tricky
with translation). Such a change better wouldn't require to alter the
expectations, imo at least (it would be a purely cosmetic change, without any
effect on the data presented to the user).

Jan


More information about the Binutils mailing list