* hpux-core.c: New file; backend for HP/UX style core files.

* bfd.c (struct _bfd): Renamed hppa_core_data field to
	hpux_core_data.
	* bfd-in2.h: Updated.
	* hppa.c (make_bfd_asection, hppa_core_file_p,
	hppa_core_file_failing_command, hppa_core_file_failing_signal,
	hppa_core_file_matches_executable_p): Moved into hpux-core.c.
	Removed from target vector.
	* libhppa.h (struct hppa_core_struct and accessor macros): Moved
	into hpux-core.c.
	* targets.c: If HPUX_CORE is defined, add hpux_core_vec to
	target list.
	* config/hp300.mh (HDEFINES): Set to -DHPUX_CORE.
	(HDEPFILES): Set to hpux-core.o.
	* config/hppabsd.mh, config/hppahpux.mh: Likewise.
	* hosts/hp300.h (HOST_HP300HPUX): Define.
	* Makefile.in (OPTIONAL_BACKENDS): Added sco-core.o,
	aix386-core.o, hpux-core.o.
	(sco-core.o, aix386-core.o, hpux-core.o): New dependencies.
This commit is contained in:
Ian Lance Taylor 1993-07-22 19:39:41 +00:00
parent 88b457e59a
commit a643e6260e
6 changed files with 46 additions and 136 deletions

View file

@ -1,5 +1,25 @@
Thu Jul 22 13:34:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* hpux-core.c: New file; backend for HP/UX style core files.
* bfd.c (struct _bfd): Renamed hppa_core_data field to
hpux_core_data.
* bfd-in2.h: Updated.
* hppa.c (make_bfd_asection, hppa_core_file_p,
hppa_core_file_failing_command, hppa_core_file_failing_signal,
hppa_core_file_matches_executable_p): Moved into hpux-core.c.
Removed from target vector.
* libhppa.h (struct hppa_core_struct and accessor macros): Moved
into hpux-core.c.
* targets.c: If HPUX_CORE is defined, add hpux_core_vec to
target list.
* config/hp300.mh (HDEFINES): Set to -DHPUX_CORE.
(HDEPFILES): Set to hpux-core.o.
* config/hppabsd.mh, config/hppahpux.mh: Likewise.
* hosts/hp300.h (HOST_HP300HPUX): Define.
* Makefile.in (OPTIONAL_BACKENDS): Added sco-core.o,
aix386-core.o, hpux-core.o.
(sco-core.o, aix386-core.o, hpux-core.o): New dependencies.
* reloc.c (enum complain_overflow): New enumeration with the
various flavours of overflow checking.
(srtuct reloc_howto_struct): Changed complain_on_overflow field

View file

@ -102,7 +102,7 @@ BFD64_BACKENDS = \
nlm64.o nlm64-gen.o \
aout64.o demo64.o
OPTIONAL_BACKENDS = trad-core.o
OPTIONAL_BACKENDS = trad-core.o sco-core.o aix386-core.o hpux-core.o
# These are defined by configure.in:
# WORDSIZE=32
@ -452,6 +452,11 @@ reloc.o : reloc.c $(BFD_H) \
trad-core.o : trad-core.c $(BFD_H) $(INCDIR)/obstack.h \
libbfd.h libaout.h
sco-core.o : sco-core.c $(BFD_H) libbfd.h libcoff.h \
$(INCDIR)/obstack.h $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h
aix386-core.o : aix386-core.c $(BFD_H) libbfd.h libcoff.h \
$(INCDIR)/obstack.h $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h
hpux-core.o : hpux-core.c $(BFD_H) libbfd.h libhppa.h
coff-msym.o: coff-msym.c $(BFD_H) $(INCDIR)/coff/ecoff-ext.h \
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h

View file

@ -157,7 +157,7 @@ CODE_FRAGMENT
. struct sun_core_struct *sun_core_data;
. struct trad_core_struct *trad_core_data;
. struct hppa_data_struct *hppa_data;
. struct hppa_core_struct *hppa_core_data;
. struct hpux_core_struct *hpux_core_data;
. struct sgi_core_struct *sgi_core_data;
. PTR any;
. } tdata;

View file

@ -12,6 +12,8 @@
#define SEEK_SET 0
#define SEEK_CUR 1
#define HOST_HP300HPUX
#define USE_UTIME
void free();

View file

