X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fexec.c;h=efc504eca47fd9a7128940087a2f1c204577e6fd;hb=599956cfe164ca2f4f7d04b90aee1db98930a023;hp=1c3c16c053e9e7bc78bfeb1c9a930cd96bbd9793;hpb=d55e5aa6b29906346c51ad00e6a9b112590aa294;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/exec.c b/gdb/exec.c index 1c3c16c053..efc504eca4 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -18,38 +18,34 @@ along with this program. If not, see . */ #include "defs.h" - -/* Standard C includes. */ -#include -#include -#include - -/* Standard C++ includes. */ -#include - -/* Local non-gdb includes. */ -#include "arch-utils.h" -#include "common/pathstuff.h" -#include "completer.h" -#include "exec.h" -#include "filenames.h" #include "frame.h" -#include "gcore.h" -#include "gdb_bfd.h" -#include "gdbcmd.h" -#include "gdbcore.h" -#include "gdbthread.h" #include "inferior.h" +#include "target.h" +#include "gdbcmd.h" #include "language.h" +#include "filenames.h" +#include "symfile.h" #include "objfiles.h" +#include "completer.h" +#include "value.h" +#include "exec.h" #include "observable.h" +#include "arch-utils.h" +#include "gdbthread.h" #include "progspace.h" -#include "readline/readline.h" -#include "solist.h" +#include "gdb_bfd.h" +#include "gcore.h" #include "source.h" -#include "symfile.h" -#include "target.h" -#include "value.h" + +#include +#include "readline/tilde.h" +#include "gdbcore.h" + +#include +#include +#include "solist.h" +#include +#include "gdbsupport/pathstuff.h" void (*deprecated_file_changed_hook) (const char *); @@ -88,7 +84,7 @@ static exec_target exec_ops; /* Whether to open exec and core files read-only or read-write. */ -int write_files = 0; +bool write_files = false; static void show_write_files (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) @@ -152,7 +148,7 @@ void try_open_exec_file (const char *exec_file_host, struct inferior *inf, symfile_add_flags add_flags) { - struct gdb_exception prev_err = exception_none; + struct gdb_exception prev_err; /* exec_file_attach and symbol_file_add_main may throw an error if the file cannot be opened either locally or remotely. @@ -165,41 +161,31 @@ try_open_exec_file (const char *exec_file_host, struct inferior *inf, Even without a symbol file, the remote-based debugging session should continue normally instead of ending abruptly. Hence we catch thrown errors/exceptions in the following code. */ - std::string saved_message; - TRY + try { /* We must do this step even if exec_file_host is NULL, so that exec_file_attach will clear state. */ exec_file_attach (exec_file_host, add_flags & SYMFILE_VERBOSE); } - CATCH (err, RETURN_MASK_ERROR) + catch (gdb_exception_error &err) { if (err.message != NULL) - warning ("%s", err.message); - - prev_err = err; + warning ("%s", err.what ()); - /* Save message so it doesn't get trashed by the catch below. */ - if (err.message != NULL) - { - saved_message = err.message; - prev_err.message = saved_message.c_str (); - } + prev_err = std::move (err); } - END_CATCH if (exec_file_host != NULL) { - TRY + try { symbol_file_add_main (exec_file_host, add_flags); } - CATCH (err, RETURN_MASK_ERROR) + catch (const gdb_exception_error &err) { if (!exception_print_same (prev_err, err)) - warning ("%s", err.message); + warning ("%s", err.what ()); } - END_CATCH } } @@ -468,14 +454,14 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect, encountered on sparc-solaris 2.10 a shared library with an empty .bss section to which a symbol named "_end" was attached. The address of this symbol still needs to be relocated. */ - aflag = bfd_get_section_flags (abfd, asect); + aflag = bfd_section_flags (asect); if (!(aflag & SEC_ALLOC)) return; (*table_pp)->owner = NULL; (*table_pp)->the_bfd_section = asect; - (*table_pp)->addr = bfd_section_vma (abfd, asect); - (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (abfd, asect); + (*table_pp)->addr = bfd_section_vma (asect); + (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (asect); (*table_pp)++; } @@ -585,7 +571,7 @@ add_target_sections_of_objfile (struct objfile *objfile) /* Compute the number of sections to add. */ ALL_OBJFILE_OSECTIONS (objfile, osect) { - if (bfd_get_section_size (osect->the_bfd_section) == 0) + if (bfd_section_size (osect->the_bfd_section) == 0) continue; count++; } @@ -599,7 +585,7 @@ add_target_sections_of_objfile (struct objfile *objfile) ALL_OBJFILE_OSECTIONS (objfile, osect) { - if (bfd_get_section_size (osect->the_bfd_section) == 0) + if (bfd_section_size (osect->the_bfd_section) == 0) continue; gdb_assert (ts < table->sections + space + count); @@ -679,7 +665,7 @@ exec_read_partial_read_only (gdb_byte *readbuf, ULONGEST offset, continue; vma = s->vma; - size = bfd_get_section_size (s); + size = bfd_section_size (s); if (vma <= offset && offset < (vma + size)) { ULONGEST amt; @@ -719,9 +705,7 @@ section_table_available_memory (CORE_ADDR memaddr, ULONGEST len, for (target_section *p = sections; p < sections_end; p++) { - if ((bfd_get_section_flags (p->the_bfd_section->owner, - p->the_bfd_section) - & SEC_READONLY) == 0) + if ((bfd_section_flags (p->the_bfd_section) & SEC_READONLY) == 0) continue; /* Copy the meta-data, adjusted. */ @@ -908,17 +892,16 @@ print_section_info (struct target_section_table *t, bfd *abfd) for (p = t->sections; p < t->sections_end; p++) { struct bfd_section *psect = p->the_bfd_section; - bfd *pbfd = psect->owner; - if ((bfd_get_section_flags (pbfd, psect) & (SEC_ALLOC | SEC_LOAD)) + if ((bfd_section_flags (psect) & (SEC_ALLOC | SEC_LOAD)) != (SEC_ALLOC | SEC_LOAD)) continue; - if (bfd_get_section_vma (pbfd, psect) <= abfd->start_address - && abfd->start_address < (bfd_get_section_vma (pbfd, psect) - + bfd_get_section_size (psect))) + if (bfd_section_vma (psect) <= abfd->start_address + && abfd->start_address < (bfd_section_vma (psect) + + bfd_section_size (psect))) { - displacement = p->addr - bfd_get_section_vma (pbfd, psect); + displacement = p->addr - bfd_section_vma (psect); break; } } @@ -949,7 +932,7 @@ print_section_info (struct target_section_table *t, bfd *abfd) if (info_verbose) printf_filtered (" @ %s", hex_string_custom (psect->filepos, 8)); - printf_filtered (" is %s", bfd_section_name (pbfd, psect)); + printf_filtered (" is %s", bfd_section_name (psect)); if (pbfd != abfd) printf_filtered (" in %s", bfd_get_filename (pbfd)); printf_filtered ("\n"); @@ -989,9 +972,8 @@ set_section_command (const char *args, int from_tty) table = current_target_sections; for (p = table->sections; p < table->sections_end; p++) { - if (!strncmp (secname, bfd_section_name (p->bfd, - p->the_bfd_section), seclen) - && bfd_section_name (p->bfd, p->the_bfd_section)[seclen] == '\0') + if (!strncmp (secname, bfd_section_name (p->the_bfd_section), seclen) + && bfd_section_name (p->the_bfd_section)[seclen] == '\0') { offset = secaddr - p->addr; p->addr += offset;