diff options
author | Vladimir Prus <vladimir@codesourcery.com> | 2008-05-04 09:28:27 +0000 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2008-05-04 09:28:27 +0000 |
commit | e5e563e46e1d5dcdcb40d78086741e8519e865a6 (patch) | |
tree | 9ccc3d9335405b6278954128e4db4c1caccafab5 /gdb/target.h | |
parent | 3b1b1d73c10de7143a19d460cabb0543891513be (diff) | |
download | gdb-e5e563e46e1d5dcdcb40d78086741e8519e865a6.tar.gz |
Fix auxv data parsing on 64-bit solaris
* target.h (struct target_ops): New field to_auxv_parse.
* auxv.c (default_auxv_parse): New, renamed from previous
target_auxv_parse.
(target_auxv_parse): Try to call target method. Fallback to
default_auxv_parse if not found.
* procfs.c (procfs_auxv_parse): New.
(init_procfs_ops): On Solaris, in 64-bit mode, install
procfs_auxv_parse.
Diffstat (limited to 'gdb/target.h')
-rw-r--r-- | gdb/target.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/target.h b/gdb/target.h index 3b424ba585f..8822a4061b1 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -498,6 +498,13 @@ struct target_ops was available. */ const struct target_desc *(*to_read_description) (struct target_ops *ops); + /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR. + Return 0 if *READPTR is already at the end of the buffer. + Return -1 if there is insufficient buffer for a whole entry. + Return 1 if an entry was read into *TYPEP and *VALP. */ + int (*to_auxv_parse) (struct target_ops *ops, gdb_byte **readptr, + gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp); + int to_magic; /* Need sub-structure for target machine related rather than comm related? */ |