[PATCH] gas: scfi: fix failing test on Solaris2

Jan Beulich jbeulich@suse.com
Tue Feb 6 08:30:01 GMT 2024


On 05.02.2024 23:39, Indu Bhagat wrote:
> On 2/4/24 23:32, Jan Beulich wrote:
>> On 03.02.2024 00:25, Indu Bhagat wrote:
>>> It has been observed that the run of scfi-unsupported-1 test with --x32
>>> arg on a Solaris2 x86_64 system fails:
>>>
>>> Executing on host: sh -c {../as-new  --x32 --scfi=experimental <...>/scfi-unsupported-1.s 2>&1}  /dev/null dump.out (timeout = 300)
>>> spawn [open ...]
>>> Assembler messages:
>>> Fatal error: no compiled in support for 32bit x86_64
>>> regexp_diff match failure
>>> regexp "^Fatal error: SCFI is not supported for this ABI$"
>>> line   "Fatal error: no compiled in support for 32bit x86_64"
>>> FAIL: x86_64 scfi-unsupported-1
>>>
>>> Fix the above by adding a check for --x32 support before running the
>>> test.
>>
>> While okay as-is for the purpose at hand, I still have two questions:
>>
>>> --- a/gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp
>>> +++ b/gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp
>>> @@ -14,6 +14,14 @@
>>>   # along with this program; if not, write to the Free Software
>>>   # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
>>>   
>>> +proc gas_x32_check { } {
>>> +    global NM
>>> +    global NMFLAGS
>>> +
>>> +    set status [gas_host_run "$NM $NMFLAGS --help" ""]
>>> +    return [regexp "targets:.*elf32-x86-64" [lindex $status 1]];
>>> +}
>>> +
>>>   if { ![is_elf_format] } then {
>>>       return
>>>   }
>>> @@ -40,8 +48,11 @@ if  { ([istarget "x86_64-*-*"] && ![istarget "x86_64-*-linux*-gnux32"]) } then {
>>>       run_list_test "scfi-fp-diag-2" "--scfi=experimental"
>>>       run_list_test "scfi-diag-2" "--scfi=experimental"
>>>   
>>> +    if { [gas_x32_check] } then {
>>> +	run_list_test "scfi-unsupported-1" "--x32 --scfi=experimental"
>>> +    }
>>>       run_list_test "scfi-unsupported-1" "--32 --scfi=experimental"
>>
>> Did it occur to you that this would better also be wrapped in a similar
>> check, seeing that gas/i386/x86-64.exp also uses such a conditional?
> 
> I saw that, but I couldn't see why gas_32_check would fail if [istarget 
> "x86_64-*-*"] is true.
> 
> IIUC, BFD64 must be defined for the case when "if [istarget 
> "x86_64-*-*"] is true".  So seeing the stubs in gas/config/tc-i386.c, I 
> concluded that --32 should be supported at this point in the 
> scfi-x86-64.exp. Looks like I am missing something ?

While BFD64 is a prereq to building 64-bit code, it says nothing about
the supported object formats in a particular build. Conceivably there
might be builds which support only 64-bit ELF, at which point use of
--32 would fail just like what was observed with --x32.

Jan


More information about the Binutils mailing list