[Rpm-maint] [PATCH v2 2/2] rpmrc: Convert uname.machine == "riscv" to "riscv32"/"riscv64"/"riscv128".
Richard W.M. Jones
rjones at redhat.com
Thu Aug 11 11:16:38 UTC 2016
On RISC-V, the kernel returns uname.machine == "riscv" (for all bit
sizes). GNU is using "riscv64". Convert the kernel uname machine
type to a more suitable value.
This conversion is supposed to be done by the arch_canon table.
However the arch_canon table is not populated until after the
defaultMachine function is called for the first time, making it a bit
useless. In any case, arch_canon cannot take into account the bit
size of the architecture, but the C code here can.
---
lib/rpmrc.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
index f2e0f48..eb136d8 100644
--- a/lib/rpmrc.c
+++ b/lib/rpmrc.c
@@ -1216,6 +1216,17 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
}
# endif /* arm*-linux */
+# if defined(__linux__) && defined(__riscv__)
+ if (rstreq(un.machine, "riscv")) {
+ if (sizeof(long) == 4)
+ strcpy(un.machine, "riscv32");
+ else if (sizeof(long) == 8)
+ strcpy(un.machine, "riscv64");
+ else if (sizeof(long) == 16)
+ strcpy(un.machine, "riscv128");
+ }
+# endif /* riscv */
+
# if defined(__GNUC__) && defined(__alpha__)
{
unsigned long amask, implver;
--
2.7.4
More information about the Rpm-maint
mailing list