This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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]

[RFA] Fix corefile-write support for Unixware



This patch makes writing of corefiles work on Unixware, 
plus silences a few compiler warnings by adding prototype declarations.

2002-02-11  Michael Snyder  <msnyder@redhat.com>

	* elf-bfd.h (elfcore_write_lwpstatus): Add prototype.
	* elf.c (elfcore_grok_pstatus): Add prototype.
	(elfcore_grok_lwpstatus): Add prototype.
	(elfcore_write_lwpstatus): New function.
	(elfcore_write_pstatus): Fix typo, eliminate unnecessary memcpy.

Index: elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.66
diff -c -3 -p -r1.66 elf-bfd.h
*** elf-bfd.h	2002/01/21 10:29:07	1.66
--- elf-bfd.h	2002/02/12 00:50:10
*************** extern char *elfcore_write_prfpreg 
*** 1531,1536 ****
--- 1531,1538 ----
    PARAMS ((bfd *, char *, int *, void *, int));
  extern char *elfcore_write_prxfpreg 
    PARAMS ((bfd *, char *, int *, void *, int));
+ extern char *elfcore_write_lwpstatus 
+   PARAMS ((bfd*, char*, int*, long, int, void*));
  
  /* MIPS ELF specific routines.  */
  
Index: elf.c
===================================================================
RCS file: /cvs/src/src/bfd/elf.c,v
retrieving revision 1.127
diff -c -3 -p -r1.127 elf.c
*** elf.c	2002/01/30 10:31:28	1.127
--- elf.c	2002/02/12 00:50:10
*************** elfcore_grok_psinfo (abfd, note)
*** 6148,6153 ****
--- 6148,6155 ----
  #endif /* defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T) */
  
  #if defined (HAVE_PSTATUS_T)
+ static boolean elfcore_grok_pstatus PARAMS ((bfd *, Elf_Internal_Note *));
+ 
  static boolean
  elfcore_grok_pstatus (abfd, note)
       bfd *abfd;
*************** elfcore_grok_pstatus (abfd, note)
*** 6185,6190 ****
--- 6187,6194 ----
  #endif /* defined (HAVE_PSTATUS_T) */
  
 #if defined (HAVE_LWPSTATUS_T)
+ static boolean elfcore_grok_lwpstatus PARAMS ((bfd *, Elf_Internal_Note *));
+ 
  static boolean
  elfcore_grok_lwpstatus (abfd, note)
       bfd *abfd;
*************** elfcore_write_prstatus (abfd, buf, bufsi
*** 6598,6603 ****
--- 6602,6639 ----
  }
  #endif /* HAVE_PRSTATUS_T */
  
+ #if defined (HAVE_LWPSTATUS_T)
+ char *
+ elfcore_write_lwpstatus (abfd, buf, bufsiz, pid, cursig, gregs)
+      bfd *abfd;
+      char *buf;
+      int *bufsiz;
+      long pid;
+      int cursig;
+      void *gregs;
+ {
+   lwpstatus_t lwpstat;
+   char *note_name = "CORE";
+ 
+   memset (&lwpstat, 0, sizeof (lwpstat));
+   lwpstat.pr_lwpid  = pid >> 16;
+   lwpstat.pr_cursig = cursig;
+ #if defined (HAVE_LWPSTATUS_T_PR_REG)
+   memcpy (lwpstat.pr_reg, gregs, sizeof (lwpstat.pr_reg));
+ #elif defined (HAVE_LWPSTATUS_T_PR_CONTEXT)
+ #if !defined(gregs)
+   memcpy (lwpstat.pr_context.uc_mcontext.gregs,
+ 	  gregs, sizeof (lwpstat.pr_context.uc_mcontext.gregs));
+ #else
+   memcpy (lwpstat.pr_context.uc_mcontext.__gregs,
+ 	  gregs, sizeof (lwpstat.pr_context.uc_mcontext.__gregs));
+ #endif
+ #endif
+   return elfcore_write_note (abfd, buf, bufsiz, note_name, 
+ 			     NT_LWPSTATUS, &lwpstat, sizeof (lwpstat));
+ }
+ #endif /* HAVE_LWPSTATUS_T */
+ 
  #if defined (HAVE_PSTATUS_T)
  char *
  elfcore_write_pstatus (abfd, buf, bufsiz, pid, cursig, gregs)
*************** elfcore_write_pstatus (abfd, buf, bufsiz
*** 6611,6621 ****
    pstatus_t pstat;
    char *note_name = "CORE";
  
!   memset (&pstat, 0, sizeof (prstat));
!   pstat.pr_pid = pid;
!   memcpy (pstat.pr_reg, gregs, sizeof (pstat.pr_reg));
!   return elfcore_write_note (abfd, buf, bufsiz, 
! 			     note_name, NT_PSTATUS, &pstat, sizeof (pstat));
  }
  #endif /* HAVE_PSTATUS_T */
  
--- 6647,6657 ----
    pstatus_t pstat;
    char *note_name = "CORE";
  
!   memset (&pstat, 0, sizeof (pstat));
!   pstat.pr_pid = pid & 0xffff;
!   buf = elfcore_write_note (abfd, buf, bufsiz, note_name, 
! 			    NT_PSTATUS, &pstat, sizeof (pstat));
!   return buf;
  }
  #endif /* HAVE_PSTATUS_T */
  


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