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.17-165-g8c53a12


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  8c53a12c8625f618d6ce8202861dc6f4f70940d3 (commit)
      from  4858fa2af6b597859ec418e7b37cc672d8d05707 (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://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8c53a12c8625f618d6ce8202861dc6f4f70940d3

commit 8c53a12c8625f618d6ce8202861dc6f4f70940d3
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Jan 24 00:23:13 2013 +0000

    Avoid backtrace tests matching filenames when searching for function names.

diff --git a/ChangeLog b/ChangeLog
index e6f9290..1c1011e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2013-01-23  Joseph Myers  <joseph@codesourcery.com>
+
+	* debug/tst-backtrace.h: New file.
+	* debug/tst-backtrace2.c: Include tst-backtrace.h.
+	(ret): Remove variable.
+	(x): Likewise.
+	(FAIL): Remove macro.
+	(NO_INLINE): Likewise.
+	(fn1): Use match function instead of strstr.
+	* debug/tst-backtrace3.c: Include tst-backtrace.h.
+	(ret): Remove variable.
+	(x): Likewise.
+	(FAIL): Remove macro.
+	(NO_INLINE): Likewise.
+	(fn): Use match function instead of strstr.
+	* debug/tst-backtrace4.c: Include tst-backtrace.h.
+	(ret): Remove variable.
+	(x): Likewise.
+	(FAIL): Remove macro.
+	(NO_INLINE): Likewise.
+	(handle_signal): Use match function instead of strstr.
+	* debug/tst-backtrace5.c: Include tst-backtrace.h.
+	(ret): Remove variable.
+	(x): Likewise.
+	(FAIL): Remove macro.
+	(NO_INLINE): Likewise.
+	(handle_signal): Use match function instead of strstr.
+
 2013-01-23  Roland McGrath  <roland@hack.frob.com>
 
 	* misc/sys/cdefs.h (__glibc_unlikely, __glibc_likely): Fix whitespace.
diff --git a/debug/tst-backtrace.h b/debug/tst-backtrace.h
new file mode 100644
index 0000000..0a89488
--- /dev/null
+++ b/debug/tst-backtrace.h
@@ -0,0 +1,48 @@
+/* Test backtrace and backtrace_symbols: common code for examining
+   backtraces.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Set to a non-zero value if the test fails.  */
+volatile int ret;
+
+/* Accesses to X are used to prevent optimization.  */
+volatile int x;
+
+/* Called if the test fails.  */
+#define FAIL() \
+  do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
+
+/* Use this attribute to prevent inlining, so that all expected frames
+   are present.  */
+#define NO_INLINE __attribute__ ((noinline))
+
+/* Look for a match in SYM from backtrace_symbols to NAME, a fragment
+   of a function name.  Ignore the filename before '(', but presume
+   that the function names are chosen so they cannot accidentally
+   match the hex offset before the closing ')'. */
+
+static inline bool
+match (const char *sym, const char *name)
+{
+  char *p = strchr (sym, '(');
+  return p != NULL && strstr (p, name) != NULL;
+}
diff --git a/debug/tst-backtrace2.c b/debug/tst-backtrace2.c
index e1d4572..1bdef0d 100644
--- a/debug/tst-backtrace2.c
+++ b/debug/tst-backtrace2.c
@@ -22,27 +22,15 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "tst-backtrace.h"
+
 static int do_test (void);
 #define TEST_FUNCTION do_test ()
 #include "../test-skeleton.c"
 
-/* Set to a non-zero value if the test fails.  */
-int ret;
-
-/* Accesses to X are used to prevent optimization.  */
-volatile int x;
-
-/* Called if the test fails.  */
-#define FAIL() \
-  do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
-
 /* The backtrace should include at least f1, f2, f3, and do_test.  */
 #define NUM_FUNCTIONS 4
 
-/* Use this attribute to prevent inlining, so that all expected frames
-   are present.  */
-#define NO_INLINE __attribute__ ((noinline))
-
 NO_INLINE void
 fn1 (void)
 {
@@ -71,14 +59,14 @@ fn1 (void)
   for (i = 0; i < n; ++i)
     printf ("Function %d: %s\n", i, symbols[i]);
   /* Check that the function names obtained are accurate.  */
-  if (strstr (symbols[0], "fn1") == NULL)
+  if (!match (symbols[0], "fn1"))
     {
       FAIL ();
       return;
     }
   /* Symbol names are not available for static functions, so we do not
      check f2.  */
-  if (strstr (symbols[2], "fn3") == NULL)
+  if (!match (symbols[2], "fn3"))
     {
       FAIL ();
       return;
diff --git a/debug/tst-backtrace3.c b/debug/tst-backtrace3.c
index 4d3309b..182f423 100644
--- a/debug/tst-backtrace3.c
+++ b/debug/tst-backtrace3.c
@@ -22,27 +22,15 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "tst-backtrace.h"
+
 static int do_test (void);
 #define TEST_FUNCTION do_test ()
 #include "../test-skeleton.c"
 
-/* Set to a non-zero value if the test fails.  */
-int ret;
-
-/* Accesses to X are used to prevent optimization.  */
-volatile int x;
-
-/* Called if the test fails.  */
-#define FAIL() \
-  do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
-
 /* The backtrace should include at least 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 4
 
-/* Use this attribute to prevent inlining, so that all expected frames
-   are present.  */
-#define NO_INLINE __attribute__ ((noinline))
-
 NO_INLINE int
 fn (int c)
 {
@@ -77,7 +65,7 @@ fn (int c)
     printf ("Function %d: %s\n", i, symbols[i]);
   /* Check that the function names obtained are accurate.  */
   for (i = 0; i < n - 1; ++i)
-    if (strstr (symbols[i], "fn") == NULL)
+    if (!match (symbols[i], "fn"))
       {
 	FAIL ();
 	return 1;
diff --git a/debug/tst-backtrace4.c b/debug/tst-backtrace4.c
index 41a3f51..9c0c2a2 100644
--- a/debug/tst-backtrace4.c
+++ b/debug/tst-backtrace4.c
@@ -25,28 +25,16 @@
 #include <signal.h>
 #include <unistd.h>
 
+#include "tst-backtrace.h"
+
 static int do_test (void);
 #define TEST_FUNCTION do_test ()
 #include "../test-skeleton.c"
 
-/* Set to a non-zero value if the test fails.  */
-volatile int ret;
-
-/* Accesses to X are used to prevent optimization.  */
-volatile int x;
-
-/* Called if the test fails.  */
-#define FAIL() \
-  do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
-
 /* The backtrace should include at least handle_signal, a signal
    trampoline, 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 6
 
-/* Use this attribute to prevent inlining, so that all expected frames
-   are present.  */
-#define NO_INLINE __attribute__ ((noinline))
-
 volatile int sig_handled = 0;
 
 void
@@ -79,14 +67,14 @@ handle_signal (int signum)
   for (i = 0; i < n; ++i)
     printf ("Function %d: %s\n", i, symbols[i]);
   /* Check that the function names obtained are accurate.  */
-  if (strstr (symbols[0], "handle_signal") == NULL)
+  if (!match (symbols[0], "handle_signal"))
     {
       FAIL ();
       return;
     }
   /* Do not check name for signal trampoline.  */
   for (i = 2; i < n - 1; i++)
-    if (strstr (symbols[i], "fn") == NULL)
+    if (!match (symbols[i], "fn"))
       {
 	FAIL ();
 	return;
diff --git a/debug/tst-backtrace5.c b/debug/tst-backtrace5.c
index eb16c23..ca47437 100644
--- a/debug/tst-backtrace5.c
+++ b/debug/tst-backtrace5.c
@@ -26,28 +26,16 @@
 #include <signal.h>
 #include <unistd.h>
 
+#include "tst-backtrace.h"
+
 static int do_test (void);
 #define TEST_FUNCTION do_test ()
 #include "../test-skeleton.c"
 
-/* Set to a non-zero value if the test fails.  */
-volatile int ret;
-
-/* Accesses to X are used to prevent optimization.  */
-volatile int x;
-
-/* Called if the test fails.  */
-#define FAIL() \
-  do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
-
 /* The backtrace should include at least handle_signal, a signal
    trampoline, read, 3 * fn, and do_test.  */
 #define NUM_FUNCTIONS 7
 
-/* Use this attribute to prevent inlining, so that all expected frames
-   are present.  */
-#define NO_INLINE __attribute__ ((noinline))
-
 void
 handle_signal (int signum)
 {
@@ -76,24 +64,24 @@ handle_signal (int signum)
   for (i = 0; i < n; ++i)
     printf ("Function %d: %s\n", i, symbols[i]);
   /* Check that the function names obtained are accurate.  */
-  if (strstr (symbols[0], "handle_signal") == NULL)
+  if (!match (symbols[0], "handle_signal"))
     {
       FAIL ();
       return;
     }
   /* Do not check name for signal trampoline.  */
   i = 2;
-  if (strstr (symbols[i++], "read") == NULL)
+  if (!match (symbols[i++], "read"))
     {
       /* Perhaps symbols[2] is __kernel_vsyscall?  */
-      if (strstr (symbols[i++], "read") == NULL)
+      if (!match (symbols[i++], "read"))
 	{
 	  FAIL ();
 	  return;
 	}
     }
   for (; i < n - 1; i++)
-    if (strstr (symbols[i], "fn") == NULL)
+    if (!match (symbols[i], "fn"))
       {
 	FAIL ();
 	return;

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

Summary of changes:
 ChangeLog              |   28 ++++++++++++++++++++++++++++
 debug/tst-backtrace.h  |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 debug/tst-backtrace2.c |   20 ++++----------------
 debug/tst-backtrace3.c |   18 +++---------------
 debug/tst-backtrace4.c |   20 ++++----------------
 debug/tst-backtrace5.c |   24 ++++++------------------
 6 files changed, 93 insertions(+), 65 deletions(-)
 create mode 100644 debug/tst-backtrace.h


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]