2010-12-31 Michael Snyder <msnyder@vmware.com>

* annotate.c: Comment cleanup, shorten long lines.
	* arch-utils.c: Ditto.
	* arch-utils.h: Ditto.
	* auxv.c: Ditto.
	* auxv.h: Ditto.
	* ax-gdb.c: Ditto.
	* ax-gdb.h: Ditto.
	* ax-general.c: Ditto.
	* breakpoint.h: Ditto.
	* buildsym.h: Ditto.
This commit is contained in:
Michael Snyder 2010-12-31 19:16:37 +00:00
parent 40a41a9acc
commit 0e2de36609
11 changed files with 248 additions and 195 deletions

View File

@ -1,10 +1,23 @@
2010-12-31 Michael Snyder <msnyder@vmware.com>
* annotate.c: Comment cleanup, shorten long lines.
* arch-utils.c: Ditto.
* arch-utils.h: Ditto.
* auxv.c: Ditto.
* auxv.h: Ditto.
* ax-gdb.c: Ditto.
* ax-gdb.h: Ditto.
* ax-general.c: Ditto.
* breakpoint.h: Ditto.
* buildsym.h: Ditto.
2010-12-30 Mike Frysinger <vapier@gentoo.org> 2010-12-30 Mike Frysinger <vapier@gentoo.org>
* bfin-tdep.c (bfin_register_type): Move || to start of line. * bfin-tdep.c (bfin_register_type): Move || to start of line.
2010-12-29 Michael Snyder <msnyder@vmware.com> 2010-12-29 Michael Snyder <msnyder@vmware.com>
* bcache.c: Comment clean-up. * bcache.c: Comment clean-up, shorten long lines..
* block.c: Ditto. * block.c: Ditto.
* blockframe.c: Ditto. * blockframe.c: Ditto.
* breakpoint.c: Ditto. * breakpoint.c: Ditto.
@ -71,7 +84,7 @@
2010-12-28 Michael Snyder <msnyder@vmware.com> 2010-12-28 Michael Snyder <msnyder@vmware.com>
* command.h: Comment clean-up. * command.h: Comment clean-up, shorten long lines.
* cli/cli-cmds.c: Ditto. * cli/cli-cmds.c: Ditto.
* cli/cli-cmds.h: Ditto. * cli/cli-cmds.h: Ditto.
* cli/cli-decode.c: Ditto. * cli/cli-decode.c: Ditto.
@ -85,7 +98,7 @@
2010-12-28 Michael Snyder <msnyder@vmware.com> 2010-12-28 Michael Snyder <msnyder@vmware.com>
* event-loop.c: Comment clean-up. * event-loop.c: Comment clean-up, shorten long lines.
* event-loop.h: Ditto. * event-loop.h: Ditto.
* event-top.c: Ditto. * event-top.c: Ditto.
* gdb.c: Ditto. * gdb.c: Ditto.

View File

@ -26,7 +26,7 @@
#include "observer.h" #include "observer.h"
/* Prototypes for local functions. */ /* Prototypes for local functions. */
extern void _initialize_annotate (void); extern void _initialize_annotate (void);
@ -57,7 +57,7 @@ breakpoints_changed (void)
target_terminal_ours (); target_terminal_ours ();
printf_unfiltered (("\n\032\032breakpoints-invalid\n")); printf_unfiltered (("\n\032\032breakpoints-invalid\n"));
if (ignore_count_changed) if (ignore_count_changed)
ignore_count_changed = 0; /* Avoid multiple break annotations. */ ignore_count_changed = 0; /* Avoid multiple break annotations. */
} }
} }
@ -65,7 +65,7 @@ breakpoints_changed (void)
want to provide successive multiple breakpoints-invalid messages want to provide successive multiple breakpoints-invalid messages
that are all caused by the fact that the ignore count is changing that are all caused by the fact that the ignore count is changing
(which could keep the GUI very busy). One is enough, after the (which could keep the GUI very busy). One is enough, after the
target actually "stops". */ target actually "stops". */
void void
annotate_ignore_count_change (void) annotate_ignore_count_change (void)

View File

