Sparc patch for libc 2.1.3
Jakub Jelinek
jakub@redhat.com
Thu Jan 13 02:25:00 GMT 2000
Hi!
Philip's recent arm changes seem to break sparc and I guess a bunch of other
archs as well (because from what I could see, only arm sigcontextinfo.h
includes all the headers which it uses), plus libc 2.1.3 does not want to
compile with 2.3 headers.
This patch should fix both things. I will post a patch for the main trunk
soon which will include other things as well.
2000-01-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/generic/backtrace.c: Include signal.h which
sigcontextinfo.h headers are used to expect.
* sysdeps/unix/sysv/linux/sparc/sparc32/register-dump.h
(register_dump): Fix a typo in the printout.
Avoid using reg_window, so that asm/ptrace.h is not necessary.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h
(ADVANCE_STACK_FRAME): Likewise.
--- libc-2.1/sysdeps/generic/backtrace.c.jj Mon Jan 10 11:46:54 2000
+++ libc-2.1/sysdeps/generic/backtrace.c Thu Jan 13 10:16:11 2000
@@ -19,6 +19,7 @@
Boston, MA 02111-1307, USA. */
#include <execinfo.h>
+#include <signal.h>
#include <frame.h>
#include <sigcontextinfo.h>
--- libc-2.1/sysdeps/unix/sysv/linux/sparc/sparc32/register-dump.h.jj Tue Dec 21 11:08:53 1999
+++ libc-2.1/sysdeps/unix/sysv/linux/sparc/sparc32/register-dump.h Thu Jan 13 11:14:25 2000
@@ -1,7 +1,7 @@
/* Dump registers.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 1999.
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
@@ -20,7 +20,6 @@
#include <sys/uio.h>
#include <stdio-common/_itoa.h>
-#include <asm/ptrace.h>
#include <bits/sigcontext.h>
/* We will print the register dump in this format:
@@ -95,7 +94,7 @@ register_dump (int fd, SIGCONTEXT ctx)
struct iovec iov[150];
size_t nr = 0;
int i;
- struct reg_window *r = (struct reg_window *)
+ unsigned int *r = (unsigned int *)
ctx->si_regs.u_regs[14];
#define ADD_STRING(str) \
@@ -115,7 +114,7 @@ register_dump (int fd, SIGCONTEXT ctx)
for (i = 1; i <= 15; i++)
hexvalue (ctx->si_regs.u_regs[i], regs[3+i], 8);
for (i = 0; i <= 15; i++)
- hexvalue (r->locals[i], regs[19+i], 8);
+ hexvalue (r[i], regs[19+i], 8);
hexvalue (ctx->si_mask, regs[35], 8);
/* Generate the output. */
@@ -252,7 +251,7 @@ register_dump (int fd, SIGCONTEXT ctx)
ADD_MEM (fregs[36], 16);
ADD_STRING (" f38: ");
ADD_MEM (fregs[38], 16);
- ADD_STRING (" f40: ");
+ ADD_STRING (" f40: ");
ADD_MEM (fregs[40], 16);
ADD_STRING ("\n f42: ");
ADD_MEM (fregs[42], 16);
--- libc-2.1/sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h.jj Mon Aug 23 19:51:34 1999
+++ libc-2.1/sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h Thu Jan 13 10:29:18 2000
@@ -1,6 +1,6 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 1999.
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
@@ -21,6 +21,7 @@
#define SIGCONTEXT_EXTRA_ARGS
#define GET_PC(__ctx) ((void *) ((__ctx)->si_regs.pc))
#define ADVANCE_STACK_FRAME(__next) \
- ((void *)&(((struct reg_window *) (__next))->ins[6]))
+ ((void *) (((unsigned *)(__next))+14))
+
#define GET_STACK(__ctx) ((void *) (__ctx)->si_regs.u_regs[14])
#define GET_FRAME(__ctx) ADVANCE_STACK_FRAME (GET_STACK(__ctx))
Cheers,
Jakub
___________________________________________________________________
Jakub Jelinek | jakub@redhat.com | http://sunsite.mff.cuni.cz/~jj
Linux version 2.3.39 on a sparc64 machine (1343.49 BogoMips)
___________________________________________________________________
More information about the Libc-hacker
mailing list