procfs.c: Move solib_mappings_callback up to avoid compiler warning.

There are currently 2 issues with the placement of this routine:
  - It's defined after it is being used (causing an implicit declaration);
  - It looks like it's being defined all the time, whereas it is used
    only on mips-irix (AFAICT) - shouldn't have this triggered a warning
    on sparc-solaris, for instance???

In any case, this patch moves this function up, inside the right region,
just before the function where it is actually used.

gdb/ChangeLog:

        * procfs.c (solib_mappings_callback): Move function up to avoid
        a compiler warning.
This commit is contained in:
Joel Brobecker 2010-04-20 22:35:03 +00:00
parent a223f1e7a0
commit e294797a88
2 changed files with 52 additions and 51 deletions

View File

@ -1,3 +1,8 @@
2010-04-20 Joel Brobecker <brobecker@adacore.com>
* procfs.c (solib_mappings_callback): Move function up to avoid
a compiler warning.
2010-04-20 Joel Brobecker <brobecker@adacore.com>
* procfs.c (find_signalled_thread, find_stop_signal): Move

View File

@ -4043,6 +4043,53 @@ insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored)
return 0;
}
/* Calls the supplied callback function once for each mapped address
space in the process. The callback function receives an open
file descriptor for the file corresponding to that mapped
address space (if there is one), and the base address of the
mapped space. Quit when the callback function returns a
nonzero value, or at teh end of the mappings.
Returns: the first non-zero return value of the callback function,
or zero. */
static int
solib_mappings_callback (struct prmap *map, int (*func) (int, CORE_ADDR),
void *data)
{
procinfo *pi = data;
int fd;
#ifdef NEW_PROC_API
char name[MAX_PROC_NAME_SIZE + sizeof (map->pr_mapname)];
if (map->pr_vaddr == 0 && map->pr_size == 0)
return -1; /* sanity */
if (map->pr_mapname[0] == 0)
{
fd = -1; /* no map file */
}
else
{
sprintf (name, "/proc/%d/object/%s", pi->pid, map->pr_mapname);
/* Note: caller's responsibility to close this fd! */
fd = open_with_retry (name, O_RDONLY);
/* Note: we don't test the above call for failure;
we just pass the FD on as given. Sometimes there is
no file, so the open may return failure, but that's
not a problem. */
}
#else
fd = ioctl (pi->ctl_fd, PIOCOPENM, &map->pr_vaddr);
/* Note: we don't test the above call for failure;
we just pass the FD on as given. Sometimes there is
no file, so the ioctl may return failure, but that's
not a problem. */
#endif
return (*func) (fd, (CORE_ADDR) map->pr_vaddr);
}
/* If the given memory region MAP contains a symbol named __dbx_link,
insert a breakpoint at this location and return nonzero. Return
zero otherwise. */
@ -5623,57 +5670,6 @@ iterate_over_mappings (procinfo *pi, int (*child_func) (), void *data,
return 0;
}
/*
* Function: solib_mappings_callback
*
* Calls the supplied callback function once for each mapped address
* space in the process. The callback function receives an open
* file descriptor for the file corresponding to that mapped
* address space (if there is one), and the base address of the
* mapped space. Quit when the callback function returns a
* nonzero value, or at teh end of the mappings.
*
* Returns: the first non-zero return value of the callback function,
* or zero.
*/
int solib_mappings_callback (struct prmap *map,
int (*func) (int, CORE_ADDR),
void *data)
{
procinfo *pi = data;
int fd;
#ifdef NEW_PROC_API
char name[MAX_PROC_NAME_SIZE + sizeof (map->pr_mapname)];
if (map->pr_vaddr == 0 && map->pr_size == 0)
return -1; /* sanity */
if (map->pr_mapname[0] == 0)
{
fd = -1; /* no map file */
}
else
{
sprintf (name, "/proc/%d/object/%s", pi->pid, map->pr_mapname);
/* Note: caller's responsibility to close this fd! */
fd = open_with_retry (name, O_RDONLY);
/* Note: we don't test the above call for failure;
we just pass the FD on as given. Sometimes there is
no file, so the open may return failure, but that's
not a problem. */
}
#else
fd = ioctl (pi->ctl_fd, PIOCOPENM, &map->pr_vaddr);
/* Note: we don't test the above call for failure;
we just pass the FD on as given. Sometimes there is
no file, so the ioctl may return failure, but that's
not a problem. */
#endif
return (*func) (fd, (CORE_ADDR) map->pr_vaddr);
}
/*
* Function: find_memory_regions_callback
*