[klibc] Debian #943425: klibc: [s390x] setjmp/longjmp do not save/restore all registers in use

Andreas Krebbel krebbel at linux.ibm.com
Wed May 5 23:05:40 PDT 2021


On 5/5/21 7:32 PM, Thorsten Glaser wrote:
> Hi Andreas,
> 
>>>> Jessica Clarke brought out docs saying f8‥f15 must be saved, the
>>>> other FPU registers not:
>>
>> I can confirm this. It is f8-f15 for the z/Architecture (64 bit).
> 
> thanks!
> 
>> It is f1, f3, f5, f7 for the ESA
>> architecture (32 bit) which is still supported by Glibc and GCC.
> 
> Is this what we know as s390 in Debian? (klibc saves f4 and f6 there
> currently. If so, this also needs to change.)

f4 and f6 is correct for 32 bit. Sorry for the confusion. Here a link to the 32 bit ABI:
https://refspecs.linuxfoundation.org/ELF/zSeries/lzsabi0_s390.html

Andreas

> 
>>>> … GCC chooses to allocate an FPU register for a pointer value.
>>
>> GCC will put integer values into vector registers for
>> auto-vectorization or for spilling. We also use call-clobbered FPRs as
>> save slots for GPRs in leaf-functions if can get rid of allocating a
>> stack frame that way.
> 
> Ah, interesting. Thanks!
> 
>> The vector registers are call-clobbered - exactly for the reason of
>> setjmp / longjmp. Only f8-f15 need to be saved.
> 
> Right.
> 
>> You can find the latest version of our ABI here:
>> https://github.com/IBM/s390x-abi/releases/download/v1.5/lzsabi_s390x.pdf
>>
>> However, it is still lacking the vector ABI extension. I wrote a
>> document for that which we use internally and we are working on
>> integrating it into the publicly available version.
> 
> OK, thanks for the information!
> 
>>>> @klibc list: as indicated earlier, I can provide a patch if needed
>>>> (though it should be obvious).
> 
> hpa, maks, bwh: any of you taking these two or should I send patches
> and possibly NMU klibc in Debian?
> 
> Thanks,
> //mirabilos
> 



More information about the klibc mailing list