96 lines
2.7 KiB
Diff
96 lines
2.7 KiB
Diff
From 2426c2a066e44f4d9a342585e76cdbdb0a8a2db1 Mon Sep 17 00:00:00 2001
|
|
From: Peter Robinson <pbrobinson@gmail.com>
|
|
Date: Wed, 23 Oct 2019 20:22:19 +0100
|
|
Subject: [PATCH] Revert "Improve ARM detection"
|
|
|
|
This reverts commit 8c3a7b8fa92b49a811fe36b60857b12f5d7db8a8.
|
|
|
|
This is the final piece in fixing rhbz 1691430. It's a clean revert
|
|
so let's do that for F-31 and we can discuss the details later.
|
|
|
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
---
|
|
lib/rpmrc.c | 37 +++++++++----------------------------
|
|
1 file changed, 9 insertions(+), 28 deletions(-)
|
|
|
|
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
|
|
index 0806e1b07..cada3f788 100644
|
|
--- a/lib/rpmrc.c
|
|
+++ b/lib/rpmrc.c
|
|
@@ -82,7 +82,6 @@ struct rpmOption {
|
|
static struct rpmat_s {
|
|
const char *platform;
|
|
uint64_t hwcap;
|
|
- uint64_t hwcap2;
|
|
} rpmat;
|
|
|
|
typedef struct defaultEntry_s {
|
|
@@ -951,9 +950,6 @@ static int is_geode(void)
|
|
|
|
|
|
#if defined(__linux__)
|
|
-#ifndef AT_HWCAP2 /* glibc < 2.18 */
|
|
-#define AT_HWCAP2 26
|
|
-#endif
|
|
/**
|
|
* Populate rpmat structure with auxv values
|
|
*/
|
|
@@ -967,7 +963,6 @@ static void read_auxv(void)
|
|
if (!rpmat.platform)
|
|
rpmat.platform = "";
|
|
rpmat.hwcap = getauxval(AT_HWCAP);
|
|
- rpmat.hwcap2 = getauxval(AT_HWCAP2);
|
|
#else
|
|
rpmat.platform = "";
|
|
int fd = open("/proc/self/auxv", O_RDONLY);
|
|
@@ -989,9 +984,6 @@ static void read_auxv(void)
|
|
case AT_HWCAP:
|
|
rpmat.hwcap = auxv.a_un.a_val;
|
|
break;
|
|
- case AT_HWCAP2:
|
|
- rpmat.hwcap2 = auxv.a_un.a_val;
|
|
- break;
|
|
}
|
|
}
|
|
close(fd);
|
|
@@ -1225,27 +1217,16 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
|
|
# if !defined(HWCAP_ARM_VFPv3)
|
|
# define HWCAP_ARM_VFPv3 (1 << 13)
|
|
# endif
|
|
-# if !defined(HWCAP2_AES)
|
|
-# define HWCAP2_AES (1 << 0)
|
|
-# endif
|
|
- /*
|
|
- * un.machine is armvXE, where X is version number and E is
|
|
- * endianness (b or l)
|
|
- */
|
|
- if (rstreqn(un.machine, "armv", 4)) {
|
|
- char endian = un.machine[strlen(un.machine)-1];
|
|
- char *modifier = un.machine + 5;
|
|
- /* keep armv7, armv8, armv9, armv10, ... */
|
|
- while(risdigit(*modifier))
|
|
- modifier++;
|
|
- if (rpmat.hwcap & HWCAP_ARM_VFPv3)
|
|
- *modifier++ = 'h';
|
|
- if (rpmat.hwcap2 & HWCAP2_AES)
|
|
- *modifier++ = 'c';
|
|
+ if (rstreq(un.machine, "armv7l")) {
|
|
+ if (rpmat.hwcap & HWCAP_ARM_VFPv3) {
|
|
if (rpmat.hwcap & HWCAP_ARM_NEON)
|
|
- *modifier++ = 'n';
|
|
- *modifier++ = endian;
|
|
- *modifier++ = 0;
|
|
+ strcpy(un.machine, "armv7hnl");
|
|
+ else
|
|
+ strcpy(un.machine, "armv7hl");
|
|
+ }
|
|
+ } else if (rstreq(un.machine, "armv6l")) {
|
|
+ if (rpmat.hwcap & HWCAP_ARM_VFP)
|
|
+ strcpy(un.machine, "armv6hl");
|
|
}
|
|
# endif /* arm*-linux */
|
|
|
|
--
|
|
2.23.0
|
|
|