sparc: add arch-specific libroot stubs

These are helper functions for long double math. On sparc there is no
hardware implementation of long double instructions, and the ABI defines
these methods which must be part of the C library. GCC calls the methods
directly in its generated code.

They were already added to libroot, but they also need to be in the
stub, which is used during bootstrapping to link mpfr (during the
target gcc build).

I put these in a separate file because I assume the generation of the
stubs file from the real libroot.so will usually not be run on sparc,
and will not include these symbols otherwise. This may become a problem
if libroot for different architectures starts to diverge further.

Change-Id: I6070394c685fee35b3dc12a507f5a6271571b993
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4636
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
PulkoMandy
2021-10-22 20:23:01 +00:00
committed by waddlesplash
parent e8ab10abd6
commit a9fed72b4b
2 changed files with 53 additions and 0 deletions
+2
View File
@@ -10,6 +10,8 @@ for architectureObject in [ MultiArchSubDirSetup ] {
local stubsSource ;
if $(TARGET_PACKAGING_ARCH) = x86_gcc2 {
stubsSource = [ FGristFiles libroot_stubs_legacy.c ] ;
} else if $(TARGET_PACKAGING_ARCH) = sparc {
stubsSource = [ FGristFiles libroot_stubs.c libroot_stubs_sparc.c ] ;
} else {
stubsSource = [ FGristFiles libroot_stubs.c ] ;
}
@@ -0,0 +1,51 @@
void _Qp_fgt();
void _Qp_flt();
void _Qp_fne();
void _Qp_fgt();
void _Qp_flt();
void _Qp_fgt();
void _Qp_flt();
void _Qp_fle();
void _Qp_fgt();
void _Qp_fle();
void _Qp_fle();
void _Qp_fle();
void _Qp_fle();
void _Qp_mul();
void _Qp_fne();
void _Qp_fgt();
void _Qp_fge();
void _Qp_fgt();
void _Qp_fge();
void _Qp_fge();
void _Qp_fgt();
void _Qp_fge();
void _Qp_fge();
void _Qp_mul();
void _Qp_fle();
void _Qp_fgt();
void _Qp_fge();
void _Qp_mul();
void _Qp_fgt();
void _Qp_fle();
void _Qp_fgt();
void _Qp_fle();
void _Qp_mul();
void _Qp_mul();
void _Qp_mul();
void _Qp_qtod();
void _Qp_dtoq();
void _Qp_sub();
void _Qp_fge();
void _Qp_fgt();
void _Qp_fge();
void _Qp_fgt();
void _Qp_fge();
void _Qp_fgt();
void _Qp_fge();
void _Qp_mul();
void _Qp_mul();
void _Qp_mul();
void _Qp_mul();
void _Qp_qtod();