[Bug backends/27925] riscv backend only provides return value locations for code compiled for LP64D ABI

wilson at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Wed Sep 29 17:02:42 GMT 2021


https://sourceware.org/bugzilla/show_bug.cgi?id=27925

--- Comment #11 from Jim Wilson <wilson at gcc dot gnu.org> ---
Userspace is lp64d.  The kernel is lp64.  You can't create an lp64 binary
because there are no lp64 start files or libraries.  The kernel can be linked
because it doesn't require any start files or libraries.  The riscv backend is
using the ELF header flags to determine if a binary is lp64 or lp64d, so if you
can't create an lp64 binary you can't run an lp64 test.  Similarly, you also
can't construct and run lp64f, ilp32, ilp32f, or ilp32d ABI tests for the same
reason.

The difference between lp64 and lp64d is that FP values are passed in integer
regs in the first and FP regs in the second.  If you aren't testing FP values,
then you aren't properly testing the lp64 ABI.  Though given that the kernel is
compiled soft-float, such testing would be sufficient for using elfutils with
an lp64 kernel, but not for a lp64 user space.

The best way to test the lp64 ABI support is to build an entire linux system
from scratch using an lp64 userspace.  You can then natively test the lp64
support. 
 Likewise for lp64f, ilp32, ilp32f, and ilp32d.  That is outside the scope of
this bug report.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Elfutils-devel mailing list