This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB 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]

Re: [hppa-hpux] Core file support for hppa64-hp-hpux11.11


> Date: Fri, 18 Nov 2005 20:58:49 +0800
> From: Randolph Chung <randolph@tausq.org>
> 
> > Yes.  The section will come out as .core.kernel in objdump.  Perhaps
> > it should be .hp.core.kernel.  I'll leave the naming decision to you
> > and/or the binutils maintainers.  But I think that's better than
> > having all those .proc0, .proc1, .proc2 sections that we have now.
> > And it makes it easier to pick the right one from GDB.
> 
> actually there's no . prefix unless i explicitly pass one, and they will 
> look like:

Hmm, looks like I misread the code in bfd//elf.c then.

> /home/tausq/core:     file format elf64-hppa
> 
> Sections:
> Idx Name          Size      VMA               LMA               File off 
>   Algn
>    0 hp.core.version0 00000004  0000000000000000  0000000000000000 
> 00000350  2**0
>                    CONTENTS, READONLY
>    1 hp.core.kernel1 0000003c  0000000000000000  0000000000000000 
> 00000354  2**0
>                   CONTENTS, READONLY
>    2 hp.core.comm2 00000009  0000000000000000  0000000000000000 
> 00000390  2**0
>                    CONTENTS, READONLY
>    [...]
> 
> Does this match what you have in mind?

It sort of screws up the formatting doesn't it.  Perhaps something
like the attached is better; we only need the HP_CORE_KERNEL section
don't we?  This gives output like this:

/tmp/core:     file format elf64-hppa

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 proc0         00000004  0000000000000000  0000000000000000  00000350  2**0
                  CONTENTS, READONLY
  1 proc1         0000003c  0000000000000000  0000000000000000  00000354  2**0
                  CONTENTS, READONLY
  2 .kernel       0000003c  0000000000000000  0000000000000000  00000354  2**0
                  CONTENTS, READONLY
  3 proc2         00000009  0000000000000000  0000000000000000  00000390  2**0
                  CONTENTS, READONLY
  4 proc3         00000498  0000000000000000  0000000000000000  000003a0  2**0
                  CONTENTS, READONLY
  5 .reg/0        00000498  0000000000000000  0000000000000000  000003a0  2**2
                  CONTENTS
  6 .reg          00000498  0000000000000000  0000000000000000  000003a0  2**2
                  CONTENTS
  7 proc4         0000c000  8000000100000000  0000000000000000  00000838  2**0
                  CONTENTS, ALLOC, LOAD, CODE


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* elf64-hppa.c (elf64_hppa_section_from_phdr): Create .kernel
	pseudo-section.  Make sure .reg section comes after the proc
	section it's generated from.

Index: elf64-hppa.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-hppa.c,v
retrieving revision 1.66
diff -u -p -r1.66 elf64-hppa.c
--- elf64-hppa.c 18 Nov 2005 00:48:50 -0000 1.66
+++ elf64-hppa.c 18 Nov 2005 14:19:00 -0000
@@ -2652,6 +2652,22 @@ static bfd_boolean
 elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index,
 			      const char *typename)
 {
+  if (hdr->p_type == PT_HP_CORE_KERNEL)
+    {
+      asection *sect;
+
+      if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename))
+	return FALSE;
+
+      sect = bfd_make_section_anyway (abfd, ".kernel");
+      if (sect == NULL)
+	return FALSE;
+      sect->size = hdr->p_filesz;
+      sect->filepos = hdr->p_offset;
+      sect->flags = SEC_HAS_CONTENTS | SEC_READONLY;
+      return TRUE;
+    }
+
   if (hdr->p_type == PT_HP_CORE_PROC)
     {
       int sig;
@@ -2663,10 +2679,12 @@ elf64_hppa_section_from_phdr (bfd *abfd,
 
       elf_tdata (abfd)->core_signal = sig;
 
-      /* gdb uses the ".reg" section to read register contents.  */
-      if (!_bfd_elfcore_make_pseudosection (abfd, ".reg", hdr->p_filesz,
-	  				    hdr->p_offset))
+      if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename))
 	return FALSE;
+
+      /* GDB uses the ".reg" section to read register contents.  */
+      return _bfd_elfcore_make_pseudosection (abfd, ".reg", hdr->p_filesz,
+					      hdr->p_offset);
     }
 
   if (hdr->p_type == PT_HP_CORE_LOADABLE


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