Change target_read_string API

This simplifies the target_read_string API a bit.

Note that some code was using safe_strerror on the error codes
returned by target_read_string.  It seems to me that this is incorrect
(if it was ever correct, it must have been quite a long time ago).

gdb/ChangeLog
2020-06-15  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_nat::handle_output_debug_string):
	Update.
	(windows_nat::handle_ms_vc_exception): Update.
	* target.h (target_read_string): Change API.
	* target.c (target_read_string): Change API.
	* solib-svr4.c (open_symbol_file_object, svr4_read_so_list):
	Update.
	* solib-frv.c (frv_current_sos): Update.
	* solib-dsbt.c (dsbt_current_sos): Update.
	* solib-darwin.c (darwin_current_sos): Update.
	* linux-thread-db.c (inferior_has_bug): Update.
	* expprint.c (print_subexp_standard): Update.
	* ada-lang.c (ada_main_name, ada_tag_name_from_tsd)
	(ada_exception_message_1): Update.
This commit is contained in:
Tom Tromey
2020-06-15 06:28:09 -06:00
parent a5d871ddaf
commit 6692031743
11 changed files with 76 additions and 91 deletions

View File

@@ -865,18 +865,11 @@ ada_main_name (void)
if (msym.minsym != NULL)
{
CORE_ADDR main_program_name_addr;
int err_code;
main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
if (main_program_name_addr == 0)
error (_("Invalid address for Ada main program name."));
target_read_string (main_program_name_addr, &main_program_name,
1024, &err_code);
if (err_code != 0)
return NULL;
main_program_name = target_read_string (main_program_name_addr, 1024);
return main_program_name.get ();
}
@@ -6729,10 +6722,9 @@ ada_tag_name_from_tsd (struct value *tsd)
val = ada_value_struct_elt (tsd, "expanded_name", 1);
if (val == NULL)
return NULL;
gdb::unique_xmalloc_ptr<char> buffer;
int err;
if (target_read_string (value_as_address (val), &buffer, INT_MAX, &err) == 0
|| err != 0)
gdb::unique_xmalloc_ptr<char> buffer
= target_read_string (value_as_address (val), INT_MAX);
if (buffer == nullptr)
return nullptr;
for (p = buffer.get (); *p != '\0'; ++p)
@@ -12109,13 +12101,7 @@ ada_exception_message_1 (void)
if (e_msg_len <= 0)
return NULL;
gdb::unique_xmalloc_ptr<char> e_msg;
int err;
if (target_read_string (value_address (e_msg_val), &e_msg, INT_MAX, &err) == 0
|| err != 0)
return nullptr;
return e_msg;
return target_read_string (value_address (e_msg_val), INT_MAX);
}
/* Same as ada_exception_message_1, except that all exceptions are