[PATCH] powerpc: Fix dl-procinfo HWCAP
Carlos Eduardo Seo
cseo@linux.vnet.ibm.com
Mon Jan 18 18:23:00 GMT 2016
Hi
This is a bug fix. There are 4 unused bits in HWCAP and space must be
reserved for them in _dl_powerpc_cap_flags so the code iterates through
all the 32 capabilities, otherwise you may get a wrong AT_HWCAP
displayed when LD_SHOW_AUXV=1.
If possible, I'd like this in 2.23.
Regards,
--
Carlos Eduardo Seo
Software Engineer - Linux on Power Toolchain
cseo@linux.vnet.ibm.com
-------------- next part --------------
From c90f857f571e222ac60478e3ed26f978042947b8 Mon Sep 17 00:00:00 2001
From: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Date: Mon, 28 Dec 2015 16:36:46 -0200
Subject: [PATCH] powerpc: Fix dl-procinfo HWCAP.
HWCAP-related code should had been updated when the 32 bits of HWCAP were
used. This patch updates the code in dl-procinfo.h to loop through all the 32
bits in HWCAP and updates _dl_powerpc_cap_flags accordignly.
2016-01-18 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.c:
(_dl_powerpc_cap_flags): Updated to reflect the entire 32-bit HWCAP.
* sysdeps/powerpc/dl-procinfo.h: Code cleanup.
(_DL_HWCAP_FIRST): Removed. Replaced by 0 accordignly.
---
sysdeps/powerpc/dl-procinfo.c | 5 +++--
sysdeps/powerpc/dl-procinfo.h | 9 +++------
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
index a8df5b8..5604366 100644
--- a/sysdeps/powerpc/dl-procinfo.c
+++ b/sysdeps/powerpc/dl-procinfo.c
@@ -45,11 +45,12 @@
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags
#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[60][10]
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[64][10]
#endif
#ifndef PROCINFO_DECL
= {
- "ppcle", "true_le", "archpmu", "vsx",
+ "ppcle", "true_le", "", "",
+ "", "", "archpmu", "vsx",
"arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index 407149b..80e70e5 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -22,9 +22,6 @@
#include <ldsodefs.h>
#include <sysdep.h> /* This defines the PPC_FEATURE[2]_* macros. */
-/* There are 28 bits used, but they are bits 4..31. */
-#define _DL_HWCAP_FIRST 4
-
/* The total number of available bits (including those prior to
_DL_HWCAP_FIRST). Some of these bits might not be used. */
#define _DL_HWCAP_COUNT 64
@@ -68,7 +65,7 @@ static inline const char *
__attribute__ ((unused))
_dl_hwcap_string (int idx)
{
- return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST];
+ return GLRO(dl_powerpc_cap_flags)[idx];
}
static inline const char *
@@ -82,7 +79,7 @@ static inline int
__attribute__ ((unused))
_dl_string_hwcap (const char *str)
{
- for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
+ for (int i = 0; i < _DL_HWCAP_COUNT; ++i)
if (strcmp (str, _dl_hwcap_string (i)) == 0)
return i;
return -1;
@@ -180,7 +177,7 @@ _dl_procinfo (unsigned int type, unsigned long int word)
case AT_HWCAP:
_dl_printf ("AT_HWCAP: ");
- for (int i = _DL_HWCAP_FIRST; i <= _DL_HWCAP_LAST; ++i)
+ for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
if (word & (1 << i))
_dl_printf (" %s", _dl_hwcap_string (i));
break;
--
2.5.4 (Apple Git-61)
More information about the Libc-alpha
mailing list