diff options
author | Joel Brobecker <brobecker@gnat.com> | 2010-04-20 22:35:57 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2010-04-20 22:35:57 +0000 |
commit | 95194f81a233801fcb414f861da13a39c0cc3825 (patch) | |
tree | 9f510135733c5a3e114bd92036fefd26803a4609 /gdb/procfs.c | |
parent | 0a784d2742791209e8042a9c7c35f58f3cdcb36d (diff) | |
download | gdb-95194f81a233801fcb414f861da13a39c0cc3825.tar.gz |
procfs.c: iterate_over_mappings callback has wrong profile.
The function proc_find_memory_regions calls iterate_over_mappings as
follow:
> return iterate_over_mappings (pi, func, data,
> find_memory_regions_callback);
The problem is that both func and find_memory_regions_callback
do not match the profile expected by iterate_over_mappings:
> iterate_over_mappings (procinfo *pi, int (*child_func) (), void *data,
> int (*func) (struct prmap *map,
> int (*child_func) (),
> void *data))
We cannot change proc_find_memory_regions such that FUNC is a pointer
to a function that takes no argument (in place of the 6 that it has).
This is because proc_find_memory_regions is used as a target_ops method.
However, it turns out that changing iterate_over_mappings to conform
to the profile imposed by the target_ops vector is possible without
much effort.
gdb/ChangeLog:
* procfs.c (iterate_over_mappings_cb_ftype): New typedef.
(iterate_over_mappings): Adjust function profile. Add declaration.
(insert_dbx_link_bpt_in_region, info_mappings_callback):
Adjust accordingly.
Diffstat (limited to 'gdb/procfs.c')
-rw-r--r-- | gdb/procfs.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/gdb/procfs.c b/gdb/procfs.c index a04b604a64d..57270fc509f 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -445,6 +445,19 @@ static void free_syscalls (procinfo *pi); static int find_syscall (procinfo *pi, char *name); #endif /* DYNAMIC_SYSCALLS */ +/* A function type used as a callback back iterate_over_mappings. */ +typedef int (iterate_over_mappings_cb_ftype) + (CORE_ADDR vaddr, unsigned long size, int read, int write, int execute, + void *data); + +static int iterate_over_mappings + (procinfo *pi, + iterate_over_mappings_cb_ftype *child_func, + void *data, + int (*func) (struct prmap *map, + iterate_over_mappings_cb_ftype *child_func, + void *data)); + /* The head of the procinfo list: */ static procinfo * procinfo_list; @@ -4096,7 +4109,7 @@ solib_mappings_callback (struct prmap *map, int (*func) (int, CORE_ADDR), static int insert_dbx_link_bpt_in_region (struct prmap *map, - int (*child_func) (), + iterate_over_mappings_cb_ftype *child_func, void *data) { procinfo *pi = (procinfo *) data; @@ -5617,9 +5630,11 @@ procfs_use_watchpoints (struct target_ops *t) */ static int -iterate_over_mappings (procinfo *pi, int (*child_func) (), void *data, +iterate_over_mappings (procinfo *pi, + iterate_over_mappings_cb_ftype *child_func, + void *data, int (*func) (struct prmap *map, - int (*child_func) (), + iterate_over_mappings_cb_ftype *child_func, void *data)) { char pathname[MAX_PROC_NAME_SIZE]; @@ -5767,7 +5782,9 @@ mappingflags (long flags) */ static int -info_mappings_callback (struct prmap *map, int (*ignore) (), void *unused) +info_mappings_callback (struct prmap *map, + iterate_over_mappings_cb_ftype *ignore, + void *unused) { unsigned int pr_off; |