@ -23,7 +23,7 @@
#include "arch-utils.h" #include "arch-utils.h"
#include "buildsym.h" #include "buildsym.h"
#include "gdbcmd.h" #include "gdbcmd.h"
#include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */ #include "inferior.h" /* enum CALL_DUMMY_LOCATION et al. */
#include "gdb_string.h" #include "gdb_string.h"
#include "regcache.h" #include "regcache.h"
#include "gdb_assert.h" #include "gdb_assert.h"
@ -146,7 +146,7 @@ core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs)
return (lhs > rhs); return (lhs > rhs);
} }
/* Misc helper functions for targets. */ /* Misc helper functions for targets. */
CORE_ADDR CORE_ADDR
core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr) core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr)
@ -186,8 +186,8 @@ cannot_register_not (struct gdbarch *gdbarch, int regnum)
} }
/* Legacy version of target_virtual_frame_pointer(). Assumes that /* Legacy version of target_virtual_frame_pointer(). Assumes that
there is an gdbarch_deprecated_fp_regnum and that it is the same, cooked or there is an gdbarch_deprecated_fp_regnum and that it is the same,
raw. */ cooked or raw. */
void void
legacy_virtual_frame_pointer (struct gdbarch *gdbarch, legacy_virtual_frame_pointer (struct gdbarch *gdbarch,
@ -211,7 +211,8 @@ legacy_virtual_frame_pointer (struct gdbarch *gdbarch,
else else
/* Should this be an internal error? I guess so, it is reflecting /* Should this be an internal error? I guess so, it is reflecting
an architectural limitation in the current design. */ an architectural limitation in the current design. */
internal_error (__FILE__, __LINE__, _("No virtual frame pointer available")); internal_error (__FILE__, __LINE__,
_("No virtual frame pointer available"));
*frame_offset = 0; *frame_offset = 0;
} }
@ -373,8 +374,9 @@ choose_architecture_for_target (const struct target_desc *target_desc,
if (compat1 == NULL && compat2 == NULL) if (compat1 == NULL && compat2 == NULL)
{ {
/* BFD considers the architectures incompatible. Check our target /* BFD considers the architectures incompatible. Check our
description whether it accepts SELECTED as compatible anyway. */ target description whether it accepts SELECTED as compatible
anyway. */
if (tdesc_compatible_p (target_desc, selected)) if (tdesc_compatible_p (target_desc, selected))
return from_target; return from_target;
@ -391,10 +393,10 @@ choose_architecture_for_target (const struct target_desc *target_desc,
if (compat1 == compat2) if (compat1 == compat2)
return compat1; return compat1;
/* If the two didn't match, but one of them was a default architecture, /* If the two didn't match, but one of them was a default
assume the more specific one is correct. This handles the case architecture, assume the more specific one is correct. This
where an executable or target description just says "mips", but handles the case where an executable or target description just
the other knows which MIPS variant. */ says "mips", but the other knows which MIPS variant. */
if (compat1->the_default) if (compat1->the_default)
return compat2; return compat2;
if (compat2->the_default) if (compat2->the_default)
@ -408,7 +410,7 @@ choose_architecture_for_target (const struct target_desc *target_desc,
return selected; return selected;
} }
/* Functions to manipulate the architecture of the target */ /* Functions to manipulate the architecture of the target. */
enum set_arch { set_arch_auto, set_arch_manual }; enum set_arch { set_arch_auto, set_arch_manual };
@ -426,7 +428,7 @@ selected_architecture_name (void)
} }
/* Called if the user enters ``show architecture'' without an /* Called if the user enters ``show architecture'' without an
argument. */ argument. */
static void static void
show_architecture (struct ui_file *file, int from_tty, show_architecture (struct ui_file *file, int from_tty,
@ -443,7 +445,7 @@ The target architecture is assumed to be %s\n"), set_architecture_string);
/* Called if the user enters ``set architecture'' with or without an /* Called if the user enters ``set architecture'' with or without an
argument. */ argument. */
static void static void
set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c) set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c)
@ -583,14 +585,14 @@ initialize_current_architecture (void)
const char **arches = gdbarch_printable_names (); const char **arches = gdbarch_printable_names ();
struct gdbarch_info info; struct gdbarch_info info;
/* determine a default architecture and byte order. */ /* determine a default architecture and byte order. */
gdbarch_info_init (&info); gdbarch_info_init (&info);
/* Find a default architecture. */ /* Find a default architecture. */
if (default_bfd_arch == NULL) if (default_bfd_arch == NULL)
{ {
/* Choose the architecture by taking the first one /* Choose the architecture by taking the first one
alphabetically. */ alphabetically. */
const char *chosen = arches[0]; const char *chosen = arches[0];
const char **arch; const char **arch;
for (arch = arches; *arch != NULL; arch++) for (arch = arches; *arch != NULL; arch++)
@ -613,7 +615,7 @@ initialize_current_architecture (void)
if (default_byte_order == BFD_ENDIAN_UNKNOWN if (default_byte_order == BFD_ENDIAN_UNKNOWN
&& default_bfd_vec != NULL) && default_bfd_vec != NULL)
{ {
/* Extract BFD's default vector's byte order. */ /* Extract BFD's default vector's byte order. */
switch (default_bfd_vec->byteorder) switch (default_bfd_vec->byteorder)
{ {
case BFD_ENDIAN_BIG: case BFD_ENDIAN_BIG:
@ -628,7 +630,7 @@ initialize_current_architecture (void)
} }
if (default_byte_order == BFD_ENDIAN_UNKNOWN) if (default_byte_order == BFD_ENDIAN_UNKNOWN)
{ {
/* look for ``*el-*'' in the target name. */ /* look for ``*el-*'' in the target name. */
const char *chp; const char *chp;
chp = strchr (target_name, '-'); chp = strchr (target_name, '-');
if (chp != NULL if (chp != NULL
@ -651,9 +653,9 @@ initialize_current_architecture (void)
"initial architecture failed")); "initial architecture failed"));
/* Create the ``set architecture'' command appending ``auto'' to the /* Create the ``set architecture'' command appending ``auto'' to the
list of architectures. */ list of architectures. */
{ {
/* Append ``auto''. */ /* Append ``auto''. */
int nr; int nr;
for (nr = 0; arches[nr] != NULL; nr++); for (nr = 0; arches[nr] != NULL; nr++);
arches = xrealloc (arches, sizeof (char*) * (nr + 2)); arches = xrealloc (arches, sizeof (char*) * (nr + 2));
@ -742,12 +744,13 @@ gdbarch_info_fill (struct gdbarch_info *info)
gdb_assert (info->bfd_arch_info != NULL); gdb_assert (info->bfd_arch_info != NULL);
} }
/* Return "current" architecture. If the target is running, this is the /* Return "current" architecture. If the target is running, this is
architecture of the selected frame. Otherwise, the "current" architecture the architecture of the selected frame. Otherwise, the "current"
defaults to the target architecture. architecture defaults to the target architecture.
This function should normally be called solely by the command interpreter This function should normally be called solely by the command
routines to determine the architecture to execute a command in. */ interpreter routines to determine the architecture to execute a
command in. */
struct gdbarch * struct gdbarch *
get_current_arch (void) get_current_arch (void)
{ {

View File

@ -59,7 +59,7 @@ extern int
leaving space for inferior function call return breakpoints. */ leaving space for inferior function call return breakpoints. */
extern CORE_ADDR displaced_step_at_entry_point (struct gdbarch *gdbarch); extern CORE_ADDR displaced_step_at_entry_point (struct gdbarch *gdbarch);
/* The only possible cases for inner_than. */ /* The only possible cases for inner_than. */
extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs); extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs); extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
@ -68,20 +68,20 @@ extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
extern CORE_ADDR core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr); extern CORE_ADDR core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr);
extern gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr_identity; extern gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr_identity;
/* No-op conversion of reg to regnum. */ /* No-op conversion of reg to regnum. */
extern int no_op_reg_to_regnum (struct gdbarch *gdbarch, int reg); extern int no_op_reg_to_regnum (struct gdbarch *gdbarch, int reg);
/* Do nothing version of elf_make_msymbol_special. */ /* Do nothing version of elf_make_msymbol_special. */
void default_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym); void default_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym);
/* Do nothing version of coff_make_msymbol_special. */ /* Do nothing version of coff_make_msymbol_special. */
void default_coff_make_msymbol_special (int val, struct minimal_symbol *msym); void default_coff_make_msymbol_special (int val, struct minimal_symbol *msym);
/* Version of cannot_fetch_register() / cannot_store_register() that /* Version of cannot_fetch_register() / cannot_store_register() that
always fails. */ always fails. */
int cannot_register_not (struct gdbarch *gdbarch, int regnum); int cannot_register_not (struct gdbarch *gdbarch, int regnum);

View File

@ -34,8 +34,8 @@
#include <fcntl.h> #include <fcntl.h>
/* This function handles access via /proc/PID/auxv, which is a common method /* This function handles access via /proc/PID/auxv, which is a common
for native targets. */ method for native targets. */
static LONGEST static LONGEST
procfs_xfer_auxv (gdb_byte *readbuf, procfs_xfer_auxv (gdb_byte *readbuf,
@ -90,35 +90,39 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
if (MSYMBOL_SIZE (msym) != ptr_size) if (MSYMBOL_SIZE (msym) != ptr_size)
return -1; return -1;
/* POINTER_ADDRESS is a location where the `_dl_auxv' variable resides. /* POINTER_ADDRESS is a location where the `_dl_auxv' variable
DATA_ADDRESS is the inferior value present in `_dl_auxv', therefore the resides. DATA_ADDRESS is the inferior value present in
real inferior AUXV address. */ `_dl_auxv', therefore the real inferior AUXV address. */
pointer_address = SYMBOL_VALUE_ADDRESS (msym); pointer_address = SYMBOL_VALUE_ADDRESS (msym);
/* The location of the _dl_auxv symbol may no longer be correct if /* The location of the _dl_auxv symbol may no longer be correct if
ld.so runs at a different address than the one present in the file. ld.so runs at a different address than the one present in the
This is very common case - for unprelinked ld.so or with a PIE executable. file. This is very common case - for unprelinked ld.so or with a
PIE executable forces random address even for libraries already being PIE executable. PIE executable forces random address even for
prelinked to some address. PIE executables themselves are never prelinked libraries already being prelinked to some address. PIE
even on prelinked systems. Prelinking of a PIE executable would block executables themselves are never prelinked even on prelinked
their purpose of randomizing load of everything including the executable. systems. Prelinking of a PIE executable would block their
purpose of randomizing load of everything including the
executable.
If the memory read fails, return -1 to fallback on another mechanism for If the memory read fails, return -1 to fallback on another
retrieving the AUXV. mechanism for retrieving the AUXV.
In most cases of a PIE running under valgrind there is no way to find In most cases of a PIE running under valgrind there is no way to
out the base addresses of any of ld.so, executable or AUXV as everything find out the base addresses of any of ld.so, executable or AUXV
is randomized and /proc information is not relevant for the virtual as everything is randomized and /proc information is not relevant
executable running under valgrind. We think that we might need a valgrind for the virtual executable running under valgrind. We think that
extension to make it work. This is PR 11440. */ we might need a valgrind extension to make it work. This is PR
11440. */
if (target_read_memory (pointer_address, ptr_buf, ptr_size) != 0) if (target_read_memory (pointer_address, ptr_buf, ptr_size) != 0)
return -1; return -1;
data_address = extract_typed_address (ptr_buf, ptr_type); data_address = extract_typed_address (ptr_buf, ptr_type);
/* Possibly still not initialized such as during an inferior startup. */ /* Possibly still not initialized such as during an inferior
startup. */
if (data_address == 0) if (data_address == 0)
return -1; return -1;
@ -132,8 +136,8 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
return -1; return -1;
} }
/* Stop if trying to read past the existing AUXV block. The final AT_NULL /* Stop if trying to read past the existing AUXV block. The final
was already returned before. */ AT_NULL was already returned before. */
if (offset >= auxv_pair_size) if (offset >= auxv_pair_size)
{ {
@ -154,9 +158,10 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
if (block > len) if (block > len)
block = len; block = len;
/* Reading sizes smaller than AUXV_PAIR_SIZE is not supported. Tails /* Reading sizes smaller than AUXV_PAIR_SIZE is not supported.
unaligned to AUXV_PAIR_SIZE will not be read during a call (they Tails unaligned to AUXV_PAIR_SIZE will not be read during a
should be completed during next read with new/extended buffer). */ call (they should be completed during next read with
new/extended buffer). */
block &= -auxv_pair_size; block &= -auxv_pair_size;
if (block == 0) if (block == 0)
@ -174,8 +179,9 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
data_address += block; data_address += block;
len -= block; len -= block;
/* Check terminal AT_NULL. This function is being called indefinitely /* Check terminal AT_NULL. This function is being called
being extended its READBUF until it returns EOF (0). */ indefinitely being extended its READBUF until it returns EOF
(0). */
while (block >= auxv_pair_size) while (block >= auxv_pair_size)
{ {
@ -207,10 +213,11 @@ memory_xfer_auxv (struct target_ops *ops,
gdb_assert (object == TARGET_OBJECT_AUXV); gdb_assert (object == TARGET_OBJECT_AUXV);
gdb_assert (readbuf || writebuf); gdb_assert (readbuf || writebuf);
/* ld_so_xfer_auxv is the only function safe for virtual executables being /* ld_so_xfer_auxv is the only function safe for virtual
executed by valgrind's memcheck. Using ld_so_xfer_auxv during inferior executables being executed by valgrind's memcheck. Using
startup is problematic, because ld.so symbol tables have not yet been ld_so_xfer_auxv during inferior startup is problematic, because
relocated. So GDB uses this function only when attaching to a process. ld.so symbol tables have not yet been relocated. So GDB uses
this function only when attaching to a process.
*/ */
if (current_inferior ()->attach_flag != 0) if (current_inferior ()->attach_flag != 0)
@ -308,7 +315,7 @@ target_auxv_search (struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
} }
/* Print the contents of the target's AUXV on the specified file. */ /* Print the contents of the target's AUXV on the specified file. */
int int
fprint_target_auxv (struct ui_file *file, struct target_ops *ops) fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
{ {

View File

@ -40,7 +40,7 @@ extern int target_auxv_parse (struct target_ops *ops,
extern int target_auxv_search (struct target_ops *ops, extern int target_auxv_search (struct target_ops *ops,
CORE_ADDR match, CORE_ADDR *valp); CORE_ADDR match, CORE_ADDR *valp);
/* Print the contents of the target's AUXV on the specified file. */ /* Print the contents of the target's AUXV on the specified file. */
extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops); extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
extern LONGEST memory_xfer_auxv (struct target_ops *ops, extern LONGEST memory_xfer_auxv (struct target_ops *ops,

View File

@ -59,7 +59,7 @@
/* Prototypes for local functions. */ /* Prototypes for local functions. */
/* There's a standard order to the arguments of these functions: /* There's a standard order to the arguments of these functions:
union exp_element ** --- pointer into expression union exp_element ** --- pointer into expression
@ -614,7 +614,7 @@ static void
gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax, gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
struct axs_value *value, struct symbol *var) struct axs_value *value, struct symbol *var)
{ {
/* Dereference any typedefs. */ /* Dereference any typedefs. */
value->type = check_typedef (SYMBOL_TYPE (var)); value->type = check_typedef (SYMBOL_TYPE (var));
value->optimized_out = 0; value->optimized_out = 0;
@ -986,7 +986,7 @@ gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type)
/* GCC does allow casts to yield lvalues, so this should be fixed /* GCC does allow casts to yield lvalues, so this should be fixed
before merging these changes into the trunk. */ before merging these changes into the trunk. */
require_rvalue (ax, value); require_rvalue (ax, value);
/* Dereference typedefs. */ /* Dereference typedefs. */
type = check_typedef (type); type = check_typedef (type);
switch (TYPE_CODE (type)) switch (TYPE_CODE (type))
@ -1289,7 +1289,7 @@ gen_bitfield_ref (struct expression *exp, struct agent_expr *ax,
equal to the number of `one' bits in bytesize, but who cares? */ equal to the number of `one' bits in bytesize, but who cares? */
int fragment_count; int fragment_count;
/* Dereference any typedefs. */ /* Dereference any typedefs. */
type = check_typedef (type); type = check_typedef (type);
/* Can we fetch the number of bits requested at all? */ /* Can we fetch the number of bits requested at all? */
@ -1677,7 +1677,7 @@ gen_aggregate_elt_ref (struct expression *exp,
return 0; return 0;
} }
/* Generate code for GDB's magical `repeat' operator. /* Generate code for GDB's magical `repeat' operator.
LVALUE @ INT creates an array INT elements long, and whose elements LVALUE @ INT creates an array INT elements long, and whose elements
have the same type as LVALUE, located in memory so that LVALUE is have the same type as LVALUE, located in memory so that LVALUE is
its first element. For example, argv[0]@argc gives you the array its first element. For example, argv[0]@argc gives you the array
@ -2049,7 +2049,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
case UNOP_PLUS: case UNOP_PLUS:
(*pc)++; (*pc)++;
/* + FOO is equivalent to 0 + FOO, which can be optimized. */ /* + FOO is equivalent to 0 + FOO, which can be optimized. */
gen_expr (exp, pc, ax, value); gen_expr (exp, pc, ax, value);
gen_usual_unary (exp, ax, value); gen_usual_unary (exp, ax, value);
break; break;

View File

@ -78,7 +78,7 @@ struct axs_value
/* The type of the subexpression. Even if lvalue == axs_lvalue_memory, /* The type of the subexpression. Even if lvalue == axs_lvalue_memory,
this is the type of the value itself; the value on the stack is a this is the type of the value itself; the value on the stack is a
"pointer to" an object of this type. */ "pointer to" an object of this type. */
struct type *type; struct type *type;
/* If nonzero, this is a variable which does not actually exist in /* If nonzero, this is a variable which does not actually exist in

View File

@ -248,7 +248,7 @@ ax_const_l (struct agent_expr *x, LONGEST l)
break; break;
} }
/* Emit the right opcode... */ /* Emit the right opcode... */
ax_simple (x, ops[op]); ax_simple (x, ops[op]);
/* Emit the low SIZE bytes as an unsigned number. We know that /* Emit the low SIZE bytes as an unsigned number. We know that

View File

@ -28,24 +28,25 @@ struct value;
struct block; struct block;
struct breakpoint_object; struct breakpoint_object;
/* This is the maximum number of bytes a breakpoint instruction can take. /* This is the maximum number of bytes a breakpoint instruction can
Feel free to increase it. It's just used in a few places to size take. Feel free to increase it. It's just used in a few places to
arrays that should be independent of the target architecture. */ size arrays that should be independent of the target
architecture. */
#define BREAKPOINT_MAX 16 #define BREAKPOINT_MAX 16
/* Type of breakpoint. */ /* Type of breakpoint. */
/* FIXME In the future, we should fold all other breakpoint-like things into /* FIXME In the future, we should fold all other breakpoint-like
here. This includes: things into here. This includes:
* single-step (for machines where we have to simulate single stepping) * single-step (for machines where we have to simulate single
(probably, though perhaps it is better for it to look as much as stepping) (probably, though perhaps it is better for it to look as
possible like a single-step to wait_for_inferior). */ much as possible like a single-step to wait_for_inferior). */
enum bptype enum bptype
{ {
bp_none = 0, /* Eventpoint has been deleted. */ bp_none = 0, /* Eventpoint has been deleted */
bp_breakpoint, /* Normal breakpoint */ bp_breakpoint, /* Normal breakpoint */
bp_hardware_breakpoint, /* Hardware assisted breakpoint */ bp_hardware_breakpoint, /* Hardware assisted breakpoint */
bp_until, /* used by until command */ bp_until, /* used by until command */
@ -64,8 +65,9 @@ enum bptype
exception will land. */ exception will land. */
bp_exception_resume, bp_exception_resume,
/* Used by wait_for_inferior for stepping over subroutine calls, for /* Used by wait_for_inferior for stepping over subroutine calls,
stepping over signal handlers, and for skipping prologues. */ for stepping over signal handlers, and for skipping
prologues. */
bp_step_resume, bp_step_resume,
/* Used to detect when a watchpoint expression has gone out of /* Used to detect when a watchpoint expression has gone out of
@ -83,12 +85,13 @@ enum bptype
bp_watchpoint_scope, bp_watchpoint_scope,
/* The breakpoint at the end of a call dummy. */ /* The breakpoint at the end of a call dummy. */
/* FIXME: What if the function we are calling longjmp()s out of the /* FIXME: What if the function we are calling longjmp()s out of
call, or the user gets out with the "return" command? We currently the call, or the user gets out with the "return" command? We
have no way of cleaning up the breakpoint in these (obscure) situations. currently have no way of cleaning up the breakpoint in these
(Probably can solve this by noticing longjmp, "return", etc., it's (obscure) situations. (Probably can solve this by noticing
similar to noticing when a watchpoint on a local variable goes out longjmp, "return", etc., it's similar to noticing when a
of scope (with hardware support for watchpoints)). */ watchpoint on a local variable goes out of scope (with hardware
support for watchpoints)). */
bp_call_dummy, bp_call_dummy,
/* A breakpoint set on std::terminate, that is used to catch /* A breakpoint set on std::terminate, that is used to catch
@ -146,39 +149,46 @@ enum bptype
bp_jit_event, bp_jit_event,
}; };
/* States of enablement of breakpoint. */ /* States of enablement of breakpoint. */
enum enable_state enum enable_state
{ {
bp_disabled, /* The eventpoint is inactive, and cannot trigger. */ bp_disabled, /* The eventpoint is inactive, and cannot
bp_enabled, /* The eventpoint is active, and can trigger. */ trigger. */
bp_call_disabled, /* The eventpoint has been disabled while a call bp_enabled, /* The eventpoint is active, and can
into the inferior is "in flight", because some trigger. */
eventpoints interfere with the implementation of bp_call_disabled, /* The eventpoint has been disabled while a
a call on some targets. The eventpoint will be call into the inferior is "in flight",
automatically enabled and reset when the call because some eventpoints interfere with
"lands" (either completes, or stops at another the implementation of a call on some
eventpoint). */ targets. The eventpoint will be
bp_startup_disabled,/* The eventpoint has been disabled during inferior automatically enabled and reset when the
startup. This is necessary on some targets where call "lands" (either completes, or stops
the main executable will get relocated during at another eventpoint). */
startup, making breakpoint addresses invalid. bp_startup_disabled, /* The eventpoint has been disabled during
The eventpoint will be automatically enabled and inferior startup. This is necessary on
reset once inferior startup is complete. */ some targets where the main executable
bp_permanent /* There is a breakpoint instruction hard-wired into will get relocated during startup, making
the target's code. Don't try to write another breakpoint addresses invalid. The
breakpoint instruction on top of it, or restore eventpoint will be automatically enabled
its value. Step over it using the architecture's and reset once inferior startup is
SKIP_INSN macro. */ complete. */
bp_permanent /* There is a breakpoint instruction
hard-wired into the target's code. Don't
try to write another breakpoint
instruction on top of it, or restore its
value. Step over it using the
architecture's SKIP_INSN macro. */
}; };
/* Disposition of breakpoint. Ie: what to do after hitting it. */ /* Disposition of breakpoint. Ie: what to do after hitting it. */
enum bpdisp enum bpdisp
{ {
disp_del, /* Delete it */ disp_del, /* Delete it */
disp_del_at_next_stop, /* Delete at next stop, whether hit or not */ disp_del_at_next_stop, /* Delete at next stop,
whether hit or not */
disp_disable, /* Disable it */ disp_disable, /* Disable it */
disp_donttouch /* Leave it alone */ disp_donttouch /* Leave it alone */
}; };
@ -216,11 +226,11 @@ struct bp_target_info
int shadow_len; int shadow_len;
/* The size of the placed breakpoint, according to /* The size of the placed breakpoint, according to
gdbarch_breakpoint_from_pc, when the breakpoint was inserted. This is gdbarch_breakpoint_from_pc, when the breakpoint was inserted.
generally the same as SHADOW_LEN, unless we did not need This is generally the same as SHADOW_LEN, unless we did not need
to read from the target to implement the memory breakpoint to read from the target to implement the memory breakpoint
(e.g. if a remote stub handled the details). We may still (e.g. if a remote stub handled the details). We may still need
need the size to remove the breakpoint safely. */ the size to remove the breakpoint safely. */
int placed_size; int placed_size;
}; };
@ -313,14 +323,16 @@ struct bp_location
bp_loc_other. */ bp_loc_other. */
CORE_ADDR address; CORE_ADDR address;
/* For hardware watchpoints, the size of data ad ADDRESS being watches. */ /* For hardware watchpoints, the size of data ad ADDRESS being
watches. */
int length; int length;
/* Type of hardware watchpoint. */ /* Type of hardware watchpoint. */
enum target_hw_bp_type watchpoint_type; enum target_hw_bp_type watchpoint_type;
/* For any breakpoint type with an address, this is the section /* For any breakpoint type with an address, this is the section
associated with the address. Used primarily for overlay debugging. */ associated with the address. Used primarily for overlay
debugging. */
struct obj_section *section; struct obj_section *section;
/* Address at which breakpoint was requested, either by the user or /* Address at which breakpoint was requested, either by the user or
@ -374,11 +386,12 @@ struct breakpoint_ops
hit it. */ hit it. */
enum print_stop_action (*print_it) (struct breakpoint *); enum print_stop_action (*print_it) (struct breakpoint *);
/* Display information about this breakpoint, for "info breakpoints". */ /* Display information about this breakpoint, for "info
breakpoints". */
void (*print_one) (struct breakpoint *, struct bp_location **); void (*print_one) (struct breakpoint *, struct bp_location **);
/* Display information about this breakpoint after setting it (roughly /* Display information about this breakpoint after setting it
speaking; this is called from "mention"). */ (roughly speaking; this is called from "mention"). */
void (*print_mention) (struct breakpoint *); void (*print_mention) (struct breakpoint *);
/* Print to FP the CLI command that recreates this breakpoint. */ /* Print to FP the CLI command that recreates this breakpoint. */
@ -420,11 +433,11 @@ struct counted_command_line;
struct breakpoint struct breakpoint
{ {
struct breakpoint *next; struct breakpoint *next;
/* Type of breakpoint. */ /* Type of breakpoint. */
enum bptype type; enum bptype type;
/* Zero means disabled; remember the info but don't break here. */ /* Zero means disabled; remember the info but don't break here. */
enum enable_state enable_state; enum enable_state enable_state;
/* What to do with this breakpoint after we hit it. */ /* What to do with this breakpoint after we hit it. */
enum bpdisp disposition; enum bpdisp disposition;
/* Number assigned to distinguish breakpoints. */ /* Number assigned to distinguish breakpoints. */
int number; int number;
@ -441,12 +454,13 @@ struct breakpoint
char *source_file; char *source_file;
/* Non-zero means a silent breakpoint (don't print frame info /* Non-zero means a silent breakpoint (don't print frame info
if we stop here). */ if we stop here). */
unsigned char silent; unsigned char silent;
/* Number of stops at this breakpoint that should /* Number of stops at this breakpoint that should
be continued automatically before really stopping. */ be continued automatically before really stopping. */
int ignore_count; int ignore_count;
/* Chain of command lines to execute when this breakpoint is hit. */ /* Chain of command lines to execute when this breakpoint is
hit. */
struct counted_command_line *commands; struct counted_command_line *commands;
/* Stack depth (address of frame). If nonzero, break only if fp /* Stack depth (address of frame). If nonzero, break only if fp
equals this. */ equals this. */
@ -463,11 +477,11 @@ struct breakpoint
enum language language; enum language language;
/* Input radix we used to set the breakpoint. */ /* Input radix we used to set the breakpoint. */
int input_radix; int input_radix;
/* String form of the breakpoint condition (malloc'd), or NULL if there /* String form of the breakpoint condition (malloc'd), or NULL if
is no condition. */ there is no condition. */
char *cond_string; char *cond_string;
/* String form of exp to use for displaying to the user (malloc'd), or /* String form of exp to use for displaying to the user
NULL if none. */ (malloc'd), or NULL if none. */
char *exp_string; char *exp_string;
/* String form to use for reparsing of EXP (malloc'd) or NULL. */ /* String form to use for reparsing of EXP (malloc'd) or NULL. */
char *exp_string_reparse; char *exp_string_reparse;
@ -491,9 +505,10 @@ struct breakpoint
int val_valid; int val_valid;
/* Holds the address of the related watchpoint_scope breakpoint /* Holds the address of the related watchpoint_scope breakpoint
when using watchpoints on local variables (might the concept when using watchpoints on local variables (might the concept of
of a related breakpoint be useful elsewhere, if not just call a related breakpoint be useful elsewhere, if not just call it
it the watchpoint_scope breakpoint or something like that. FIXME). */ the watchpoint_scope breakpoint or something like that.
FIXME). */
struct breakpoint *related_breakpoint; struct breakpoint *related_breakpoint;
/* Holds the frame address which identifies the frame this /* Holds the frame address which identifies the frame this
@ -510,10 +525,12 @@ struct breakpoint
hardware. */ hardware. */
enum watchpoint_triggered watchpoint_triggered; enum watchpoint_triggered watchpoint_triggered;
/* Thread number for thread-specific breakpoint, or -1 if don't care. */ /* Thread number for thread-specific breakpoint,
or -1 if don't care. */
int thread; int thread;
/* Ada task number for task-specific breakpoint, or 0 if don't care. */ /* Ada task number for task-specific breakpoint,
or 0 if don't care. */
int task; int task;
/* Count of the number of times this breakpoint was taken, dumped /* Count of the number of times this breakpoint was taken, dumped
@ -532,10 +549,10 @@ struct breakpoint
triggered. */ triggered. */
char *exec_pathname; char *exec_pathname;
/* Syscall numbers used for the 'catch syscall' feature. /* Syscall numbers used for the 'catch syscall' feature. If no
If no syscall has been specified for filtering, its value is NULL. syscall has been specified for filtering, its value is NULL.
Otherwise, it holds a list of all syscalls to be caught. Otherwise, it holds a list of all syscalls to be caught. The
The list elements are allocated with xmalloc. */ list elements are allocated with xmalloc. */
VEC(int) *syscalls_to_be_caught; VEC(int) *syscalls_to_be_caught;
/* Methods associated with this breakpoint. */ /* Methods associated with this breakpoint. */
@ -621,15 +638,16 @@ enum bpstat_what_main_action
BPSTAT_WHAT_KEEP_CHECKING, BPSTAT_WHAT_KEEP_CHECKING,
/* Remove breakpoints, single step once, then put them back in and /* Remove breakpoints, single step once, then put them back in and
go back to what we were doing. It's possible that this should be go back to what we were doing. It's possible that this should
removed from the main_action and put into a separate field, to more be removed from the main_action and put into a separate field,
cleanly handle BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE. */ to more cleanly handle
BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE. */
BPSTAT_WHAT_SINGLE, BPSTAT_WHAT_SINGLE,
/* Set longjmp_resume breakpoint, remove all other breakpoints, /* Set longjmp_resume breakpoint, remove all other breakpoints,
and continue. The "remove all other breakpoints" part is required and continue. The "remove all other breakpoints" part is
if we are also stepping over another breakpoint as well as doing required if we are also stepping over another breakpoint as
the longjmp handling. */ well as doing the longjmp handling. */
BPSTAT_WHAT_SET_LONGJMP_RESUME, BPSTAT_WHAT_SET_LONGJMP_RESUME,
/* Clear longjmp_resume breakpoint, then handle as /* Clear longjmp_resume breakpoint, then handle as
@ -639,8 +657,8 @@ enum bpstat_what_main_action
/* Rather than distinguish between noisy and silent stops here, it /* Rather than distinguish between noisy and silent stops here, it
might be cleaner to have bpstat_print make that decision (also might be cleaner to have bpstat_print make that decision (also
taking into account stop_print_frame and source_only). But the taking into account stop_print_frame and source_only). But the
implications are a bit scary (interaction with auto-displays, etc.), implications are a bit scary (interaction with auto-displays,
so I won't try it. */ etc.), so I won't try it. */
/* Stop silently. */ /* Stop silently. */
BPSTAT_WHAT_STOP_SILENT, BPSTAT_WHAT_STOP_SILENT,
@ -670,10 +688,10 @@ struct bpstat_what
{ {
enum bpstat_what_main_action main_action; enum bpstat_what_main_action main_action;
/* Did we hit a call dummy breakpoint? This only goes with a main_action /* Did we hit a call dummy breakpoint? This only goes with a
of BPSTAT_WHAT_STOP_SILENT or BPSTAT_WHAT_STOP_NOISY (the concept of main_action of BPSTAT_WHAT_STOP_SILENT or
continuing from a call dummy without popping the frame is not a BPSTAT_WHAT_STOP_NOISY (the concept of continuing from a call
useful one). */ dummy without popping the frame is not a useful one). */
enum stop_stack_kind call_dummy; enum stop_stack_kind call_dummy;
/* Used for BPSTAT_WHAT_SET_LONGJMP_RESUME and /* Used for BPSTAT_WHAT_SET_LONGJMP_RESUME and
@ -683,7 +701,7 @@ struct bpstat_what
}; };
/* The possible return values for print_bpstat, print_it_normal, /* The possible return values for print_bpstat, print_it_normal,
print_it_done, print_it_noop. */ print_it_done, print_it_noop. */
enum print_stop_action enum print_stop_action
{ {
PRINT_UNKNOWN = -1, PRINT_UNKNOWN = -1,
@ -695,7 +713,7 @@ enum print_stop_action
/* Tell what to do about this bpstat. */ /* Tell what to do about this bpstat. */
struct bpstat_what bpstat_what (bpstat); struct bpstat_what bpstat_what (bpstat);
/* Find the bpstat associated with a breakpoint. NULL otherwise. */ /* Find the bpstat associated with a breakpoint. NULL otherwise. */
bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *); bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
/* Nonzero if a signal that we got in wait() was due to circumstances /* Nonzero if a signal that we got in wait() was due to circumstances
@ -717,10 +735,11 @@ extern int bpstat_should_step (void);
return means print the frame as well as the source line). */ return means print the frame as well as the source line). */
extern enum print_stop_action bpstat_print (bpstat); extern enum print_stop_action bpstat_print (bpstat);
/* Put in *NUM the breakpoint number of the first breakpoint we are stopped /* Put in *NUM the breakpoint number of the first breakpoint we are
at. *BSP upon return is a bpstat which points to the remaining stopped at. *BSP upon return is a bpstat which points to the
breakpoints stopped at (but which is not guaranteed to be good for remaining breakpoints stopped at (but which is not guaranteed to be
anything but further calls to bpstat_num). good for anything but further calls to bpstat_num).
Return 0 if passed a bpstat which does not indicate any breakpoints. Return 0 if passed a bpstat which does not indicate any breakpoints.
Return -1 if stopped at a breakpoint that has been deleted since Return -1 if stopped at a breakpoint that has been deleted since
we set it. we set it.
@ -738,15 +757,17 @@ extern void bpstat_clear_actions (bpstat);
/* Implementation: */ /* Implementation: */
/* Values used to tell the printing routine how to behave for this bpstat. */ /* Values used to tell the printing routine how to behave for this
bpstat. */
enum bp_print_how enum bp_print_how
{ {
/* This is used when we want to do a normal printing of the reason /* This is used when we want to do a normal printing of the reason
for stopping. The output will depend on the type of eventpoint for stopping. The output will depend on the type of eventpoint
we are dealing with. This is the default value, most commonly we are dealing with. This is the default value, most commonly
used. */ used. */
print_it_normal, print_it_normal,
/* This is used when nothing should be printed for this bpstat entry. */ /* This is used when nothing should be printed for this bpstat
entry. */
print_it_noop, print_it_noop,
/* This is used when everything which needs to be printed has /* This is used when everything which needs to be printed has
already been printed. But we still want to print the frame. */ already been printed. But we still want to print the frame. */
@ -824,15 +845,18 @@ enum breakpoint_here
/* Prototypes for breakpoint-related functions. */ /* Prototypes for breakpoint-related functions. */
extern enum breakpoint_here breakpoint_here_p (struct address_space *, CORE_ADDR); extern enum breakpoint_here breakpoint_here_p (struct address_space *,
CORE_ADDR);
extern int moribund_breakpoint_here_p (struct address_space *, CORE_ADDR); extern int moribund_breakpoint_here_p (struct address_space *, CORE_ADDR);
extern int breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); extern int breakpoint_inserted_here_p (struct address_space *, CORE_ADDR);
extern int regular_breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); extern int regular_breakpoint_inserted_here_p (struct address_space *,
CORE_ADDR);
extern int software_breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); extern int software_breakpoint_inserted_here_p (struct address_space *,
CORE_ADDR);
/* Returns true if there's a hardware watchpoint or access watchpoint /* Returns true if there's a hardware watchpoint or access watchpoint
inserted in the range defined by ADDR and LEN. */ inserted in the range defined by ADDR and LEN. */
@ -840,7 +864,8 @@ extern int hardware_watchpoint_inserted_in_range (struct address_space *,
CORE_ADDR addr, CORE_ADDR addr,
ULONGEST len); ULONGEST len);
extern int breakpoint_thread_match (struct address_space *, CORE_ADDR, ptid_t); extern int breakpoint_thread_match (struct address_space *,
CORE_ADDR, ptid_t);
extern void until_break_command (char *, int, int); extern void until_break_command (char *, int, int);
@ -902,9 +927,9 @@ extern int remove_breakpoints_pid (int pid);
/* This function can be used to physically insert eventpoints from the /* This function can be used to physically insert eventpoints from the
specified traced inferior process, without modifying the breakpoint specified traced inferior process, without modifying the breakpoint
package's state. This can be useful for those targets which support package's state. This can be useful for those targets which
following the processes of a fork() or vfork() system call, when both support following the processes of a fork() or vfork() system call,
of the resulting two processes are to be followed. */ when both of the resulting two processes are to be followed. */
extern int reattach_breakpoints (int); extern int reattach_breakpoints (int);
/* This function can be used to update the breakpoint package's state /* This function can be used to update the breakpoint package's state
@ -921,7 +946,7 @@ extern int reattach_breakpoints (int);
- A step-resume breakpoint, if any, is explicitly removed from the - A step-resume breakpoint, if any, is explicitly removed from the
breakpoint list. breakpoint list.
- All eventpoints without a symbolic address are removed from the - All eventpoints without a symbolic address are removed from the
breakpoint list. */ breakpoint list. */
extern void update_breakpoints_after_exec (void); extern void update_breakpoints_after_exec (void);
/* This function can be used to physically remove hardware breakpoints /* This function can be used to physically remove hardware breakpoints
@ -989,7 +1014,8 @@ extern void disable_breakpoints_before_startup (void);
extern void enable_breakpoints_after_startup (void); extern void enable_breakpoints_after_startup (void);
/* For script interpreters that need to define breakpoint commands /* For script interpreters that need to define breakpoint commands
after they've already read the commands into a struct command_line. */ after they've already read the commands into a struct
command_line. */
extern enum command_control_type commands_from_control_command extern enum command_control_type commands_from_control_command
(char *arg, struct command_line *cmd); (char *arg, struct command_line *cmd);
@ -1001,8 +1027,8 @@ extern int get_number_or_range (char **);
extern struct breakpoint *get_breakpoint (int num); extern struct breakpoint *get_breakpoint (int num);
/* The following are for displays, which aren't really breakpoints, but /* The following are for displays, which aren't really breakpoints,
here is as good a place as any for them. */ but here is as good a place as any for them. */
extern void disable_current_display (void); extern void disable_current_display (void);
@ -1039,21 +1065,22 @@ extern void remove_thread_event_breakpoints (void);
extern void disable_breakpoints_in_shlibs (void); extern void disable_breakpoints_in_shlibs (void);
/* This function returns TRUE if ep is a catchpoint. */ /* This function returns TRUE if ep is a catchpoint. */
extern int ep_is_catchpoint (struct breakpoint *); extern int ep_is_catchpoint (struct breakpoint *);
/* Enable breakpoints and delete when hit. Called with ARG == NULL /* Enable breakpoints and delete when hit. Called with ARG == NULL
deletes all breakpoints. */ deletes all breakpoints. */
extern void delete_command (char *arg, int from_tty); extern void delete_command (char *arg, int from_tty);
/* Pull all H/W watchpoints from the target. Return non-zero if the /* Pull all H/W watchpoints from the target. Return non-zero if the
remove fails. */ remove fails. */
extern int remove_hw_watchpoints (void); extern int remove_hw_watchpoints (void);
/* Manage a software single step breakpoint (or two). Insert may be called /* Manage a software single step breakpoint (or two). Insert may be
twice before remove is called. */ called twice before remove is called. */
extern void insert_single_step_breakpoint (struct gdbarch *, extern void insert_single_step_breakpoint (struct gdbarch *,
struct address_space *, CORE_ADDR); struct address_space *,
CORE_ADDR);
extern int single_step_breakpoints_inserted (void); extern int single_step_breakpoints_inserted (void);
extern void remove_single_step_breakpoints (void); extern void remove_single_step_breakpoints (void);
extern void cancel_single_step_breakpoints (void); extern void cancel_single_step_breakpoints (void);
@ -1062,7 +1089,8 @@ extern void cancel_single_step_breakpoints (void);
breakpoints. These functions are used in murky target-specific breakpoints. These functions are used in murky target-specific
ways. Please do not add more uses! */ ways. Please do not add more uses! */
extern void *deprecated_insert_raw_breakpoint (struct gdbarch *, extern void *deprecated_insert_raw_breakpoint (struct gdbarch *,
struct address_space *, CORE_ADDR); struct address_space *,
CORE_ADDR);
extern int deprecated_remove_raw_breakpoint (struct gdbarch *, void *); extern int deprecated_remove_raw_breakpoint (struct gdbarch *, void *);
/* Check if any hardware watchpoints have triggered, according to the /* Check if any hardware watchpoints have triggered, according to the
@ -1103,7 +1131,8 @@ extern struct breakpoint *get_tracepoint (int num);
extern struct breakpoint *get_tracepoint_by_number_on_target (int num); extern struct breakpoint *get_tracepoint_by_number_on_target (int num);
/* Find a tracepoint by parsing a number in the supplied string. */ /* Find a tracepoint by parsing a number in the supplied string. */
extern struct breakpoint *get_tracepoint_by_number (char **arg, int multi_p, extern struct breakpoint *get_tracepoint_by_number (char **arg,
int multi_p,
int optional_p); int optional_p);
/* Return a vector of all tracepoints currently defined. The vector /* Return a vector of all tracepoints currently defined. The vector

View File

@ -44,11 +44,11 @@ struct block;
#endif #endif
#define HASHSIZE 127 /* Size of things hashed via #define HASHSIZE 127 /* Size of things hashed via
hashname() */ hashname(). */
/* Name of source file whose symbol data we are now processing. This /* Name of source file whose symbol data we are now processing. This
comes from a symbol of type N_SO for stabs. For Dwarf it comes from the comes from a symbol of type N_SO for stabs. For Dwarf it comes
DW_AT_name attribute of a DW_TAG_compile_unit DIE. */ from the DW_AT_name attribute of a DW_TAG_compile_unit DIE. */
EXTERN char *last_source_file; EXTERN char *last_source_file;
@ -158,7 +158,7 @@ struct context_stack
CORE_ADDR start_addr; CORE_ADDR start_addr;
/* Temp slot for exception handling. */ /* Temp slot for exception handling. */
CORE_ADDR end_addr; CORE_ADDR end_addr;
@ -198,7 +198,7 @@ struct pending_block
/* Pointer to the head of a linked list of symbol blocks which have /* Pointer to the head of a linked list of symbol blocks which have
already been finalized (lexical contexts already closed) and which already been finalized (lexical contexts already closed) and which
are just waiting to be built into a blockvector when finalizing the are just waiting to be built into a blockvector when finalizing the
associated symtab. */ associated symtab. */
EXTERN struct pending_block *pending_blocks; EXTERN struct pending_block *pending_blocks;
@ -213,7 +213,7 @@ EXTERN struct subfile_stack *subfile_stack;
#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile) #define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
/* Function to invoke get the next symbol. Return the symbol name. */ /* Function to invoke get the next symbol. Return the symbol name. */
EXTERN char *(*next_symbol_text_func) (struct objfile *); EXTERN char *(*next_symbol_text_func) (struct objfile *);
@ -286,7 +286,7 @@ extern void free_pending_blocks (void);
/* FIXME: Note that this is used only in buildsym.c and dstread.c, /* FIXME: Note that this is used only in buildsym.c and dstread.c,
which should be fixed to not need direct access to which should be fixed to not need direct access to
record_pending_block. */ record_pending_block. */
extern void record_pending_block (struct objfile *objfile, extern void record_pending_block (struct objfile *objfile,
struct block *block, struct block *block,
@ -300,7 +300,8 @@ extern void merge_symbol_lists (struct pending **srclist,
struct pending **targetlist); struct pending **targetlist);
/* The macro table for the compilation unit whose symbols we're /* The macro table for the compilation unit whose symbols we're
currently reading. All the symtabs for this CU will point to this. */ currently reading. All the symtabs for this CU will point to
this. */
EXTERN struct macro_table *pending_macros; EXTERN struct macro_table *pending_macros;
#undef EXTERN #undef EXTERN