forked from Imagelibrary/binutils-gdb
convert to_auxv_parse
2014-02-19 Tom Tromey <tromey@redhat.com> * auxv.c (default_auxv_parse): No longer static. (target_auxv_parse): Unconditionally delegate. * auxv.h (default_auxv_parse): Declare. * target-delegates.c: Rebuild. * target.c: Include auxv.h. * target.h (struct target_ops) <to_auxv_parse>: Use TARGET_DEFAULT_FUNC.
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
2014-02-19 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* auxv.c (default_auxv_parse): No longer static.
|
||||
(target_auxv_parse): Unconditionally delegate.
|
||||
* auxv.h (default_auxv_parse): Declare.
|
||||
* target-delegates.c: Rebuild.
|
||||
* target.c: Include auxv.h.
|
||||
* target.h (struct target_ops) <to_auxv_parse>: Use
|
||||
TARGET_DEFAULT_FUNC.
|
||||
|
||||
2014-02-19 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* target-delegates.c: Rebuild.
|
||||
|
||||
11
gdb/auxv.c
11
gdb/auxv.c
@@ -254,7 +254,7 @@ memory_xfer_auxv (struct target_ops *ops,
|
||||
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. */
|
||||
static int
|
||||
int
|
||||
default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
|
||||
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
|
||||
{
|
||||
@@ -286,13 +286,8 @@ int
|
||||
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
|
||||
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = ops; t != NULL; t = t->beneath)
|
||||
if (t->to_auxv_parse != NULL)
|
||||
return t->to_auxv_parse (t, readptr, endptr, typep, valp);
|
||||
|
||||
return default_auxv_parse (ops, readptr, endptr, typep, valp);
|
||||
return current_target.to_auxv_parse (¤t_target, readptr, endptr,
|
||||
typep, valp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,13 @@
|
||||
|
||||
/* See "include/elf/common.h" for the definition of valid AT_* values. */
|
||||
|
||||
/* The default implementation of to_auxv_parse, used by the target
|
||||
stack. */
|
||||
|
||||
extern int default_auxv_parse (struct target_ops *ops, 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.
|
||||
|
||||
@@ -782,6 +782,13 @@ delegate_get_ada_task_ptid (struct target_ops *self, long arg1, long arg2)
|
||||
return self->to_get_ada_task_ptid (self, arg1, arg2);
|
||||
}
|
||||
|
||||
static int
|
||||
delegate_auxv_parse (struct target_ops *self, gdb_byte **arg1, gdb_byte *arg2, CORE_ADDR *arg3, CORE_ADDR *arg4)
|
||||
{
|
||||
self = self->beneath;
|
||||
return self->to_auxv_parse (self, arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
static int
|
||||
delegate_can_execute_reverse (struct target_ops *self)
|
||||
{
|
||||
@@ -1594,6 +1601,8 @@ install_delegators (struct target_ops *ops)
|
||||
ops->to_flash_done = delegate_flash_done;
|
||||
if (ops->to_get_ada_task_ptid == NULL)
|
||||
ops->to_get_ada_task_ptid = delegate_get_ada_task_ptid;
|
||||
if (ops->to_auxv_parse == NULL)
|
||||
ops->to_auxv_parse = delegate_auxv_parse;
|
||||
if (ops->to_can_execute_reverse == NULL)
|
||||
ops->to_can_execute_reverse = delegate_can_execute_reverse;
|
||||
if (ops->to_execution_direction == NULL)
|
||||
@@ -1773,6 +1782,7 @@ install_dummy_methods (struct target_ops *ops)
|
||||
ops->to_flash_erase = tdefault_flash_erase;
|
||||
ops->to_flash_done = tdefault_flash_done;
|
||||
ops->to_get_ada_task_ptid = default_get_ada_task_ptid;
|
||||
ops->to_auxv_parse = default_auxv_parse;
|
||||
ops->to_can_execute_reverse = tdefault_can_execute_reverse;
|
||||
ops->to_execution_direction = default_execution_direction;
|
||||
ops->to_supports_multi_process = tdefault_supports_multi_process;
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "tracepoint.h"
|
||||
#include "gdb/fileio.h"
|
||||
#include "agent.h"
|
||||
#include "auxv.h"
|
||||
|
||||
static void target_info (char *, int);
|
||||
|
||||
|
||||
@@ -706,7 +706,8 @@ struct target_ops
|
||||
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);
|
||||
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
|
||||
TARGET_DEFAULT_FUNC (default_auxv_parse);
|
||||
|
||||
/* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
|
||||
sequence of bytes in PATTERN with length PATTERN_LEN.
|
||||
|
||||
Reference in New Issue
Block a user