diff options
author | Kamil Rytarowski <n54@gmx.com> | 2020-04-08 04:01:10 +0200 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2020-04-09 13:17:29 +0200 |
commit | 206c98a6503de9c78550b7e503526f59b5b2f491 (patch) | |
tree | 02f2c466cd4d19c55101974b3a293016b724e946 /gdb/auxv.h | |
parent | ae4b1d73f97e0b2a5975b3c0039b12a7f64b793b (diff) | |
download | binutils-206c98a6503de9c78550b7e503526f59b5b2f491.zip binutils-206c98a6503de9c78550b7e503526f59b5b2f491.tar.gz binutils-206c98a6503de9c78550b7e503526f59b5b2f491.tar.bz2 |
Add SVR4 psABI specific parser for AUXV entries
NetBSD and OpenBSD always use an int to store the type as
defined in the SVR4 psABI specifications rather than long
as assumed by the default parser.
Define svr4_auxv_parse() that shares code with default_auxv_parse().
Remove obsd_auxv_parse() and switch OpenBSD to svr4_auxv_parse().
Remove not fully accurate comment from obsd-tdep.c.
Use svr4_auxv_parse() on NetBSD.
gdb/ChangeLog:
* auxv.h (svr4_auxv_parse): New.
* auxv.c (default_auxv_parse): Split into default_auxv_parse
and generic_auxv_parse.
(svr4_auxv_parse): Add.
* obsd-tdep.c: Include "auxv.h".
(obsd_auxv_parse): Remove.
(obsd_init_abi): Remove comment.
(obsd_init_abi): Change set_gdbarch_auxv_parse passed argument
from `obsd_auxv_parse' to `svr4_auxv_parse'.
* nbsd-tdep.c: Include "auxv.h".
(nbsd_init_abi): Call set_gdbarch_auxv_parse.
Diffstat (limited to 'gdb/auxv.h')
-rw-r--r-- | gdb/auxv.h | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -25,12 +25,27 @@ /* See "include/elf/common.h" for the definition of valid AT_* values. */ /* The default implementation of to_auxv_parse, used by the target - stack. */ + stack. + 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. */ extern int default_auxv_parse (struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp); +/* The SVR4 psABI implementation of to_auxv_parse, that uses an int to + store the type rather than long as assumed by the default parser. + + 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. */ +extern int svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr, + gdb_byte *endptr, CORE_ADDR *typep, + CORE_ADDR *valp); + /* 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. |