#include <fcntl.h>
-/* This function is called like a to_xfer_partial hook,
- but must be called with TARGET_OBJECT_AUXV.
- It handles access via /proc/PID/auxv, which is the common method.
- This function is appropriate for doing:
- #define NATIVE_XFER_AUXV procfs_xfer_auxv
- for a native target that uses inftarg.c's child_xfer_partial hook. */
+/* This function is called like a to_xfer_partial hook, but must be
+ called with TARGET_OBJECT_AUXV. It handles access via
+ /proc/PID/auxv, which is a common method for native targets. */
LONGEST
procfs_xfer_auxv (struct target_ops *ops,
- int /* enum target_object */ object,
+ enum target_object object,
const char *annex,
gdb_byte *readbuf,
const gdb_byte *writebuf,
{
const int sizeof_auxv_field = gdbarch_ptr_bit (target_gdbarch)
/ TARGET_CHAR_BIT;
+ const enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch);
gdb_byte *ptr = *readptr;
if (endptr == ptr)
if (endptr - ptr < sizeof_auxv_field * 2)
return -1;
- *typep = extract_unsigned_integer (ptr, sizeof_auxv_field);
+ *typep = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
ptr += sizeof_auxv_field;
- *valp = extract_unsigned_integer (ptr, sizeof_auxv_field);
+ *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
ptr += sizeof_auxv_field;
*readptr = ptr;
fprintf_filtered (file, "%s\n", plongest (val));
break;
case hex:
- fprintf_filtered (file, "0x%s\n", paddr_nz (val));
+ fprintf_filtered (file, "%s\n", paddress (target_gdbarch, val));
break;
case str:
{
struct value_print_options opts;
get_user_print_options (&opts);
if (opts.addressprint)
- fprintf_filtered (file, "0x%s", paddr_nz (val));
- val_print_string (val, -1, 1, file, &opts);
+ fprintf_filtered (file, "%s", paddress (target_gdbarch, val));
+ val_print_string (builtin_type (target_gdbarch)->builtin_char,
+ val, -1, file, &opts);
fprintf_filtered (file, "\n");
}
break;