teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone
Blob Blame History Raw
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