diff options
author | John Gilmore <gnu@cygnus> | 1992-11-28 13:00:18 +0000 |
---|---|---|
committer | John Gilmore <gnu@cygnus> | 1992-11-28 13:00:18 +0000 |
commit | 1f29e30b1f011b35c948b048e7f19cfa663d57d9 (patch) | |
tree | 6bdf19737e1e8dc3d65b1fc62b1c2049f892fdb5 /bfd/trad-core.c | |
parent | d4a06831c1121dc4205135127d82a3fb6d53f26b (diff) | |
download | binutils-1f29e30b1f011b35c948b048e7f19cfa663d57d9.zip binutils-1f29e30b1f011b35c948b048e7f19cfa663d57d9.tar.gz binutils-1f29e30b1f011b35c948b048e7f19cfa663d57d9.tar.bz2 |
* aout-target.h, aoutf1.h, trad-core.c, coffcode.h, libaout.h:
Eliminate all PROTO calls, replace with PARAMS for readability.
* aoutx.h: Add type to callback parameter.
* coff-mips.c: Don't call trad-core.h, not needed.
* trad-core.c: Incorporate trad-core.h declarations. Fix comments.
* trad-core.h: Eliminate, unused.
Diffstat (limited to 'bfd/trad-core.c')
-rw-r--r-- | bfd/trad-core.c | 134 |
1 files changed, 70 insertions, 64 deletions
diff --git a/bfd/trad-core.c b/bfd/trad-core.c index cd64383..990be35 100644 --- a/bfd/trad-core.c +++ b/bfd/trad-core.c @@ -1,5 +1,5 @@ /* BFD back end for traditional Unix core files (U-area and raw sections) - Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc. + Copyright 1988, 1989, 1991, 1992 Free Software Foundation, Inc. Written by John Gilmore of Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -36,26 +36,32 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <sys/param.h> #include <sys/dir.h> #include <signal.h> -#include <machine/reg.h> #include <sys/user.h> /* After a.out.h */ #include <sys/file.h> #include <errno.h> -/* These are stored in the bfd's tdata */ -struct core_data { - struct user *upage; /* core file header */ - asection *data_section; - asection *stack_section; - asection *reg_section; -}; + struct trad_core_struct + { + asection *data_section; + asection *stack_section; + asection *reg_section; + struct user u; + } *rawptr; + +#define core_upage(bfd) (&((bfd)->tdata.trad_core_data->u)) +#define core_datasec(bfd) ((bfd)->tdata.trad_core_data->data_section) +#define core_stacksec(bfd) ((bfd)->tdata.trad_core_data->stack_section) +#define core_regsec(bfd) ((bfd)->tdata.trad_core_data->reg_section) + +/* forward declarations */ -#define core_hdr(bfd) (((struct core_data *) (bfd->tdata))->hdr) -#define core_upage(bfd) (((struct core_data *) ((bfd)->tdata))->upage) -#define core_datasec(bfd) (((struct core_data *) ((bfd)->tdata))->data_section) -#define core_stacksec(bfd) (((struct core_data*)((bfd)->tdata))->stack_section) -#define core_regsec(bfd) (((struct core_data *) ((bfd)->tdata))->reg_section) +bfd_target * trad_unix_core_file_p PARAMS ((bfd *abfd)); +char * trad_unix_core_file_failing_command PARAMS ((bfd *abfd)); +int trad_unix_core_file_failing_signal PARAMS ((bfd *abfd)); +boolean trad_unix_core_file_matches_executable_p + PARAMS ((bfd *core_bfd, bfd *exec_bfd)); /* Handle 4.2-style (and perhaps also sysV-style) core dump file. */ @@ -63,16 +69,10 @@ struct core_data { bfd_target * trad_unix_core_file_p (abfd) bfd *abfd; + { int val; struct user u; - unsigned int reg_offset, fp_reg_offset; - /* This struct is just for allocating two things with one zalloc, so - they will be freed together, without violating alignment constraints. */ - struct core_user { - struct core_data coredata; - struct user u; - } *rawptr; val = bfd_read ((void *)&u, 1, sizeof u, abfd); if (val != sizeof u) @@ -89,34 +89,35 @@ trad_unix_core_file_p (abfd) /* Allocate both the upage and the struct core_data at once, so a single free() will free them both. */ - rawptr = (struct core_user *)bfd_zalloc (abfd, sizeof (struct core_user)); + rawptr = (struct trad_core_struct *) + bfd_zalloc (abfd, sizeof (struct trad_core_struct)); if (rawptr == NULL) { bfd_error = no_memory; return 0; } - set_tdata (abfd, &rawptr->coredata); - core_upage (abfd) = &rawptr->u; - *core_upage (abfd) = u; /* Save that upage! */ + abfd->tdata.trad_core_data = rawptr; + + rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */ /* Create the sections. This is raunchy, but bfd_close wants to free them separately. */ - core_stacksec (abfd) = (asection *) zalloc (sizeof (asection)); + + core_stacksec(abfd) = (asection *) zalloc (sizeof (asection)); if (core_stacksec (abfd) == NULL) { -loser: + loser: bfd_error = no_memory; free ((void *)rawptr); return 0; } core_datasec (abfd) = (asection *) zalloc (sizeof (asection)); if (core_datasec (abfd) == NULL) { -loser1: + loser1: free ((void *)core_stacksec (abfd)); goto loser; } core_regsec (abfd) = (asection *) zalloc (sizeof (asection)); if (core_regsec (abfd) == NULL) { -loser2: free ((void *)core_datasec (abfd)); goto loser1; } @@ -129,9 +130,9 @@ loser2: core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; core_regsec (abfd)->flags = SEC_ALLOC + SEC_HAS_CONTENTS; - core_datasec (abfd)->size = NBPG * u.u_dsize; - core_stacksec (abfd)->size = NBPG * u.u_ssize; - core_regsec (abfd)->size = NBPG * UPAGES; /* Larger than sizeof struct u */ + core_datasec (abfd)->_raw_size = NBPG * u.u_dsize; + core_stacksec (abfd)->_raw_size = NBPG * u.u_ssize; + core_regsec (abfd)->_raw_size = NBPG * UPAGES; /* Larger than sizeof struct u */ /* What a hack... we'd like to steal it from the exec file, since the upage does not seem to provide it. FIXME. */ @@ -148,7 +149,7 @@ loser2: from *u_ar0. The other is that u_ar0 is sometimes an absolute address in kernel memory, and on other systems it is an offset from the beginning of the `struct user'. - + As a practical matter, we don't know where the registers actually are, so we have to pass the whole area to GDB. We encode the value of u_ar0 by setting the .regs section up so that its virtual memory address @@ -159,7 +160,7 @@ loser2: core_datasec (abfd)->filepos = NBPG * UPAGES; core_stacksec (abfd)->filepos = (NBPG * UPAGES) + NBPG * u.u_dsize; - core_regsec (abfd)->filepos = 0; /* Register segment is the upage */ + core_regsec (abfd)->filepos = 0; /* Register segment is the upage */ /* Align to word at least */ core_stacksec (abfd)->alignment_power = 2; @@ -178,9 +179,12 @@ char * trad_unix_core_file_failing_command (abfd) bfd *abfd; { - if (*core_upage (abfd)->u_comm) - return core_upage (abfd)->u_comm; +#ifndef NO_CORE_COMMAND + char *com = abfd->tdata.trad_core_data->u.u_comm; + if (*com) + return com; else +#endif return 0; } @@ -205,55 +209,56 @@ trad_unix_core_file_matches_executable_p (core_bfd, exec_bfd) #define trad_unix_generic_stat_arch_elt bfd_generic_stat_arch_elt #define trad_unix_slurp_armap bfd_false #define trad_unix_slurp_extended_name_table bfd_true -#define trad_unix_write_armap (PROTO (boolean, (*), \ - (bfd *arch, unsigned int elength, struct orl *map, int orl_count, \ - int stridx))) bfd_false +#define trad_unix_write_armap (boolean (*) PARAMS \ + ((bfd *arch, unsigned int elength, struct orl *map, \ + unsigned int orl_count, int stridx))) bfd_false #define trad_unix_truncate_arname bfd_dont_truncate_arname #define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file #define trad_unix_close_and_cleanup bfd_generic_close_and_cleanup -#define trad_unix_set_section_contents (PROTO(boolean, (*), \ - (bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_false +#define trad_unix_set_section_contents (boolean (*) PARAMS \ + ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ + bfd_size_type count))) bfd_false #define trad_unix_get_section_contents bfd_generic_get_section_contents -#define trad_unix_new_section_hook (PROTO (boolean, (*), \ - (bfd *, sec_ptr))) bfd_true +#define trad_unix_new_section_hook (boolean (*) PARAMS \ + ((bfd *, sec_ptr))) bfd_true #define trad_unix_get_symtab_upper_bound bfd_0u -#define trad_unix_get_symtab (PROTO (unsigned int, (*), \ - (bfd *, struct symbol_cache_entry **))) bfd_0u -#define trad_unix_get_reloc_upper_bound (PROTO (unsigned int, (*), \ - (bfd *, sec_ptr))) bfd_0u -#define trad_unix_canonicalize_reloc (PROTO (unsigned int, (*), \ - (bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0u -#define trad_unix_make_empty_symbol (PROTO ( \ - struct symbol_cache_entry *, (*), (bfd *))) bfd_false -#define trad_unix_print_symbol (PROTO (void, (*), \ - (bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define trad_unix_get_lineno (PROTO (alent *, (*), \ - (bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define trad_unix_set_arch_mach (PROTO (boolean, (*), \ +#define trad_unix_get_symtab (unsigned int (*) PARAMS \ + ((bfd *, struct symbol_cache_entry **))) bfd_0u +#define trad_unix_get_reloc_upper_bound (unsigned int (*) PARAMS \ + ((bfd *, sec_ptr))) bfd_0u +#define trad_unix_canonicalize_reloc (unsigned int (*) PARAMS \ + ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0u +#define trad_unix_make_empty_symbol (struct symbol_cache_entry * \ + (*) ((bfd *))) bfd_false +#define trad_unix_print_symbol (void (*) PARAMS \ + ((bfd *, PTR, struct symbol_cache_entry *, \ + bfd_print_symbol_type))) bfd_false +#define trad_unix_get_lineno (alent * (*) PARAMS \ + ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr +#define trad_unix_set_arch_mach (boolean (*) PARAMS \ (bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define trad_unix_find_nearest_line (PROTO (boolean, (*), \ +#define trad_unix_find_nearest_line (boolean (*) PARAMS \ (bfd *abfd, struct sec *section, \ struct symbol_cache_entry **symbols,bfd_vma offset, \ CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define trad_unix_sizeof_headers (PROTO (int, (*), \ +#define trad_unix_sizeof_headers (int (*) PARAMS \ (bfd *, boolean))) bfd_0 #define trad_unix_bfd_debug_info_start bfd_void #define trad_unix_bfd_debug_info_end bfd_void -#define trad_unix_bfd_debug_info_accumulate (PROTO (void, (*), \ +#define trad_unix_bfd_debug_info_accumulate (void (*) PARAMS \ (bfd *, struct sec *))) bfd_void - +#define trad_unix_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents +#define trad_unix_bfd_relax_section bfd_generic_relax_section /* If somebody calls any byte-swapping routines, shoot them. */ void swap_abort() { abort(); /* This way doesn't require any declaration for ANSI to fuck up */ } -#define NO_GET ((PROTO(bfd_vma, (*), ( bfd_byte *))) swap_abort ) -#define NO_PUT ((PROTO(void, (*), (bfd_vma, bfd_byte *))) swap_abort ) +#define NO_GET ((bfd_vma (*) PARAMS (( bfd_byte *))) swap_abort ) +#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort ) bfd_target trad_core_vec = { @@ -265,6 +270,7 @@ bfd_target trad_core_vec = HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ + '_', /* symbol prefix */ ' ', /* ar_pad_char */ 16, /* ar_max_namelen */ 3, /* minimum alignment power */ |