include/elf/

* common.h (NT_SPU): Define.
bfd/
	* elf.c (elfcore_grok_spu_note): New function.
	(elf_parse_notes): Call it.
binutils/
	* readelf.c (process_note): Recognize SPU core file notes.
This commit is contained in:
Alan Modra 2007-08-25 13:20:41 +00:00
parent 043b877a95
commit b15fa79e3a
6 changed files with 58 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2007-08-25 Ulrich Weigand <uweigand@de.ibm.com>
Alan Modra <amodra@bigpond.net.au>
* elf.c (elfcore_grok_spu_note): New function.
(elf_parse_notes): Call it.
2007-08-24 H.J. Lu <hongjiu.lu@intel.com>
* elf64-x86-64.c (elf64_x86_64_relocate_section): Adjust

View File

@ -7980,6 +7980,32 @@ elfcore_grok_nto_note (bfd *abfd, Elf_Internal_Note *note)
}
}
static bfd_boolean
elfcore_grok_spu_note (bfd *abfd, Elf_Internal_Note *note)
{
char *name;
asection *sect;
size_t len;
/* Use note name as section name. */
len = note->namesz;
name = bfd_alloc (abfd, len);
if (name == NULL)
return FALSE;
memcpy (name, note->namedata, len);
name[len - 1] = '\0';
sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
if (sect == NULL)
return FALSE;
sect->size = note->descsz;
sect->filepos = note->descpos;
sect->alignment_power = 1;
return TRUE;
}
/* Function: elfcore_write_note
Inputs:
@ -8280,6 +8306,11 @@ elf_parse_notes (bfd *abfd, char *buf, size_t size, file_ptr offset)
if (! elfcore_grok_nto_note (abfd, &in))
return FALSE;
}
else if (CONST_STRNEQ (in.namedata, "SPU/"))
{
if (! elfcore_grok_spu_note (abfd, &in))
return FALSE;
}
else
{
if (! elfcore_grok_note (abfd, &in))

View File

@ -1,3 +1,7 @@
2007-08-25 Ulrich Weigand <uweigand@de.ibm.com>
* readelf.c (process_note): Recognize SPU core file notes.
2007-08-24 Daniel Jacobowitz <dan@codesourcery.com>
* configure.in: Install embedspu on powerpc*-*-eabi* also.

View File

@ -9231,6 +9231,7 @@ get_netbsd_elfcore_note_type (unsigned e_type)
static int
process_note (Elf_Internal_Note *pnote)
{
const char *name = pnote->namesz ? pnote->namedata : "(NONE)";
const char *nt;
if (pnote->namesz == 0)
@ -9246,14 +9247,19 @@ process_note (Elf_Internal_Note *pnote)
/* NetBSD-specific core file notes. */
nt = get_netbsd_elfcore_note_type (pnote->type);
else if (strneq (pnote->namedata, "SPU/", 4))
{
/* SPU-specific core file notes. */
nt = pnote->namedata + 4;
name = "SPU";
}
else
/* Don't recognize this note name; just use the default set of
note type strings. */
nt = get_note_type (pnote->type);
printf (" %s\t\t0x%08lx\t%s\n",
pnote->namesz ? pnote->namedata : "(NONE)",
pnote->descsz, nt);
printf (" %s\t\t0x%08lx\t%s\n", name, pnote->descsz, nt);
return 1;
}

View File

@ -1,3 +1,7 @@
2007-08-25 Ulrich Weigand <uweigand@de.ibm.com>
* common.h (NT_SPU): Define.
2007-08-16 H.J. Lu <hongjiu.lu@intel.com>
* common.h: Revert last change.

View File

@ -407,6 +407,10 @@
#define NT_NETBSDCORE_PROCINFO 1 /* Has a struct procinfo */
#define NT_NETBSDCORE_FIRSTMACH 32 /* start of machdep note types */
/* Note segments for core files on SPU systems. Note name
must start with "SPU/". */
#define NT_SPU 1
/* Values of note segment descriptor types for object files. */