about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc64
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-01-21 14:13:04 -0800
committerDavid S. Miller <davem@davemloft.net>2013-01-21 14:15:30 -0800
commit7c1e01aabcec96173b6e276e67322125ec90dff7 (patch)
treeea47e29091c290fe359baad475699b33ddb86418 /sysdeps/sparc/sparc64
parentab087e0aa4bd9f12a73ca0b248f02d8a22d49e46 (diff)
downloadglibc-7c1e01aabcec96173b6e276e67322125ec90dff7.tar.gz
glibc-7c1e01aabcec96173b6e276e67322125ec90dff7.tar.xz
glibc-7c1e01aabcec96173b6e276e67322125ec90dff7.zip
Use libgcc unwinder for sparc backtraces, if available.
	* sysdeps/sparc/backtrace.c: New file.
	* sysdeps/sparc/sparc32/backtrace.h: New file.
	* sysdeps/sparc/sparc32/sparcv9/backtrace.h: New file.
	* sysdeps/sparc/sparc64/backtrace.h: New file.
	* sysdeps/sparc/sparc64/backtrace.c: Delete.
	* sysdeps/sparc/Makefile (CFLAGS-backtrace.c): Add
	-funwind-tables.
Diffstat (limited to 'sysdeps/sparc/sparc64')
-rw-r--r--sysdeps/sparc/sparc64/backtrace.c57
-rw-r--r--sysdeps/sparc/sparc64/backtrace.h7
2 files changed, 7 insertions, 57 deletions
diff --git a/sysdeps/sparc/sparc64/backtrace.c b/sysdeps/sparc/sparc64/backtrace.c
deleted file mode 100644
index 230ca1fa26..0000000000
--- a/sysdeps/sparc/sparc64/backtrace.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Return backtrace of current program state.
-   Copyright (C) 2008-2013 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David S. Miller <davem@davemloft.net>
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 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
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <execinfo.h>
-#include <stddef.h>
-#include <bp-checks.h>
-#include <sysdep.h>
-
-struct layout
-{
-  unsigned long locals[8];
-  unsigned long ins[6];
-  unsigned long next;
-  void *__unbounded return_address;
-};
-
-int
-__backtrace (void **array, int size)
-{
-  struct layout *current;
-  unsigned long fp;
-  int count;
-
-  asm volatile ("flushw");
-  asm volatile ("mov %%fp, %0" : "=r"(fp));
-  current = (struct layout *__unbounded) (fp + STACK_BIAS);
-  current = BOUNDED_1 (current);
-
-  for (count = 0; count < size; count++)
-    {
-      array[count] = current->return_address;
-      if (!current->next)
-	break;
-      current = (struct layout *__unbounded) (current->next + STACK_BIAS);
-      current = BOUNDED_1 (current);
-    }
-
-  return count;
-}
-weak_alias (__backtrace, backtrace)
-libc_hidden_def (__backtrace)
diff --git a/sysdeps/sparc/sparc64/backtrace.h b/sysdeps/sparc/sparc64/backtrace.h
new file mode 100644
index 0000000000..b9c95c51cf
--- /dev/null
+++ b/sysdeps/sparc/sparc64/backtrace.h
@@ -0,0 +1,7 @@
+/* Private macros for guiding the backtrace implementation, sparc64
+   version.  */
+
+#define backtrace_flush_register_windows() \
+	asm volatile ("flushw")
+
+#define BACKTRACE_STACK_BIAS	STACK_BIAS