Another -Wunused-function error in procfs.c (sparc-solaris)
* procfs.c (insert_dbx_link_breakpoint): Delete declaration. Move up. Only define if SYS_syssgi is defined. (remove_dbx_link_breakpoint): Delete declaration. Move up. (dbx_link_addr, insert_dbx_link_bpt_in_file) (insert_dbx_link_bpt_in_region): Move up. Only define if SYS_syssgi is itself defined.
This commit is contained in:
parent
3c9177f193
commit
7434dadd5d
@ -1,3 +1,13 @@
|
||||
2010-01-28 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
Another -Wunused-function error in procfs.c (sparc-solaris)
|
||||
* procfs.c (insert_dbx_link_breakpoint): Delete declaration. Move up.
|
||||
Only define if SYS_syssgi is defined.
|
||||
(remove_dbx_link_breakpoint): Delete declaration. Move up.
|
||||
(dbx_link_addr, insert_dbx_link_bpt_in_file)
|
||||
(insert_dbx_link_bpt_in_region): Move up. Only define if SYS_syssgi
|
||||
is itself defined.
|
||||
|
||||
2010-01-27 Christopher Faylor <me+cygwin@cgf.cx>
|
||||
|
||||
* windows-nat.c (windows_initialization_done): New variable.
|
||||
|
258
gdb/procfs.c
258
gdb/procfs.c
@ -3463,8 +3463,6 @@ static void do_detach (int signo);
|
||||
static int register_gdb_signals (procinfo *, gdb_sigset_t *);
|
||||
static void proc_trace_syscalls_1 (procinfo *pi, int syscallnum,
|
||||
int entry_or_exit, int mode, int from_tty);
|
||||
static int insert_dbx_link_breakpoint (procinfo *pi);
|
||||
static void remove_dbx_link_breakpoint (void);
|
||||
|
||||
/* On mips-irix, we need to insert a breakpoint at __dbx_link during
|
||||
the startup phase. The following two variables are used to record
|
||||
@ -3948,6 +3946,135 @@ syscall_is_lwp_create (procinfo *pi, int scall)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Remove the breakpoint that we inserted in __dbx_link().
|
||||
Does nothing if the breakpoint hasn't been inserted or has already
|
||||
been removed. */
|
||||
|
||||
static void
|
||||
remove_dbx_link_breakpoint (void)
|
||||
{
|
||||
if (dbx_link_bpt_addr == 0)
|
||||
return;
|
||||
|
||||
if (deprecated_remove_raw_breakpoint (target_gdbarch, dbx_link_bpt) != 0)
|
||||
warning (_("Unable to remove __dbx_link breakpoint."));
|
||||
|
||||
dbx_link_bpt_addr = 0;
|
||||
dbx_link_bpt = NULL;
|
||||
}
|
||||
|
||||
#ifdef SYS_syssgi
|
||||
/* Return the address of the __dbx_link() function in the file
|
||||
refernced by ABFD by scanning its symbol table. Return 0 if
|
||||
the symbol was not found. */
|
||||
|
||||
static CORE_ADDR
|
||||
dbx_link_addr (bfd *abfd)
|
||||
{
|
||||
long storage_needed;
|
||||
asymbol **symbol_table;
|
||||
long number_of_symbols;
|
||||
long i;
|
||||
|
||||
storage_needed = bfd_get_symtab_upper_bound (abfd);
|
||||
if (storage_needed <= 0)
|
||||
return 0;
|
||||
|
||||
symbol_table = (asymbol **) xmalloc (storage_needed);
|
||||
make_cleanup (xfree, symbol_table);
|
||||
|
||||
number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table);
|
||||
|
||||
for (i = 0; i < number_of_symbols; i++)
|
||||
{
|
||||
asymbol *sym = symbol_table[i];
|
||||
|
||||
if ((sym->flags & BSF_GLOBAL)
|
||||
&& sym->name != NULL && strcmp (sym->name, "__dbx_link") == 0)
|
||||
return (sym->value + sym->section->vma);
|
||||
}
|
||||
|
||||
/* Symbol not found, return NULL. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Search the symbol table of the file referenced by FD for a symbol
|
||||
named __dbx_link(). If found, then insert a breakpoint at this location,
|
||||
and return nonzero. Return zero otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored)
|
||||
{
|
||||
bfd *abfd;
|
||||
long storage_needed;
|
||||
CORE_ADDR sym_addr;
|
||||
|
||||
abfd = bfd_fdopenr ("unamed", 0, fd);
|
||||
if (abfd == NULL)
|
||||
{
|
||||
warning (_("Failed to create a bfd: %s."), bfd_errmsg (bfd_get_error ()));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!bfd_check_format (abfd, bfd_object))
|
||||
{
|
||||
/* Not the correct format, so we can not possibly find the dbx_link
|
||||
symbol in it. */
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sym_addr = dbx_link_addr (abfd);
|
||||
if (sym_addr != 0)
|
||||
{
|
||||
/* Insert the breakpoint. */
|
||||
dbx_link_bpt_addr = sym_addr;
|
||||
dbx_link_bpt = deprecated_insert_raw_breakpoint (target_gdbarch, NULL,
|
||||
sym_addr);
|
||||
if (dbx_link_bpt == NULL)
|
||||
{
|
||||
warning (_("Failed to insert dbx_link breakpoint."));
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
bfd_close (abfd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If the given memory region MAP contains a symbol named __dbx_link,
|
||||
insert a breakpoint at this location and return nonzero. Return
|
||||
zero otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_bpt_in_region (struct prmap *map,
|
||||
int (*child_func) (),
|
||||
void *data)
|
||||
{
|
||||
procinfo *pi = (procinfo *) data;
|
||||
|
||||
/* We know the symbol we're looking for is in a text region, so
|
||||
only look for it if the region is a text one. */
|
||||
if (map->pr_mflags & MA_EXEC)
|
||||
return solib_mappings_callback (map, insert_dbx_link_bpt_in_file, pi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Search all memory regions for a symbol named __dbx_link. If found,
|
||||
insert a breakpoint at its location, and return nonzero. Return zero
|
||||
otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_breakpoint (procinfo *pi)
|
||||
{
|
||||
return iterate_over_mappings (pi, NULL, pi, insert_dbx_link_bpt_in_region);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Function: target_wait
|
||||
*
|
||||
@ -5608,133 +5735,6 @@ proc_find_memory_regions (int (*func) (CORE_ADDR,
|
||||
find_memory_regions_callback);
|
||||
}
|
||||
|
||||
/* Remove the breakpoint that we inserted in __dbx_link().
|
||||
Does nothing if the breakpoint hasn't been inserted or has already
|
||||
been removed. */
|
||||
|
||||
static void
|
||||
remove_dbx_link_breakpoint (void)
|
||||
{
|
||||
if (dbx_link_bpt_addr == 0)
|
||||
return;
|
||||
|
||||
if (deprecated_remove_raw_breakpoint (target_gdbarch, dbx_link_bpt) != 0)
|
||||
warning (_("Unable to remove __dbx_link breakpoint."));
|
||||
|
||||
dbx_link_bpt_addr = 0;
|
||||
dbx_link_bpt = NULL;
|
||||
}
|
||||
|
||||
/* Return the address of the __dbx_link() function in the file
|
||||
refernced by ABFD by scanning its symbol table. Return 0 if
|
||||
the symbol was not found. */
|
||||
|
||||
static CORE_ADDR
|
||||
dbx_link_addr (bfd *abfd)
|
||||
{
|
||||
long storage_needed;
|
||||
asymbol **symbol_table;
|
||||
long number_of_symbols;
|
||||
long i;
|
||||
|
||||
storage_needed = bfd_get_symtab_upper_bound (abfd);
|
||||
if (storage_needed <= 0)
|
||||
return 0;
|
||||
|
||||
symbol_table = (asymbol **) xmalloc (storage_needed);
|
||||
make_cleanup (xfree, symbol_table);
|
||||
|
||||
number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table);
|
||||
|
||||
for (i = 0; i < number_of_symbols; i++)
|
||||
{
|
||||
asymbol *sym = symbol_table[i];
|
||||
|
||||
if ((sym->flags & BSF_GLOBAL)
|
||||
&& sym->name != NULL && strcmp (sym->name, "__dbx_link") == 0)
|
||||
return (sym->value + sym->section->vma);
|
||||
}
|
||||
|
||||
/* Symbol not found, return NULL. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Search the symbol table of the file referenced by FD for a symbol
|
||||
named __dbx_link(). If found, then insert a breakpoint at this location,
|
||||
and return nonzero. Return zero otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored)
|
||||
{
|
||||
bfd *abfd;
|
||||
long storage_needed;
|
||||
CORE_ADDR sym_addr;
|
||||
|
||||
abfd = bfd_fdopenr ("unamed", 0, fd);
|
||||
if (abfd == NULL)
|
||||
{
|
||||
warning (_("Failed to create a bfd: %s."), bfd_errmsg (bfd_get_error ()));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!bfd_check_format (abfd, bfd_object))
|
||||
{
|
||||
/* Not the correct format, so we can not possibly find the dbx_link
|
||||
symbol in it. */
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sym_addr = dbx_link_addr (abfd);
|
||||
if (sym_addr != 0)
|
||||
{
|
||||
/* Insert the breakpoint. */
|
||||
dbx_link_bpt_addr = sym_addr;
|
||||
dbx_link_bpt = deprecated_insert_raw_breakpoint (target_gdbarch, NULL,
|
||||
sym_addr);
|
||||
if (dbx_link_bpt == NULL)
|
||||
{
|
||||
warning (_("Failed to insert dbx_link breakpoint."));
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
bfd_close (abfd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If the given memory region MAP contains a symbol named __dbx_link,
|
||||
insert a breakpoint at this location and return nonzero. Return
|
||||
zero otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_bpt_in_region (struct prmap *map,
|
||||
int (*child_func) (),
|
||||
void *data)
|
||||
{
|
||||
procinfo *pi = (procinfo *) data;
|
||||
|
||||
/* We know the symbol we're looking for is in a text region, so
|
||||
only look for it if the region is a text one. */
|
||||
if (map->pr_mflags & MA_EXEC)
|
||||
return solib_mappings_callback (map, insert_dbx_link_bpt_in_file, pi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Search all memory regions for a symbol named __dbx_link. If found,
|
||||
insert a breakpoint at its location, and return nonzero. Return zero
|
||||
otherwise. */
|
||||
|
||||
static int
|
||||
insert_dbx_link_breakpoint (procinfo *pi)
|
||||
{
|
||||
return iterate_over_mappings (pi, NULL, pi, insert_dbx_link_bpt_in_region);
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: mappingflags
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user