This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.28.9000-478-g1616d03


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  1616d034b61622836d3a36af53dcfca7624c844e (commit)
      from  61595e3d36ded374f97961503e843a314b0203c2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1616d034b61622836d3a36af53dcfca7624c844e

commit 1616d034b61622836d3a36af53dcfca7624c844e
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Wed Dec 19 19:03:12 2018 -0200

    Print cache size and geometry auxv types on LD_SHOW_AUXV=1
    
    Add support for AT_L1I_CACHESIZE, AT_L1I_CACHEGEOMETRY,
    AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY, AT_L2_CACHESIZE,
    AT_L2_CACHEGEOMETRY, AT_L3_CACHESIZE and AT_L3_CACHEGEOMETRY when
    LD_SHOW_AUXV=1.
    
    AT_L*_CACHESIZE is printed as decimal and represent the number of
    bytes of the cache.
    
    AT_L*_CACHEGEOMETRY is treated in order to specify the cache line size
    and its associativity.
    
    Example output from a POWER8:
    
    AT_L1I_CACHESIZE:     32768
    AT_L1I_CACHEGEOMETRY: 128B line size, 8-way set associative
    AT_L1D_CACHESIZE:     65536
    AT_L1D_CACHEGEOMETRY: 128B line size, 8-way set associative
    AT_L2_CACHESIZE:      524288
    AT_L2_CACHEGEOMETRY:  128B line size, 8-way set associative
    AT_L3_CACHESIZE:      8388608
    AT_L3_CACHEGEOMETRY:  128B line size, 8-way set associative
    
    Some of the new types are longer than the previous ones, requiring to
    increase the indentation in order to keep the values aligned.
    
    	* elf/dl-sysdep.c (auxvars): Add AT_L1I_CACHESIZE,
    	AT_L1I_CACHEGEOMETRY, AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY,
    	AT_L2_CACHESIZE, AT_L2_CACHEGEOMETRY, AT_L3_CACHESIZE and
    	AT_L3_CACHEGEOMETRY.  Fix indentation when printing the other
    	fields.
    	(_dl_show_auxv): Give a special treatment to
    	AT_L1I_CACHEGEOMETRY, AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY
    	and AT_L3_CACHEGEOMETRY.
    	* sysdeps/powerpc/dl-procinfo.h (cache_geometry): New function.
    	(_dl_procinfo): Fix indentation when printing AT_HWCAP and
    	AT_HWCAP2.  Add support for AT_L1I_CACHEGEOMETRY,
    	AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY and AT_L3_CACHEGEOMETRY.
    
    Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

