lib: utils: Drop dependency on libgcc by importing part of FreeBSD's libquad
authorJessica Clarke <jrtc27@jrtc27.com>
Sun, 11 Jul 2021 02:28:24 +0000 (03:28 +0100)
committerAnup Patel <anup@brainfault.org>
Sun, 11 Jul 2021 15:31:44 +0000 (21:01 +0530)
commit17729d44daf879e015950b0e9636afceefea0a59
treeb367007dadc7d1c2cf3de4250addec137dc5414a
parent2942777425516f7b31181fbaecc5485263dfcb01
lib: utils: Drop dependency on libgcc by importing part of FreeBSD's libquad

We only need libgcc for 64-bit division on RV32. Whilst GCC toolchains
bundle libgcc, Clang toolchains tend not to ship libclang_rt.builtins
given every compiler is a cross-compiler for every target and so you
would need a silly number of builds of it, with only the native library
available; only vendor-provided Clang toolchains specifically for bare
metal cross-compiling are likely to provide it.

Thus, import part of FreeBSD's implementation of the division support
functions needed and stop linking against libgcc.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Tested-by: Anup Patel <anup.patel@wdc.com>
Makefile
lib/utils/libquad/divdi3.c [new file with mode: 0644]
lib/utils/libquad/include/limits.h [new file with mode: 0644]
lib/utils/libquad/include/sys/cdefs.h [new file with mode: 0644]
lib/utils/libquad/include/sys/types.h [new file with mode: 0644]
lib/utils/libquad/moddi3.c [new file with mode: 0644]
lib/utils/libquad/objects.mk [new file with mode: 0644]
lib/utils/libquad/qdivrem.c [new file with mode: 0644]
lib/utils/libquad/quad.h [new file with mode: 0644]
lib/utils/libquad/udivdi3.c [new file with mode: 0644]
lib/utils/libquad/umoddi3.c [new file with mode: 0644]