[PATCH v11 25/25] gnu directives: bfd: generic tests for merge of gnu attributes v2

Jan Beulich jbeulich@suse.com
Thu Jan 15 08:42:57 GMT 2026


On 14.01.2026 17:07, Matthieu Longo wrote:
> On 09/01/2026 09:42, Jan Beulich wrote:
>> On 31.12.2025 00:05, Matthieu Longo wrote:
>>> --- /dev/null
>>> +++ b/ld/testsuite/ld-attributes/oav2-1-mismatch-subsec-props-with-all-optional-1.d
>>> @@ -0,0 +1,7 @@
>>> +# name: Object Attributes v2: mismatch subsection properties with oav2-1-all-optional-1
>>> +# target: [supports_oa_v2]
>>> +# source: oav2-1-all-optional-1.s
>>> +# source: oav2-1-mismatch-subsec-props-with-all-optional-1.s
>>> +# ld: -shared
>>> +#error: \A[^\n]*oav2-1-all-optional-1\.o, [^:]*oav2-1-mismatch-subsec-props-with-all-optional-1\.o: error: parameters of subsection 'gnu_testing_ba_1_MERGE_AND' are mismatching\. \(optional, ULEB128\) VS \(required, ULEB128\)
>>> +#error: \n[^\n]*oav2-1-all-optional-1\.o, [^:]*oav2-1-mismatch-subsec-props-with-all-optional-1\.o: error: parameters of subsection 'gnu_testing_ba_2_MERGE_AND' are mismatching\. \(optional, ULEB128\) VS \(optional, NTBS\)\Z
>>
>> Such absurdly long lines (despite you already having taken care of the path
>> parts of the file names) are indications of a problem beyond testcase
>> expectations. struct bfd_link_callbacks has an "info" member, so much like
>> you've now done in gas, I think these want splitting into a shorter error
>> plus a shorter info message. There's also a wording issue imo (albeit recall
>> I'm not a native speaker): I don't think "parameters of subsection" is a
>> good way of putting things (while functions can have parameters, I don't
>> think subsections do). The word "attribute" might be ambiguous in this
>> context, but maybe "properties" would be a reasonable fit?
>>
>> Overall e.g.:
>>
>> <object1>: error: mismatched properties of subsection '<subsection>'
>> <object2>: info: conflicting subsection lives here
>> info: \(<values1>\) vs \(<values2>\)
>>
>> or
>>
>> <object1>: error: mismatched properties of subsection '<subsection>': \(<values1>\)
>> <object2>: info: conflicting subsection lives here: \(<values2>\)
>>
>> And then, as before, use .* for parts of the output not relevant for the
>> particular test (e.g. "\(optional, .*\) vs \(required, .*\)").
>>
>> Beyond this comments given on the earlier two patches apply here as well.
> 
> Here is the new revision following your approach:
> 
> #error: \A[^\n]*oav2-1-mismatch-subsec-props-with-all-optional-1\.o: error: mismatching properties of subsection 'gnu_testing_ba_1_MERGE_AND'
> #error: \n[^\n]*oav2-1-all-optional-1\.o: info: conflicting subsection lives here
> #error: \ninfo: \(required, .*\) VS \(optional, .*\)
> #error: \n[^\n]*oav2-1-mismatch-subsec-props-with-all-optional-1\.o: error: mismatching properties of subsection 'gnu_testing_ba_2_MERGE_AND'
> #error: \n[^\n]*oav2-1-all-optional-1\.o: info: conflicting subsection lives here
> #error: \ninfo: \(.*, NTBS\) VS \(.*, ULEB128\)\Z
> 
> And for mismatching attributes:
> 
> #error: \A[^\n]*oav2-2-required-subsec-B\.o: error: mismatching value for required object attribute 'GNUTestTag_1' in subsection 'gnu_testing_ba_1_MERGE_AND': 0x1
> #error: \n[^\n]*oav2-2-required-subsec-A-1\.o: info: conflicting value lives here: 0\Z
> 
> Does it look better ?

I think so. Can you live with it as well?

Just one remark on the last example: "... lives here: ..." suggests that what
follows is what "lives here" tries to reference. Maybe better "conflicting value
'<value>' lives here" ?

Jan


More information about the Binutils mailing list