diff --git a/ChangeLog b/ChangeLog
index 89ad526..b03f945 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2018-12-19  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
+
+	* elf/dl-sysdep.c (auxvars): Add AT_L1I_CACHESIZE,
+	AT_L1I_CACHEGEOMETRY, AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY,
+	AT_L2_CACHESIZE, AT_L2_CACHEGEOMETRY, AT_L3_CACHESIZE and
+	AT_L3_CACHEGEOMETRY.  Fix indentation when printing the other
+	fields.
+	(_dl_show_auxv): Give a special treatment to
+	AT_L1I_CACHEGEOMETRY, AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY
+	and AT_L3_CACHEGEOMETRY.
+	* sysdeps/powerpc/dl-procinfo.h (cache_geometry): New function.
+	(_dl_procinfo): Fix indentation when printing AT_HWCAP and
+	AT_HWCAP2.  Add support for AT_L1I_CACHEGEOMETRY,
+	AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY and AT_L3_CACHEGEOMETRY.
+
 2018-12-19  Andreas Schwab  <schwab@suse.de>
 
 	* nscd/connections.c (check_use): Don't abort on invalid len.
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index 998c5d5..9398325 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -277,38 +277,46 @@ _dl_show_auxv (void)
     {
       static const struct
       {
-	const char label[17];
+	const char label[22];
 	enum { unknown = 0, dec, hex, str, ignore } form : 8;
       } auxvars[] =
 	{
-	  [AT_EXECFD - 2] =		{ "EXECFD:       ", dec },
-	  [AT_EXECFN - 2] =		{ "EXECFN:       ", str },
-	  [AT_PHDR - 2] =		{ "PHDR:         0x", hex },
-	  [AT_PHENT - 2] =		{ "PHENT:        ", dec },
-	  [AT_PHNUM - 2] =		{ "PHNUM:        ", dec },
-	  [AT_PAGESZ - 2] =		{ "PAGESZ:       ", dec },
-	  [AT_BASE - 2] =		{ "BASE:         0x", hex },
-	  [AT_FLAGS - 2] =		{ "FLAGS:        0x", hex },
-	  [AT_ENTRY - 2] =		{ "ENTRY:        0x", hex },
-	  [AT_NOTELF - 2] =		{ "NOTELF:       ", hex },
-	  [AT_UID - 2] =		{ "UID:          ", dec },
-	  [AT_EUID - 2] =		{ "EUID:         ", dec },
-	  [AT_GID - 2] =		{ "GID:          ", dec },
-	  [AT_EGID - 2] =		{ "EGID:         ", dec },
-	  [AT_PLATFORM - 2] =		{ "PLATFORM:     ", str },
-	  [AT_HWCAP - 2] =		{ "HWCAP:        ", hex },
-	  [AT_CLKTCK - 2] =		{ "CLKTCK:       ", dec },
-	  [AT_FPUCW - 2] =		{ "FPUCW:        ", hex },
-	  [AT_DCACHEBSIZE - 2] =	{ "DCACHEBSIZE:  0x", hex },
-	  [AT_ICACHEBSIZE - 2] =	{ "ICACHEBSIZE:  0x", hex },
-	  [AT_UCACHEBSIZE - 2] =	{ "UCACHEBSIZE:  0x", hex },
+	  [AT_EXECFD - 2] =		{ "EXECFD:            ", dec },
+	  [AT_EXECFN - 2] =		{ "EXECFN:            ", str },
+	  [AT_PHDR - 2] =		{ "PHDR:              0x", hex },
+	  [AT_PHENT - 2] =		{ "PHENT:             ", dec },
+	  [AT_PHNUM - 2] =		{ "PHNUM:             ", dec },
+	  [AT_PAGESZ - 2] =		{ "PAGESZ:            ", dec },
+	  [AT_BASE - 2] =		{ "BASE:              0x", hex },
+	  [AT_FLAGS - 2] =		{ "FLAGS:             0x", hex },
+	  [AT_ENTRY - 2] =		{ "ENTRY:             0x", hex },
+	  [AT_NOTELF - 2] =		{ "NOTELF:            ", hex },
+	  [AT_UID - 2] =		{ "UID:               ", dec },
+	  [AT_EUID - 2] =		{ "EUID:              ", dec },
+	  [AT_GID - 2] =		{ "GID:               ", dec },
+	  [AT_EGID - 2] =		{ "EGID:              ", dec },
+	  [AT_PLATFORM - 2] =		{ "PLATFORM:          ", str },
+	  [AT_HWCAP - 2] =		{ "HWCAP:             ", hex },
+	  [AT_CLKTCK - 2] =		{ "CLKTCK:            ", dec },
+	  [AT_FPUCW - 2] =		{ "FPUCW:             ", hex },
+	  [AT_DCACHEBSIZE - 2] =	{ "DCACHEBSIZE:       0x", hex },
+	  [AT_ICACHEBSIZE - 2] =	{ "ICACHEBSIZE:       0x", hex },
+	  [AT_UCACHEBSIZE - 2] =	{ "UCACHEBSIZE:       0x", hex },
 	  [AT_IGNOREPPC - 2] =		{ "IGNOREPPC", ignore },
-	  [AT_SECURE - 2] =		{ "SECURE:       ", dec },
-	  [AT_BASE_PLATFORM - 2] =	{ "BASE_PLATFORM:", str },
-	  [AT_SYSINFO - 2] =		{ "SYSINFO:      0x", hex },
-	  [AT_SYSINFO_EHDR - 2] =	{ "SYSINFO_EHDR: 0x", hex },
-	  [AT_RANDOM - 2] =		{ "RANDOM:       0x", hex },
-	  [AT_HWCAP2 - 2] =		{ "HWCAP2:       0x", hex },
+	  [AT_SECURE - 2] =		{ "SECURE:            ", dec },
+	  [AT_BASE_PLATFORM - 2] =	{ "BASE_PLATFORM:     ", str },
+	  [AT_SYSINFO - 2] =		{ "SYSINFO:           0x", hex },
+	  [AT_SYSINFO_EHDR - 2] =	{ "SYSINFO_EHDR:      0x", hex },
+	  [AT_RANDOM - 2] =		{ "RANDOM:            0x", hex },
+	  [AT_HWCAP2 - 2] =		{ "HWCAP2:            0x", hex },
+	  [AT_L1I_CACHESIZE - 2] =	{ "L1I_CACHESIZE:     ", dec },
+	  [AT_L1I_CACHEGEOMETRY - 2] =	{ "L1I_CACHEGEOMETRY: 0x", hex },
+	  [AT_L1D_CACHESIZE - 2] =	{ "L1D_CACHESIZE:     ", dec },
+	  [AT_L1D_CACHEGEOMETRY - 2] =	{ "L1D_CACHEGEOMETRY: 0x", hex },
+	  [AT_L2_CACHESIZE - 2] =	{ "L2_CACHESIZE:      ", dec },
+	  [AT_L2_CACHEGEOMETRY - 2] =	{ "L2_CACHEGEOMETRY:  0x", hex },
+	  [AT_L3_CACHESIZE - 2] =	{ "L3_CACHESIZE:      ", dec },
+	  [AT_L3_CACHEGEOMETRY - 2] =	{ "L3_CACHEGEOMETRY:  0x", hex },
 	};
       unsigned int idx = (unsigned int) (av->a_type - 2);
 
@@ -320,7 +328,9 @@ _dl_show_auxv (void)
       assert (AT_NULL == 0);
       assert (AT_IGNORE == 1);
 
-      if (av->a_type == AT_HWCAP || av->a_type == AT_HWCAP2)
+      if (av->a_type == AT_HWCAP || av->a_type == AT_HWCAP2
+	  || AT_L1I_CACHEGEOMETRY || AT_L1D_CACHEGEOMETRY
+	  || AT_L2_CACHEGEOMETRY || AT_L3_CACHEGEOMETRY)
 	{
 	  /* These are handled in a special way per platform.  */
 	  if (_dl_procinfo (av->a_type, av->a_un.a_val) == 0)
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index 3803379..34bf80d 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -147,6 +147,37 @@ _dl_string_platform (const char *str)
 }
 
 #if IS_IN (rtld)
+static inline void
+cache_geometry (const char * name, unsigned long int geometry)
+{
+  unsigned long int assocty, line;
+
+  _dl_printf ("%s", name);
+
+  line = geometry & 0xffff;
+  assocty = (geometry >> 16) & 0xffff;
+
+  if (line == 0)
+    _dl_printf ("Unknown line size, ");
+  else
+    _dl_printf ("%luB line size, ", line);
+
+  switch (assocty)
+    {
+    case 0:
+      _dl_printf ("Unknown associativity");
+      break;
+    case 1:
+      _dl_printf ("Directly mapped");
+      break;
+    case 0xffff:
+      _dl_printf ("Fully associative");
+      break;
+    default:
+      _dl_printf ("%lu-way set associative", assocty);
+    }
+}
+
 static inline int
 __attribute__ ((unused))
 _dl_procinfo (unsigned int type, unsigned long int word)
@@ -154,7 +185,7 @@ _dl_procinfo (unsigned int type, unsigned long int word)
   switch(type)
     {
     case AT_HWCAP:
-      _dl_printf ("AT_HWCAP:       ");
+      _dl_printf ("AT_HWCAP:            ");
 
       for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
        if (word & (1 << i))
@@ -164,7 +195,7 @@ _dl_procinfo (unsigned int type, unsigned long int word)
       {
        unsigned int offset = _DL_HWCAP_LAST + 1;
 
-       _dl_printf ("AT_HWCAP2:      ");
+       _dl_printf ("AT_HWCAP2:           ");
 
         /* We have to go through them all because the kernel added the
           AT_HWCAP2 features starting with the high bits.  */
@@ -173,6 +204,26 @@ _dl_procinfo (unsigned int type, unsigned long int word)
            _dl_printf (" %s", _dl_hwcap_string (offset + i));
        break;
       }
+    case AT_L1I_CACHEGEOMETRY:
+      {
+	cache_geometry ("AT_L1I_CACHEGEOMETRY: ", word);
+	break;
+      }
+    case AT_L1D_CACHEGEOMETRY:
+      {
+	cache_geometry ("AT_L1D_CACHEGEOMETRY: ", word);
+	break;
+      }
+    case AT_L2_CACHEGEOMETRY:
+      {
+	cache_geometry ("AT_L2_CACHEGEOMETRY:  ", word);
+	break;
+      }
+    case AT_L3_CACHEGEOMETRY:
+      {
+	cache_geometry ("AT_L3_CACHEGEOMETRY:  ", word);
+	break;
+      }
     default:
       /* This should not happen.  */
       return -1;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                     |   15 +++++++++
 elf/dl-sysdep.c               |   68 +++++++++++++++++++++++-----------------
 sysdeps/powerpc/dl-procinfo.h |   55 ++++++++++++++++++++++++++++++++-
 3 files changed, 107 insertions(+), 31 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]