X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fcorefile.c;h=5ad4d40ec66f703569ce7250184cb35c08bbc28e;hb=93692b589dc7017d5a2fbdffdfad5f84f597d8f1;hp=eba36d6419aa76bc9d5be4c7a14cf328a4a6f1b3;hpb=8d7493201cf01c9836403695f67f7e157341bfd5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/corefile.c b/gdb/corefile.c index eba36d6419..5ad4d40ec6 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -1,6 +1,6 @@ /* Core dump and executable file functions above target vector, for GDB. - Copyright (C) 1986-2015 Free Software Foundation, Inc. + Copyright (C) 1986-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -273,7 +273,7 @@ read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) status = target_read_stack (memaddr, myaddr, len); if (status != 0) - memory_error (status, memaddr); + memory_error (TARGET_XFER_E_IO, memaddr); } /* Same as target_read_code, but report an error if can't read. */ @@ -285,7 +285,7 @@ read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) status = target_read_code (memaddr, myaddr, len); if (status != 0) - memory_error (status, memaddr); + memory_error (TARGET_XFER_E_IO, memaddr); } /* Read memory at MEMADDR of length LEN and put the contents in @@ -306,6 +306,24 @@ safe_read_memory_integer (CORE_ADDR memaddr, int len, return 1; } +/* Read memory at MEMADDR of length LEN and put the contents in + RETURN_VALUE. Return 0 if MEMADDR couldn't be read and non-zero + if successful. */ + +int +safe_read_memory_unsigned_integer (CORE_ADDR memaddr, int len, + enum bfd_endian byte_order, + ULONGEST *return_value) +{ + gdb_byte buf[sizeof (ULONGEST)]; + + if (target_read_memory (memaddr, buf, len)) + return 0; + + *return_value = extract_unsigned_integer (buf, len, byte_order); + return 1; +} + LONGEST read_memory_integer (CORE_ADDR memaddr, int len, enum bfd_endian byte_order) @@ -376,7 +394,7 @@ read_memory_string (CORE_ADDR memaddr, char *buffer, int max_len) CORE_ADDR read_memory_typed_address (CORE_ADDR addr, struct type *type) { - gdb_byte *buf = alloca (TYPE_LENGTH (type)); + gdb_byte *buf = (gdb_byte *) alloca (TYPE_LENGTH (type)); read_memory (addr, buf, TYPE_LENGTH (type)); return extract_typed_address (buf, type); @@ -392,7 +410,7 @@ write_memory (CORE_ADDR memaddr, status = target_write_memory (memaddr, myaddr, len); if (status != 0) - memory_error (status, memaddr); + memory_error (TARGET_XFER_E_IO, memaddr); } /* Same as write_memory, but notify 'memory_changed' observers. */ @@ -412,7 +430,7 @@ write_memory_unsigned_integer (CORE_ADDR addr, int len, enum bfd_endian byte_order, ULONGEST value) { - gdb_byte *buf = alloca (len); + gdb_byte *buf = (gdb_byte *) alloca (len); store_unsigned_integer (buf, len, byte_order, value); write_memory (addr, buf, len); @@ -425,7 +443,7 @@ write_memory_signed_integer (CORE_ADDR addr, int len, enum bfd_endian byte_order, LONGEST value) { - gdb_byte *buf = alloca (len); + gdb_byte *buf = (gdb_byte *) alloca (len); store_signed_integer (buf, len, byte_order, value); write_memory (addr, buf, len); @@ -480,7 +498,7 @@ complete_set_gnutarget (struct cmd_list_element *cmd, for (last = 0; bfd_targets[last] != NULL; ++last) ; - bfd_targets = xrealloc (bfd_targets, (last + 2) * sizeof (const char **)); + bfd_targets = XRESIZEVEC (const char *, bfd_targets, last + 2); bfd_targets[last] = "auto"; bfd_targets[last + 1] = NULL; }