which no longer occur.
gcc -Wall lint:
* findvar.c (symbol_read_needs_frame), corelow.c (ignore),
inflow.c (gdb_has_a_terminal): Make sure to return a value.
* regex.h: Declare re_set_syntax.
* printcmd.c: Include valprint.h.
* infcmd.c, exec.c, maint.c, core.c: Include language.h.
* maint.c: Include expression.h.
* infrun.c, fork-child.c, corelow.c, inflow.c: Include thread.h.
* inftarg.c: Include command.h.
* coredep.c: Include value.h.
* c-exp.y, m2-exp.y, ch-exp.y: Include bfd.h, symfile.h and objfiles.h.
* ch-typeprint.c: Include typeprint.h.
* ch-valprint.c: Include c-lang.h.
* nlmread.c: Include buildsym.h.
* environ.c: Include gdbcore.h. Only include defs.h once.
(set_in_environ): Cast const char * to char * when passing to
set_gnutarget.
Remove unused variables:
* printcmd.c (printf_command): args_to_vprintf.
* coffread.c (coff_symfile_init): strsection.
Move variables to within the #ifdefs where they are used:
* symtab.c (gdb_mangle_name): opname.
* inftarg.c (child_attach): pid and exec_file.
* inftarg.c (child_detach): siggnal.
* objfiles.c (allocate_objfile): mapto, md, and fd.
* objfiles.c (free_objfile): mmfd.
* infrun.c (wait_for_inferior): Include BPSTAT_WHAT_LAST in switch.
* infrun.c (wait_for_inferior): Remove unused same_pid label.
* inferior.h: Declare set_sigint_trap and clear_sigint_trap.
* parser-defs.h: Declare write_exp_elt_block.
* stabsread.h: Declare elfstab_offset_sections and
coffstab_build_psymtabs.
+Thu Oct 21 12:23:12 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * Makefile.in (c-exp.tab.o): Remove notice about shift/reduce conflicts
+ which no longer occur.
+
+ gcc -Wall lint:
+ * findvar.c (symbol_read_needs_frame), corelow.c (ignore),
+ inflow.c (gdb_has_a_terminal): Make sure to return a value.
+ * regex.h: Declare re_set_syntax.
+ * printcmd.c: Include valprint.h.
+ * infcmd.c, exec.c, maint.c, core.c: Include language.h.
+ * maint.c: Include expression.h.
+ * infrun.c, fork-child.c, corelow.c, inflow.c: Include thread.h.
+ * inftarg.c: Include command.h.
+ * coredep.c: Include value.h.
+ * c-exp.y, m2-exp.y, ch-exp.y: Include bfd.h, symfile.h and objfiles.h.
+ * ch-typeprint.c: Include typeprint.h.
+ * ch-valprint.c: Include c-lang.h.
+ * nlmread.c: Include buildsym.h.
+ * environ.c: Include gdbcore.h. Only include defs.h once.
+ (set_in_environ): Cast const char * to char * when passing to
+ set_gnutarget.
+ Remove unused variables:
+ * printcmd.c (printf_command): args_to_vprintf.
+ * coffread.c (coff_symfile_init): strsection.
+ Move variables to within the #ifdefs where they are used:
+ * symtab.c (gdb_mangle_name): opname.
+ * inftarg.c (child_attach): pid and exec_file.
+ * inftarg.c (child_detach): siggnal.
+ * objfiles.c (allocate_objfile): mapto, md, and fd.
+ * objfiles.c (free_objfile): mmfd.
+ * infrun.c (wait_for_inferior): Include BPSTAT_WHAT_LAST in switch.
+ * infrun.c (wait_for_inferior): Remove unused same_pid label.
+ * inferior.h: Declare set_sigint_trap and clear_sigint_trap.
+ * parser-defs.h: Declare write_exp_elt_block.
+ * stabsread.h: Declare elfstab_offset_sections and
+ coffstab_build_psymtabs.
+
Thu Oct 21 12:05:08 1993 Ken Raeburn (raeburn@cygnus.com)
Patch from Jeff Law:
# else.
c-exp.tab.o: c-exp.tab.c
c-exp.tab.c: c-exp.y Makefile.in
- @echo 'Expect 6 shift/reduce conflicts.'
$(YACC) $(YFLAGS) $(srcdir)/c-exp.y
-sed -e '/extern.*malloc/d' \
-e '/extern.*realloc/d' \
#include "buildsym.h" /* Our own declarations */
#undef EXTERN
+/* For cleanup_undefined_types and finish_global_stabs (somewhat
+ questionable--see comment where we call them). */
+#include "stabsread.h"
+
static int
compare_line_numbers PARAMS ((const void *, const void *));
#include "value.h"
#include "language.h"
#include "c-lang.h"
+#include "bfd.h" /* Required by objfiles.h. */
+#include "symfile.h" /* Required by objfiles.h. */
+#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
#include "value.h"
#include "parser-defs.h"
#include "ch-lang.h"
+#include "bfd.h" /* Required by objfiles.h. */
+#include "symfile.h" /* Required by objfiles.h. */
+#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
#include "language.h"
#include "demangle.h"
#include "ch-lang.h"
+#include "typeprint.h"
#include <string.h>
#include <errno.h>
#include "value.h"
#include "language.h"
#include "demangle.h"
+#include "c-lang.h" /* For c_val_print */
static void
chill_print_value_fields PARAMS ((struct type *, char *, FILE *, int, int,
coff_symfile_init (objfile)
struct objfile *objfile;
{
- asection *section, *strsection;
+ asection *section;
bfd *abfd = objfile->obfd;
/* Allocate struct to keep track of stab reading. */
#include "target.h"
#include "gdbcore.h"
#include "dis-asm.h"
+#include "language.h"
extern char registers[];
#include <sys/types.h>
#include <sys/param.h>
#include "gdbcore.h"
+#include "value.h" /* For supply_register. */
/* These are needed on various systems to expand REGISTER_U_ADDR. */
#ifndef USG
#include "bfd.h"
#include "target.h"
#include "gdbcore.h"
+#include "thread.h"
static void
core_files_info PARAMS ((struct target_ops *));
CORE_ADDR addr;
char *contents;
{
+ return 0;
}
struct target_ops core_ops = {
case LOC_OPTIMIZED_OUT:
return 0;
}
+ return 1;
}
/* Given a struct symbol for a variable,
/* eg a variable of type `float' in a 68881 register
with raw type `extended' and virtual type `double'.
Fetch it as a `double' and then convert to `float'. */
+ /* FIXME: This value will be not_lval, which means we can't assign
+ to it. Probably the right fix is to do the cast on a temporary
+ value, and just copy the VALUE_CONTENTS over. */
v = allocate_value (REGISTER_VIRTUAL_TYPE (regnum));
- memcpy (VALUE_CONTENTS_RAW (v), virtual_buffer, len);
+ memcpy (VALUE_CONTENTS_RAW (v), virtual_buffer,
+ REGISTER_VIRTUAL_SIZE (regnum));
v = value_cast (type, v);
}
else
#include "wait.h"
#include "gdbcore.h"
#include "terminal.h"
+#include "thread.h"
#include <signal.h>
* control variables.
*/
struct inferior_status {
- int pc_changed;
int stop_signal;
- int stop_pc;
+ CORE_ADDR stop_pc;
FRAME_ADDR stop_frame_address;
bpstat stop_bpstat;
int stop_step;
FRAME_ADDR selected_frame_address;
int selected_level;
char stop_registers[REGISTER_BYTES];
+
+ /* These are here because if call_function_by_hand has written some
+ registers and then decides to call error(), we better not have changed
+ any registers. */
+ char registers[REGISTER_BYTES];
+
int breakpoint_proceeded;
int restore_stack_info;
int proceed_to_finish;
extern void
restore_inferior_status PARAMS ((struct inferior_status *));
+extern void set_sigint_trap PARAMS ((void));
+extern void clear_sigint_trap PARAMS ((void));
+
/* File name for default use for standard in/out in the inferior. */
extern char *inferior_io_terminal;
extern void
terminal_ours PARAMS ((void));
-extern void
-run_stack_dummy PARAMS ((char*, CORE_ADDR, char [REGISTER_BYTES]));
+extern int run_stack_dummy PARAMS ((CORE_ADDR, char [REGISTER_BYTES]));
extern CORE_ADDR
read_pc PARAMS ((void));
detach PARAMS ((int));
extern void
-child_resume PARAMS ((int, int));
+child_resume PARAMS ((int, int, int));
#ifndef PTRACE_ARG3_TYPE
#define PTRACE_ARG3_TYPE int /* Correct definition for most systems. */
/* Range to single step within.
If this is nonzero, respond to a single-step signal
- by continuing to step if the pc is in this range. */
+ by continuing to step if the pc is in this range.
+
+ If step_range_start and step_range_end are both 1, it means to step for
+ a single instruction (FIXME: it might clean up wait_for_inferior in a
+ minor way if this were changed to the address of the instruction and
+ that address plus one. But maybe not.). */
extern CORE_ADDR step_range_start; /* Inclusive */
extern CORE_ADDR step_range_end; /* Exclusive */
extern char stop_registers[REGISTER_BYTES];
-/* Nonzero if pc has been changed by the debugger
- since the inferior stopped. */
-
-extern int pc_changed;
-
/* Nonzero if the child process in inferior_pid was attached rather
than forked. */
#define ON_STACK 1
#define BEFORE_TEXT_END 2
#define AFTER_TEXT_END 3
+#define AT_ENTRY_POINT 4
#if !defined (CALL_DUMMY_LOCATION)
#define CALL_DUMMY_LOCATION ON_STACK
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((pc) >= text_end - CALL_DUMMY_LENGTH \
&& (pc) <= text_end + DECR_PC_AFTER_BREAK)
-#else /* Not before text_end. */
+#endif /* Before text_end. */
+
#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
extern CORE_ADDR text_end;
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((pc) >= text_end \
&& (pc) <= text_end + CALL_DUMMY_LENGTH + DECR_PC_AFTER_BREAK)
-#else /* On stack. */
+#endif /* After text_end. */
+#if CALL_DUMMY_LOCATION == ON_STACK
/* Is the PC in a call dummy? SP and FRAME_ADDRESS are the bottom and
top of the stack frame which we are checking, where "bottom" and
"top" refer to some section of memory which contains the code for
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((sp) INNER_THAN (pc) && (frame_address != 0) && (pc) INNER_THAN (frame_address))
#endif /* On stack. */
-#endif /* Not before text_end. */
+
+#if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
+extern CORE_ADDR
+entry_point_address PARAMS ((void));
+#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
+ ((pc) >= entry_point_address () \
+ && (pc) <= (entry_point_address () + DECR_PC_AFTER_BREAK))
+#endif /* At entry point. */
#endif /* No PC_IN_CALL_DUMMY. */
#endif /* !defined (INFERIOR_H) */
#include "gdbcore.h"
#include "gdbcmd.h"
#include "target.h"
+#include "thread.h"
#include <signal.h>
}
}
-same_pid:
-
#ifdef NO_SINGLE_STEP
if (one_stepped)
single_step (0); /* This actually cleans up the ss */
cleanup chain, so no need to worry about it here. */
goto stop_stepping;
+ case BPSTAT_WHAT_LAST:
+ /* Not a real code, but listed here to shut up gcc -Wall. */
+
case BPSTAT_WHAT_KEEP_CHECKING:
break;
}
/* If we end up in certain places, it means we did a subroutine
call. I'm not completely sure this is necessary now that we
have the above checks with stop_func_start (and now that
- find_pc_partial_function is pickier. */
+ find_pc_partial_function is pickier). */
|| IN_SOLIB_TRAMPOLINE (stop_pc, stop_func_name)
/* If none of the above apply, it is a jump within a function,
#include "target.h"
#include "wait.h"
#include "gdbcore.h"
-
+#include "command.h"
#include <signal.h>
static void
#ifndef CHILD_WAIT
static int
-child_wait PARAMS ((int *));
+child_wait PARAMS ((int, int *));
#endif /* CHILD_WAIT */
static void
char *args;
int from_tty;
{
- char *exec_file;
- int pid;
-
if (!args)
error_no_arg ("process-id to attach");
#ifndef ATTACH_DETACH
error ("Can't attach to a process on this machine.");
#else
- pid = atoi (args);
+ {
+ char *exec_file;
+ int pid;
+
+ pid = atoi (args);
- if (pid == getpid()) /* Trying to masturbate? */
- error ("I refuse to debug myself!");
+ if (pid == getpid()) /* Trying to masturbate? */
+ error ("I refuse to debug myself!");
- if (from_tty)
- {
- exec_file = (char *) get_exec_file (0);
+ if (from_tty)
+ {
+ exec_file = (char *) get_exec_file (0);
- if (exec_file)
- printf ("Attaching to program `%s', %s\n", exec_file, target_pid_to_str (pid));
- else
- printf ("Attaching to %s\n", target_pid_to_str (pid));
+ if (exec_file)
+ printf ("Attaching to program `%s', %s\n", exec_file,
+ target_pid_to_str (pid));
+ else
+ printf ("Attaching to %s\n", target_pid_to_str (pid));
- fflush (stdout);
- }
+ fflush (stdout);
+ }
- attach (pid);
- inferior_pid = pid;
- push_target (&child_ops);
+ attach (pid);
+ inferior_pid = pid;
+ push_target (&child_ops);
+ }
#endif /* ATTACH_DETACH */
}
char *args;
int from_tty;
{
- int siggnal = 0;
-
#ifdef ATTACH_DETACH
- if (from_tty)
- {
- char *exec_file = get_exec_file (0);
- if (exec_file == 0)
- exec_file = "";
- printf ("Detaching from program: %s %s\n", exec_file,
- target_pid_to_str (inferior_pid));
- fflush (stdout);
- }
- if (args)
- siggnal = atoi (args);
-
- detach (siggnal);
- inferior_pid = 0;
- unpush_target (&child_ops); /* Pop out of handling an inferior */
+ {
+ int siggnal = 0;
+
+ if (from_tty)
+ {
+ char *exec_file = get_exec_file (0);
+ if (exec_file == 0)
+ exec_file = "";
+ printf ("Detaching from program: %s %s\n", exec_file,
+ target_pid_to_str (inferior_pid));
+ fflush (stdout);
+ }
+ if (args)
+ siggnal = atoi (args);
+
+ detach (siggnal);
+ inferior_pid = 0;
+ unpush_target (&child_ops);
+ }
#else
- error ("This version of Unix does not support detaching a process.");
+ error ("This version of Unix does not support detaching a process.");
#endif
}
#include "value.h"
#include "parser-defs.h"
#include "m2-lang.h"
+#include "bfd.h" /* Required by objfiles.h. */
+#include "symfile.h" /* Required by objfiles.h. */
+#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
#include "gdbtypes.h"
#include "demangle.h"
#include "gdbcore.h"
+#include "expression.h" /* For language.h */
+#include "language.h"
static void
maintenance_command PARAMS ((char *, int));
#include "symfile.h"
#include "objfiles.h"
#include "gdb-stabs.h"
+#include "buildsym.h"
static void
nlm_new_init PARAMS ((struct objfile *));
int mapped;
{
struct objfile *objfile = NULL;
- int fd;
- PTR md;
- CORE_ADDR mapto;
mapped |= mapped_symbol_files;
#if !defined(NO_MMALLOC) && defined(HAVE_MMAP)
+ {
- /* If we can support mapped symbol files, try to open/reopen the mapped file
- that corresponds to the file from which we wish to read symbols. If the
- objfile is to be mapped, we must malloc the structure itself using the
- mmap version, and arrange that all memory allocation for the objfile uses
- the mmap routines. If we are reusing an existing mapped file, from which
- we get our objfile pointer, we have to make sure that we update the
- pointers to the alloc/free functions in the obstack, in case these
- functions have moved within the current gdb. */
-
- fd = open_mapped_file (bfd_get_filename (abfd), bfd_get_mtime (abfd),
- mapped);
- if (fd >= 0)
- {
- if (((mapto = map_to_address ()) == 0) ||
- ((md = mmalloc_attach (fd, (PTR) mapto)) == NULL))
- {
- close (fd);
- }
- else if ((objfile = (struct objfile *) mmalloc_getkey (md, 0)) != NULL)
- {
- /* Update memory corruption handler function addresses. */
- init_malloc (md);
- objfile -> md = md;
- objfile -> mmfd = fd;
- /* Update pointers to functions to *our* copies */
- obstack_chunkfun (&objfile -> psymbol_obstack, xmmalloc);
- obstack_freefun (&objfile -> psymbol_obstack, mfree);
- obstack_chunkfun (&objfile -> symbol_obstack, xmmalloc);
- obstack_freefun (&objfile -> symbol_obstack, mfree);
- obstack_chunkfun (&objfile -> type_obstack, xmmalloc);
- obstack_freefun (&objfile -> type_obstack, mfree);
- /* If already in objfile list, unlink it. */
- unlink_objfile (objfile);
- /* Forget things specific to a particular gdb, may have changed. */
- objfile -> sf = NULL;
- }
- else
- {
- /* Set up to detect internal memory corruption. MUST be done before
- the first malloc. See comments in init_malloc() and mmcheck(). */
- init_malloc (md);
- objfile = (struct objfile *) xmmalloc (md, sizeof (struct objfile));
- memset (objfile, 0, sizeof (struct objfile));
- objfile -> md = md;
- objfile -> mmfd = fd;
- objfile -> flags |= OBJF_MAPPED;
- mmalloc_setkey (objfile -> md, 0, objfile);
- obstack_specify_allocation_with_arg (&objfile -> psymbol_obstack,
- 0, 0, xmmalloc, mfree,
- objfile -> md);
- obstack_specify_allocation_with_arg (&objfile -> symbol_obstack,
- 0, 0, xmmalloc, mfree,
- objfile -> md);
- obstack_specify_allocation_with_arg (&objfile -> type_obstack,
- 0, 0, xmmalloc, mfree,
- objfile -> md);
- }
- }
+ /* If we can support mapped symbol files, try to open/reopen the
+ mapped file that corresponds to the file from which we wish to
+ read symbols. If the objfile is to be mapped, we must malloc
+ the structure itself using the mmap version, and arrange that
+ all memory allocation for the objfile uses the mmap routines.
+ If we are reusing an existing mapped file, from which we get
+ our objfile pointer, we have to make sure that we update the
+ pointers to the alloc/free functions in the obstack, in case
+ these functions have moved within the current gdb. */
+
+ int fd;
+
+ fd = open_mapped_file (bfd_get_filename (abfd), bfd_get_mtime (abfd),
+ mapped);
+ if (fd >= 0)
+ {
+ CORE_ADDR mapto;
+ PTR md;
- if (mapped && (objfile == NULL))
- {
- warning ("symbol table for '%s' will not be mapped",
- bfd_get_filename (abfd));
- }
+ if (((mapto = map_to_address ()) == 0) ||
+ ((md = mmalloc_attach (fd, (PTR) mapto)) == NULL))
+ {
+ close (fd);
+ }
+ else if ((objfile = (struct objfile *) mmalloc_getkey (md, 0)) != NULL)
+ {
+ /* Update memory corruption handler function addresses. */
+ init_malloc (md);
+ objfile -> md = md;
+ objfile -> mmfd = fd;
+ /* Update pointers to functions to *our* copies */
+ obstack_chunkfun (&objfile -> psymbol_obstack, xmmalloc);
+ obstack_freefun (&objfile -> psymbol_obstack, mfree);
+ obstack_chunkfun (&objfile -> symbol_obstack, xmmalloc);
+ obstack_freefun (&objfile -> symbol_obstack, mfree);
+ obstack_chunkfun (&objfile -> type_obstack, xmmalloc);
+ obstack_freefun (&objfile -> type_obstack, mfree);
+ /* If already in objfile list, unlink it. */
+ unlink_objfile (objfile);
+ /* Forget things specific to a particular gdb, may have changed. */
+ objfile -> sf = NULL;
+ }
+ else
+ {
+ /* Set up to detect internal memory corruption. MUST be
+ done before the first malloc. See comments in
+ init_malloc() and mmcheck(). */
+
+ init_malloc (md);
+
+ objfile = (struct objfile *)
+ xmmalloc (md, sizeof (struct objfile));
+ memset (objfile, 0, sizeof (struct objfile));
+ objfile -> md = md;
+ objfile -> mmfd = fd;
+ objfile -> flags |= OBJF_MAPPED;
+ mmalloc_setkey (objfile -> md, 0, objfile);
+ obstack_specify_allocation_with_arg (&objfile -> psymbol_obstack,
+ 0, 0, xmmalloc, mfree,
+ objfile -> md);
+ obstack_specify_allocation_with_arg (&objfile -> symbol_obstack,
+ 0, 0, xmmalloc, mfree,
+ objfile -> md);
+ obstack_specify_allocation_with_arg (&objfile -> type_obstack,
+ 0, 0, xmmalloc, mfree,
+ objfile -> md);
+ }
+ }
+
+ if (mapped && (objfile == NULL))
+ {
+ warning ("symbol table for '%s' will not be mapped",
+ bfd_get_filename (abfd));
+ }
+ }
#else /* defined(NO_MMALLOC) || !defined(HAVE_MMAP) */
if (mapped)
free_objfile (objfile)
struct objfile *objfile;
{
- int mmfd;
-
/* First do any symbol file specific actions required when we are
finished with a particular symbol file. Note that if the objfile
is using reusable symbol information (via mmalloc) then each of
{
/* Remember the fd so we can close it. We can't close it before
doing the detach, and after the detach the objfile is gone. */
+ int mmfd;
+
mmfd = objfile -> mmfd;
mmalloc_detach (objfile -> md);
objfile = NULL;
union type_stack_elt *type_stack;
int type_stack_depth, type_stack_size;
-extern void
-write_exp_elt PARAMS ((union exp_element));
+extern void write_exp_elt PARAMS ((union exp_element));
-extern void
-write_exp_elt_opcode PARAMS ((enum exp_opcode));
+extern void write_exp_elt_opcode PARAMS ((enum exp_opcode));
-extern void
-write_exp_elt_sym PARAMS ((struct symbol *));
+extern void write_exp_elt_sym PARAMS ((struct symbol *));
-extern void
-write_exp_elt_longcst PARAMS ((LONGEST));
+extern void write_exp_elt_longcst PARAMS ((LONGEST));
-extern void
-write_exp_elt_dblcst PARAMS ((double));
+extern void write_exp_elt_dblcst PARAMS ((double));
-extern void
-write_exp_elt_type PARAMS ((struct type *));
+extern void write_exp_elt_type PARAMS ((struct type *));
-extern void
-write_exp_elt_intern PARAMS ((struct internalvar *));
+extern void write_exp_elt_intern PARAMS ((struct internalvar *));
-extern void
-write_exp_string PARAMS ((struct stoken));
+extern void write_exp_string PARAMS ((struct stoken));
-extern void
-write_exp_bitstring PARAMS ((struct stoken));
+extern void write_exp_bitstring PARAMS ((struct stoken));
+
+extern void write_exp_elt_block PARAMS ((struct block *));
extern void
start_arglist PARAMS ((void));
#ifdef SYNTAX_TABLE
extern char *re_syntax_table;
#endif
+
+extern int re_set_syntax ();
process_one_symbol PARAMS ((int, int, CORE_ADDR, char *,
struct section_offsets *, struct objfile *));
-extern void
-elfstab_build_psymtabs PARAMS ((struct objfile *objfile,
- struct section_offsets *section_offsets,
- int mainline,
- file_ptr staboff, unsigned int stabsize,
- file_ptr stabstroffset,
- unsigned int stabstrsize));
+extern void elfstab_build_psymtabs
+ PARAMS ((struct objfile *objfile,
+ struct section_offsets *section_offsets,
+ int mainline,
+ file_ptr staboff, unsigned int stabsize,
+ file_ptr stabstroffset,
+ unsigned int stabstrsize));
+
+extern void coffstab_build_psymtabs
+ PARAMS ((struct objfile *objfile,
+ struct section_offsets *section_offsets,
+ int mainline,
+ file_ptr staboff, unsigned int stabsize,
+ file_ptr stabstroffset,
+ unsigned int stabstrsize));
+
+extern void elfstab_offset_sections PARAMS ((struct objfile *,
+ struct partial_symtab *));
extern void
pastab_build_psymtabs PARAMS ((struct objfile *, struct section_offsets *,