@ -511,134 +511,6 @@ hppa_sizeof_headers (abfd, reloc)
return (0);
}
static asection *
make_bfd_asection (abfd, name, flags, _raw_size, vma, alignment_power)
bfd *abfd;
CONST char *name;
flagword flags;
bfd_size_type _raw_size;
bfd_vma vma;
unsigned int alignment_power;
{
asection *asect;
asect = bfd_make_section (abfd, name);
if (!asect)
return NULL;
asect->flags = flags;
asect->_raw_size = _raw_size;
asect->vma = vma;
asect->filepos = bfd_tell (abfd);
asect->alignment_power = alignment_power;
return asect;
}
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD)
/* This requires system include files. */
static bfd_target *
hppa_core_file_p (abfd)
bfd *abfd;
{
core_hdr (abfd) = bfd_zalloc (abfd, sizeof (struct hppa_core_struct));
if (!core_hdr (abfd))
return NULL;
while (1)
{
int val;
struct corehead core_header;
val = bfd_read ((void *) &core_header, 1, sizeof core_header, abfd);
if (val <= 0)
break;
switch (core_header.type)
{
case CORE_KERNEL:
case CORE_FORMAT:
bfd_seek (abfd, core_header.len, SEEK_CUR); /* Just skip this */
break;
case CORE_EXEC:
{
struct proc_exec proc_exec;
bfd_read ((void *) &proc_exec, 1, core_header.len, abfd);
strncpy (core_command (abfd), proc_exec.cmd, MAXCOMLEN + 1);
}
break;
case CORE_PROC:
{
struct proc_info proc_info;
core_regsec (abfd) = make_bfd_asection (abfd, ".reg",
SEC_ALLOC + SEC_HAS_CONTENTS,
core_header.len,
(int) &proc_info - (int) &proc_info.hw_regs,
2);
bfd_read (&proc_info, 1, core_header.len, abfd);
core_signal (abfd) = proc_info.sig;
}
if (!core_regsec (abfd))
return NULL;
break;
case CORE_DATA:
core_datasec (abfd) = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
core_header.len,
core_header.addr,
2);
if (!core_datasec (abfd))
return NULL;
bfd_seek (abfd, core_header.len, SEEK_CUR);
break;
case CORE_STACK:
core_stacksec (abfd) = make_bfd_asection (abfd, ".stack",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
core_header.len,
core_header.addr,
2);
if (!core_stacksec (abfd))
return NULL;
bfd_seek (abfd, core_header.len, SEEK_CUR);
break;
default:
fprintf (stderr, "Unknown HPPA/HPUX core file section type %d\n",
core_header.type);
bfd_seek (abfd, core_header.len, SEEK_CUR);
break;
}
}
/* OK, we believe you. You're a core file (sure, sure). */
return abfd->xvec;
}
static char *
hppa_core_file_failing_command (abfd)
bfd *abfd;
{
return core_command (abfd);
}
/* ARGSUSED */
static int
hppa_core_file_failing_signal (abfd)
bfd *abfd;
{
return core_signal (abfd);
}
/* ARGSUSED */
static boolean
hppa_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
{
return true; /* FIXME, We have no way of telling at this point */
}
#endif /* HPUX or BSD. */
/* Miscellaneous Support Functions -- Control Structures and Functions
for the PA. */
@ -1036,6 +908,11 @@ hppa_get_symbol_info (ignore_abfd, symbol, ret)
#define hppa_bfd_make_debug_symbol \
((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
/* Core file support is in the hpux-core backend. */
#define hppa_core_file_failing_command _bfd_dummy_core_file_failing_command
#define hppa_core_file_failing_signal _bfd_dummy_core_file_failing_signal
#define hppa_core_file_matches_executable_p _bfd_dummy_core_file_matches_executable_p
bfd_target hppa_vec =
{
"hppa", /* name */
@ -1063,7 +940,7 @@ bfd_target hppa_vec =
{_bfd_dummy_target,
hppa_object_p, /* bfd_check_format */
bfd_generic_archive_p,
hppa_core_file_p,
bfd_false
},
{
bfd_false,

View file

@ -328,18 +328,20 @@ in this structure.
#if MINIMIZE && defined(DEFAULT_VECTOR) && !defined(SELECT_VECS)
#ifdef TRAD_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&trad_core_vec
#else
#endif
#ifdef SCO_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&sco_core_vec
#else
#endif
#ifdef AIX386_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&aix386_core_vec
#else
#endif
#ifdef HPUX_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&hpux_core_vec
#endif
#ifndef SELECT_VECS
#define SELECT_VECS &DEFAULT_VECTOR
#endif
#endif
#endif
#endif
/* All known xvecs. They are listed a second time below, since
we can't intermix extern's and initializers. */
@ -385,6 +387,7 @@ extern bfd_target a29kcoff_big_vec;
extern bfd_target trad_core_vec;
extern bfd_target sco_core_vec;
extern bfd_target aix386_core_vec;
extern bfd_target hpux_core_vec;
extern bfd_target rs6000coff_vec;
extern bfd_target h8300coff_vec;
extern bfd_target h8500coff_vec;
@ -480,6 +483,9 @@ bfd_target *target_vector[] = {
#ifdef AIX386_CORE
&aix386_core_vec,
#endif
#ifdef HPUX_CORE
&hpux_core_vec,
#endif
#endif /* not SELECT_VECS */
NULL, /* end of list marker */