Commit Graph

41021 Commits

Author SHA1 Message Date
Simon Marchi 4f0420fdab Remove regcache_raw_write_part
Remove regcache_raw_write_part, update callers to use
regcache::raw_write_part instead.

gdb/ChangeLog:

	* regcache.h (regcache_raw_write_part): Remove, update callers
	to use regcache::raw_write_part instead.
	* regcache.c (regcache_raw_write_part): Remove.
2018-05-30 14:54:40 -04:00
Simon Marchi 502fe83eb5 Remove regcache_raw_read_part
Remove regcache_raw_read_part, update callers to use
readable_regcache::raw_read_part instead.

gdb/ChangeLog:

	* regcache.h (regcache_raw_read_part): Remove, update callers to
	use readable_regcache::raw_read_part instead.
	* regcache.c (regcache_raw_read_part): Remove.
2018-05-30 14:54:39 -04:00
Simon Marchi dca08e1fe1 Remove regcache_cooked_read
Remove regcache_cooked_read, update callers to use
readable_regcache::cooked_read instead.

gdb/ChangeLog:

	* regcache.h (regcache_cooked_read): Remove, update callers to
	use readable_regcache::cooked_read instead.
	* regcache.c (regcache_cooked_read): Remove.
2018-05-30 14:54:38 -04:00
Simon Marchi 10eaee5f56 Remove regcache_raw_write
Remove regcache_raw_write, update all callers to use regcache::raw_write
instead.

gdb/ChangeLog:

	* regcache.h (regcache_raw_write): Remove, update callers to use
	regcache::raw_write instead.
	* regcache.c (regcache_raw_write): Remove.
2018-05-30 14:54:37 -04:00
Simon Marchi 0b8835861c Remove regcache_raw_read
Remove regcache_raw_read, update all callers to use
readable_regcache::raw_read instead.

gdb/ChangeLog:

	* regcache.h (regcache_raw_read): Remove, update callers to use
	readable_regcache::raw_read instead.
	* regcache.c (regcache_raw_read): Remove.
2018-05-30 14:54:36 -04:00
Simon Marchi 0b47d9858c Remove regcache_raw_update
Remove regcache_raw_update, update callers to use
readable_regcache::raw_update instead.

gdb/ChangeLog:

	* regcache.h (regcache_raw_update): Remove, update callers to
	use readable_regcache::raw_update instead.
	* regcache.c (regcache_raw_update): Remove.
2018-05-30 14:54:36 -04:00
Simon Marchi 0ec9f11447 Remove regcache_register_status
Remove regcache_register_status, change callers to use
reg_buffer::get_register_status directly.

gdb/ChangeLog:

	* regcache.h (regcache_register_status): Remove, update callers
	to use reg_buffer::get_register_status directly instead.
	* regcache.c (regcache_register_status): Remove.
2018-05-30 14:54:35 -04:00
Simon Marchi 222312d359 Remove regcache_get_ptid
Remove regcache_get_ptid, change all callers to call the regcache method
directly.

gdb/ChangeLog:

	* regcache.h (regcache_get_ptid): Remove, update all callers to
	call regcache::ptid instead.
	* regcache.c (regcache_get_ptid): Remove.
2018-05-30 14:54:34 -04:00
Simon Marchi fdbe37e35f Add or1k target to --enable-targets=all
The or1k-tdep.o object is missing from the ALL_TARGET_OBS, which means
it's not currently included in an --enable-targets=all build.

gdb/ChangeLog:

	* Makefile.in (ALL_TARGET_OBS): Add or1k-tdep.o.
2018-05-30 12:04:35 -04:00
Pedro Alves f7c6f42310 Mark END_CATCH as ATTRIBUTE_NORETURN (-Wmaybe-uninitialized warnings)
This commit fixes a set of -Wmaybe-uninitialized warnings in GDB and
GDBserver, seen with GCC 7.3.1 on F27 at -O2.  Specifically, all of
these:

 src/gdb/breakpoint.c:5040:4: warning: ‘e’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 src/gdb/cli/cli-cmds.c:277:71: warning: ‘tracker’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 src/gdb/cli/cli-cmds.c:302:22: warning: ‘word’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 src/gdb/gdbserver/server.c:1895:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 src/gdb/gdbserver/server.c:1966:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]

For example, looking at one of the gdbserver ones in more detail:

 ../../../src/gdb/gdbserver/server.c: In function ‘int handle_qxfer_btrace_conf(const char*, gdb_byte*, const gdb_byte*, ULONGEST, LONGEST)’:
 ../../../src/gdb/gdbserver/server.c:1966:7: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
	if (result != 0)
	^~

In this case (like the others), the 'result' variable is assigned in
both TRY and CATCH blocks:

      TRY
        {
          result = target_read_btrace_conf (thread->btrace, &cache);
          if (result != 0)
            memcpy (own_buf, cache.buffer, cache.used_size);
        }
      CATCH (exception, RETURN_MASK_ERROR)
        {
          sprintf (own_buf, "E.%s", exception.message);
          result = -1;
        }
      END_CATCH

      if (result != 0)
        return -3;

so it would seem like the warning is bogus.

However, END_CATCH is really a catch block in disguise, and that path
indeed does not initialize the variable:

#define END_CATCH				\
    catch (...)					\
      {						\
	exception_rethrow ();			\
      }						\
  }

exception_rethrow does not return normally (it rethrows the current
exception after running cleanups), but the compiler can not see that.
If it could return normally, then indeed 'result' could be used
uninitialized if the TRY block threw some non-gdb exception, which
would be caught by END_CATCH.

The fix it to let the compiler know that the exception_rethrow does
not return normally, using ATTRIBUTE_NORETURN.

gdb/ChangeLog:
2018-05-30  Pedro Alves  <palves@redhat.com>

	* common/common-exceptions.h (exception_rethrow): Use
	ATTRIBUTE_NORETURN.
2018-05-30 14:18:47 +01:00
Simon Marchi 5294170687 Remove "struct" keyword in range-based for loops
I get this kind of errors with GCC 6.3.0:

/home/simark/src/binutils-gdb/gdb/breakpoint.c: In function 'void print_solib_event(int)':
/home/simark/src/binutils-gdb/gdb/breakpoint.c:4618:12: error: types may not be defined in a for-range-declaration [-Werror]
       for (struct so_list *iter : current_program_space->added_solibs)
            ^~~~~~

Removing the struct keyword makes it happy.

gdb/ChangeLog:

	* breakpoint.c (print_solib_event, check_status_catch_solib):
	Remove struct keyword in range-based for loops.
	* dbxread.c (find_corresponding_bincl_psymtab): Likewise.
	* dwarf2read.c (compute_delayed_physnames, rust_union_quirks);
	Likewise.
	* linespec.c (find_superclass_methods, search_minsyms_for_name):
	Likewise.
	* symfile.c (addr_info_make_relative): Likewise.
	* thread.c (value_in_thread_stack_temporaries): Likewise.
2018-05-29 20:13:06 -04:00
Weimin Pan 64cc34d870 Removing lookup_minimal_symbol_and_objfile
Function lookup_minimal_symbol_and_objfile iterates on all objfiles and
calls lookup_minimal_symbol for each of them, effectively searching in all
objfiles.  lookup_bound_minimal_symbol calls lookup_minimal_symbol with NULL,
which also effectively searches all objfiles.  AFAIK, they do exactly the same
thing, so we can get rid of one (and lookup_minimal_symbol_and_objfile happens
to be the most inefficient because it ends up n^2 on the number of objfiles).

Tested in both aarch64-linux-gnu and amd64-linux-gnu. No regressions.
2018-05-29 22:37:07 +00:00
Tom Tromey e7ec8713ec Fix fall-through comment in windows-nat.c
Now that the mingw builder in the buildbot is working again, it
pointed out a build failure due to a missing fall-through comment in
windows-nat.c.  This patch fixes the problem.

Tested by first triggering the failure with a local mingw build, then
by rebuilding successfully with the patch.

I'm checking this in as obvious.

gdb/ChangeLog
2018-05-29  Tom Tromey  <tom@tromey.com>

	* windows-nat.c (handle_exception): Update fall-through comment.
2018-05-29 14:41:29 -06:00
Tom Tromey bcb430e4cd Change program_space::added_solibs to a std::vector
This changes program_space::added_solibs to a std::vector, removing a
VEC.

Tested by the buildbot.

gdb/ChangeLog
2018-05-29  Tom Tromey  <tom@tromey.com>

	* progspace.h (so_list_ptr): Remove typedef.  Don't declare VEC.
	(struct program_space) <added_solibs>: Now a std::vector.
	* breakpoint.c (print_solib_event): Update.
	(check_status_catch_solib): Update.
	* progspace.c (clear_program_space_solib_cache): Update.
	* solib.c (update_solib_list): Update.
2018-05-29 11:51:11 -06:00
Tom Tromey 894882e344 Remove a VEC from type.c
This removes a VEC from type.c, by using std::vector.

While doing this I also took the opportunity to change
types_deeply_equal to return bool.  This caught some weird code in
typy_richcompare, now fixed.

And, since I was changing types_deeply_equal, it seemed like a good
idea to also change types_equal, so this patch includes that as well.

Tested by the buildbot.

ChangeLog
2018-05-29  Tom Tromey  <tom@tromey.com>

	* python/py-type.c (typy_richcompare): Update.
	* guile/scm-type.c (tyscm_equal_p_type_smob): Update.
	* gdbtypes.h (types_deeply_equal): Return bool.
	(types_equal): Likewise.
	* gdbtypes.c (type_equality_entry_d): Remove typedef.  Don't
	declare VEC.
	(check_types_equal): Change worklist to std::vector.  Return
	bool.
	(struct type_equality_entry): Add constructor.
	(compare_maybe_null_strings): Return bool.
	(check_types_worklist): Return bool.  Change worklist to
	std::vector.
	(types_deeply_equal): Use std::vector.
	(types_equal): Return bool.
	(compare_maybe_null_strings): Simplify.
2018-05-29 11:44:12 -06:00
Tom Tromey 10b2ded43c Remove tp_t typedef
The tp_t typedef is no longer used and can be removed.

ChangeLog
2018-05-29  Tom Tromey  <tom@tromey.com>

	* record-btrace.c (tp_t): Remove typedef.  Don't declare VEC.
2018-05-29 08:52:56 -06:00
Tom Tromey 4f7deebe0c Remove const_char_ptr typedef
The const_char_ptr is no longer used, so it can be removed.

ChangeLog
2018-05-29  Tom Tromey  <tom@tromey.com>

	* objc-lang.h: Don't include cp-support.h.
	* common/gdb_vecs.h (const_char_ptr): Remove typedef.  Don't
	declare VEC.
2018-05-29 08:52:55 -06:00
Tom Tromey b8283aea9e Remove last reference to REMOTE_OBS
REMOTE_OBS was removed from Makefile.in in
18ca73470a, but one reference remains.
This patch removes the lingerer.

ChangeLog
2018-05-27  Tom Tromey  <tom@tromey.com>

	* Makefile.in (DEPFILES): Don't reference REMOTE_OBS.
2018-05-27 14:54:08 -06:00
Tom Tromey 41a883c8ed Clear entire "location" in value constructor
My recent change to allocate values with "new" may have introduced a
small bug.  In particular, the previous code allocated with XCNEW, but
the new code only clears a part of the "location" field in the
constructor.  I didn't try very hard to actually trigger a bug here,
the problem remains theoretical.

This patch just arranges to initialize the entire location.

Regression tested by the buildbot.

2018-05-25  Tom Tromey  <tom@tromey.com>

	* value.c (value::location): Initialize.
2018-05-25 13:53:09 -06:00
Tom Tromey bf259e253f Remove cleanups from dbxread.c
This removes the remaining cleanups from dbxread.c, via std::vector,
scoped_restore, and unique_xmalloc_ptr.

Tested by the buildbot.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* dbxread.c (init_bincl_list): Remove.
	(bincl_list): Now a std::vector.
	(bincls_allocated, next_bincl): Remove.
	(free_bincl_list, do_free_bincl_list_cleanup)
	(make_cleanup_free_bincl_list): Remove.
	(dbx_read_symtab, elfstab_build_psymtabs): Use scoped_restore,
	unique_xmalloc_ptr.
	(find_corresponding_bincl_psymtab, read_dbx_symtab): Update.
	(struct header_file_location): Add constructor.
	(add_bincl_to_list): Remove.
2018-05-25 13:08:55 -06:00
Tom Tromey d525a99be1 Add "name" method to class interp
In a review Pedro pointed out that interp::name is intended to be
read-only, and so an accessor would be a better fit.  This patch
renames the field and adds a "name" method that is used instead.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* tui/tui.c (tui_enable): Update.
	* mi/mi-interp.c (mi_interp::init): Update.
	* interps.h (class interp) <name>: New method.
	<m_name>: Rename from name.
	(~scoped_restore_interp): Update.
	* interps.c (interp::interp): Update.
	(interp_add, interp_set, interp_lookup_existing)
	(current_interp_named_p): Update.
2018-05-25 12:41:02 -06:00
Tom Tromey da505cff6e Remove interp_name
This removes the interp_name function.  It is only used a few spots --
one of which was only calling it on "this".  It's simpler to remove
it; and should class interp become opaque in the future, it will be
just as easy to update the two remaining spots to use an accessor.

ChangeLog
2018-05-25  Tom Tromey	<tom@tromey.com>

	* interps.c (interp_name): Remove.
	* mi/mi-interp.c (mi_interp::init): Update.
	* interps.h (interp_name): Remove.
	(~scoped_restore_interp): Update.
	* tui/tui.c (tui_enable): Update.
2018-05-25 12:41:01 -06:00
Tom Tromey 29f9434081 Remove interp_ui_out
The function interp_ui_out simply calls the interp_ui_out method.
However, if it is passed a NULL interpreter, it first finds the
current interpreter.  I believe, though, that NULL is never passed
here, and I think it's simpler to just remove this function and
require callers to be more explicit.

ChangeLog
2018-05-25  Tom Tromey	<tom@tromey.com>

	* utils.c (fputs_maybe_filtered): Update.
	* linespec.c (decode_line_full): Update.
	* mi/mi-interp.c (mi_on_normal_stop_1, mi_tsv_modified)
	(mi_print_breakpoint_for_event, mi_solib_loaded)
	(mi_solib_unloaded, mi_command_param_changed, mi_memory_changed)
	(mi_user_selected_context_changed): Update.
	* mi/mi-main.c (mi_execute_command): Update.
	* cli/cli-script.c (execute_control_command): Update.
	* python/python.c (execute_gdb_command): Update.
	* solib.c (info_sharedlibrary_command): Update.
	* interps.c (interp_ui_out): Remove.
	* interps.h (interp_ui_out): Remove.
2018-05-25 12:41:01 -06:00
Tom Tromey 716b8bc52e Change the as_*_interp functions to use dynamic_cast
This changes the various as_*_interp functions to be implemented using
dynamic_cast.  I believe this is a small improvement, because it is
more typesafe -- the C++ runtime does the type-checking for us.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-interp.c (as_tui_interp): Use dynamic_cast.
	* mi/mi-interp.c (as_mi_interp): Use dynamic_cast.
	* cli/cli-interp.c (as_cli_interp): Use dynamic_cast.
2018-05-25 12:41:00 -06:00
Tom Tromey 753ff9bd83 Use scoped_restore in a couple of interp-related places
While looking through the "interp" code I found a couple of spots that
could use scoped_restore.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* cli/cli-interp.c (safe_execute_command): Use scoped_restore.
	* interps.c (interp_exec): Use scoped_restore.
2018-05-25 12:41:00 -06:00
Tom Tromey 5ca3b2605c Use gdb::byte_vector in remote.c
This changes a couple of spots in remote.c to use gdb::byte_vector,
allowing for some cleanup removal.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* remote.c (remote_target::remote_file_get): Use
	gdb::byte_vector.
	(remote_target::remote_file_put): Likewise.
2018-05-25 10:49:22 -06:00
Tom Tromey 3173aa2fc2 Remove cleanups from coff-pe-read.c
This removes cleanups from coff-pe-read.c, using std::string,
std::vector, and gdb::def_vector.

Tested by the buildbot, though I'm not sure these code paths are
exercised there.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* coff-pe-read.c (struct read_pe_section_data) <section_name>: Now
	a std::string.
	(get_pe_section_index, add_pe_exported_sym): Update.
	(read_pe_exported_syms): Use gdb::def_vector.
2018-05-25 09:08:14 -06:00
Tom Tromey 09a5e1b570 Use TRY/CATCH in remove_prev_frame
This changes remove_prev_frame to use TRY/CATCH instead of a cleanup.
TRY/CATCH seemed appropriate here because the cleanup is only needed
in the case where an exception is thrown.

Tested by the buildbot.

ChangeLog
2018-05-25  Tom Tromey  <tom@tromey.com>

	* frame.c (remove_prev_frame): Remove.
	(get_prev_frame_if_no_cycle): Use TRY/CATCH.
2018-05-25 08:58:36 -06:00
Maciej W. Rozycki d8dab6c3bb MIPS/Linux: Correct o32 core file FGR interpretation
Our interpretation of the layout of floating-point general registers
(FGRs) in o32 MIPS/Linux core files is different from how the kernel
makes them, affecting the CP0 Status.FR=0 aka FP32 mode (we don't
currently support the CP0 Status.FR=1 aka FP64 mode with the o32 ABI).

In the FP32 mode pairs of consecutive even/odd-numbered 32-bit registers
are placed together as 64-bit values in even-indexed 64-bit slots
corresponding to the even index, leaving the odd-indexed 64-bit slots
unused.  These 64-bit values are stored according to the endianness in
effect, which is how the MIPS II SDC1 instruction would store them.

It has always been like that with the Linux kernel for MIPS II and
higher ISA processors, which are the vast majority ever supported, as it
is indeed SDC1 that the kernel uses to store FGRs in a floating-point
context.

With MIPS I processors, which lack the SDC1 instruction, a layout that
we expect used to be used long ago, but it was corrected for consistency
with newer processors back in 2002, with `linux-mips.org' (LMO) commit
42533948caac ("Major pile of FP emulator changes."), the fix corrected
with LMO commit 849fa7a50dff ("R3k FPU ptrace() handling fixes."), and
then broken and fixed over and over again, until last time fixed with
commit 80cbfad79096 ("MIPS: Correct MIPS I FP context layout").

Consequently the values we see in FP32 core files or produce with the
`gcore' command are different from those obtained from the same FP
context of a live process, e.g. with a big-endian configuration these
live values:

(gdb) info registers float
f0:  0x4b5c6d7e flt: 14445950          dbl: 1.7446153562345001e-274
f1:  0x0718293a flt: 1.14473244e-34
f2:  0xc3d4e5f6 flt: -425.79657        dbl: -1.046160437414959e-233
f3:  0x8f90a1b2 flt: -1.42617791e-29
f4:  0x4c5d6e7f flt: 58046972          dbl: 1.1908587841220294e-269
f5:  0x08192a3b flt: 4.60914044e-34
f6:  0xc4d5e6f7 flt: -1711.21765       dbl: -6.2784661835068965e-306
f7:  0x8091a2b3 flt: -1.33745124e-38
f8:  0x45566778 flt: 3430.4668         dbl: 1.6530355595710607e-303
f9:  0x01122334 flt: 2.68412219e-38
f10: 0xcddeeff0 flt: -467533312        dbl: -2.1174864564135575e-262
f11: 0x899aabbc flt: -3.72356497e-33
f12: 0x46576879 flt: 13786.1182        dbl: 1.143296486773654e-298
f13: 0x02132435 flt: 1.08102453e-37
f14: 0xcedfe0f1 flt: -1.87803046e+09   dbl: -1.4399511533369862e-257
f15: 0x8a9bacbd flt: -1.4990934e-32
f16: 0x4758697a flt: 55401.4766        dbl: 7.8856820439568725e-294
f17: 0x03142536 flt: 4.3536007e-37
f18: 0xcfd0e1f2 flt: -7.00893696e+09   dbl: -9.7791926757340559e-253
f19: 0x8b9cadbe flt: -6.03504325e-32
f20: 0x48596a7b flt: 222633.922        dbl: 5.4255001483306113e-289
f21: 0x04152637 flt: 1.75324132e-36
f22: 0xc0d1e2f3 flt: -6.55895376       dbl: -6.6332401002310683e-248
f23: 0x8c9daebf flt: -2.42948516e-31
f24: 0x495a6b7c flt: 894647.75         dbl: 3.7244369058749787e-284
f25: 0x05162738 flt: 7.06016945e-36
f26: 0xc1d2e3f4 flt: -26.3613052       dbl: -4.4941535759306202e-243
f27: 0x8d9eafb0 flt: -9.77979703e-31
f28: 0x4a5b6c7d flt: 3595039.25        dbl: 2.5514593711161396e-279
f29: 0x06172839 flt: 2.84294945e-35
f30: 0xc2d3e4f5 flt: -105.947182       dbl: -3.035646690850097e-238
f31: 0x8e9fa0b1 flt: -3.93512664e-30
fcsr: 0x0
fir: 0xf30000
(gdb)

show up in a core file as these:

(gdb) info registers float
f0:  0x0718293a flt: 1.14473244e-34    dbl: nan
f1:  0x7ff80000 flt: nan
f2:  0x8f90a1b2 flt: -1.42617791e-29   dbl: nan
f3:  0x7ff80000 flt: nan
f4:  0x08192a3b flt: 4.60914044e-34    dbl: nan
f5:  0x7ff80000 flt: nan
f6:  0x8091a2b3 flt: -1.33745124e-38   dbl: nan
f7:  0x7ff80000 flt: nan
f8:  0x01122334 flt: 2.68412219e-38    dbl: nan
f9:  0x7ff80000 flt: nan
f10: 0x899aabbc flt: -3.72356497e-33   dbl: nan
f11: 0x7ff80000 flt: nan
f12: 0x02132435 flt: 1.08102453e-37    dbl: nan
f13: 0x7ff80000 flt: nan
f14: 0x8a9bacbd flt: -1.4990934e-32    dbl: nan
f15: 0x7ff80000 flt: nan
f16: 0x03142536 flt: 4.3536007e-37     dbl: nan
f17: 0x7ff80000 flt: nan
f18: 0x8b9cadbe flt: -6.03504325e-32   dbl: nan
f19: 0x7ff80000 flt: nan
f20: 0x04152637 flt: 1.75324132e-36    dbl: nan
f21: 0x7ff80000 flt: nan
f22: 0x8c9daebf flt: -2.42948516e-31   dbl: nan
f23: 0x7ff80000 flt: nan
f24: 0x05162738 flt: 7.06016945e-36    dbl: nan
f25: 0x7ff80000 flt: nan
f26: 0x8d9eafb0 flt: -9.77979703e-31   dbl: nan
f27: 0x7ff80000 flt: nan
f28: 0x06172839 flt: 2.84294945e-35    dbl: nan
f29: 0x7ff80000 flt: nan
f30: 0x8e9fa0b1 flt: -3.93512664e-30   dbl: nan
f31: 0x7ff80000 flt: nan
(gdb)

Notice how values from odd-numbered registers are shown in corresponding
even-numbered registers and how dummy 0x7ff80000 NaN values, which the
kernel places in unused slots, are reported in odd-numbered registers.

Correct our intepretation then, to match the kernel's.  As it happens
the o32 FGR core file representation matches that used by the `ptrace'
PTRACE_GETFPREGS request, which means our 64-bit handlers can be readily
used, as they already correctly handle the differences between o32 FP32
mode vs n32/n64 representations.

Adjust comments accordingly throughout, in particular remove a reference
to the r3000/tx39 MIPS I processor peculiarity, long irrelevant.

Add a test case to verify correctness.  Avoid GCC bugs and limitations
in the test case where possible; the test case still fails to build with
GCC 8 and the o32 FP64 mode (i.e. with `-mips32r2 -mfp64' options)
giving:

mips-fpregset-core.c: In function 'main':
mips-fpregset-core.c:66:3: error: inconsistent operand constraints in an 'asm'
   asm (
   ^~~

(GCC PR target/85909), but that is not a concern for us as yet, because
as noted above we do not currently support the o32 FP64 mode anyway.

	gdb/
	* mips-linux-tdep.h (mips_supply_fpregset, mips_fill_fpregset):
	Remove prototypes.
	* mips-linux-nat.c (supply_fpregset): Always call
	`mips64_supply_fpregset' rather than `mips_supply_fpregset'.
	(fill_fpregset): Always call `mips64_fill_fpregset' rather than
	`mips_fill_fpregset'.
	* mips-linux-tdep.c (mips_supply_fpregset)
	(mips_supply_fpregset_wrapper, mips_fill_fpregset)
	(mips_fill_fpregset_wrapper): Remove functions.
	(mips64_supply_fpregset, mips64_fill_fpregset): Update comments.
	(mips_linux_fpregset): Remove variable.
	(mips_linux_iterate_over_regset_sections): Use
	`mips64_linux_fpregset' in place of `mips_linux_fpregset'.
	(mips_linux_o32_sigframe_init): Remove comment.

	gdb/testsuite/
	* gdb.arch/mips-fpregset-core.exp: New test.
	* gdb.arch/mips-fpregset-core.c: New test source.
2018-05-25 12:37:45 +01:00
Pedro Alves 3c69da406c remote_target::m_remote_state, pointer -> object
The only reason remote_target::m_remote_state is a pointer is that
struct remote_state is incomplete when struct remote_target is
defined.

This commit thus moves struct remote_state (and its dependencies)
higher up and makes remote_target::m_remote_state an object instead of
a pointer.

gdb/ChangeLog:
2018-05-25  Pedro Alves  <palves@redhat.com>

	* remote.c (struct vCont_action_support, MAXTHREADLISTRESULTS)
	(struct readahead_cache, struct packet_reg, struct
	remote_arch_state, class remote_state): Move higher up in the
	file.
	(remote_target::m_remote_state): Now an object instead of a pointer.
	(remote_target::get_remote_state): Adjust.
2018-05-25 11:58:58 +01:00
Andrew Burgess 39f0c2040f gdb: Split func_command into two parts.
The func_command function is used to emulate the dbx 'func' command.
However, finding a stack frame based on function name might be a useful
feature, and so the core of func_command is now split out into a
separate function.

gdb/ChangeLog:

	* stack.c (select_and_print_frame): Delete.
	(struct function_bounds): Move struct within function.
	(func_command): Most content moved into new function
	find_frame_for_function, use new function, print result, add
	function comment.
	(find_frame_for_function): New function, now returns a result.
2018-05-24 22:39:03 +01:00
Philippe Waroquiers d392224a09 PATCH (obvious): Fix a comment, and pass stream to cb_data.
iterate_over_block_arg_vars is a void function, so does
not return 1 or 0.
print_frame_arg_vars tells it prints on STREAM,
so pass STREAM in the cb_data, not gdb_stdout.

gdb/ChangeLog

2018-05-24  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* stack.c (iterate_over_block_arg_vars): Fix comment.
	(print_frame_arg_vars): Pass stream in cb_data, not gdb_stdout.
2018-05-24 23:19:05 +02:00
Tom Tromey a974b5ec9a Update help text in record.c
This updates some help text in record.c to conform to GNU standards.
I also added a "Usage" line to "record save".

2018-04-29  Tom Tromey  <tom@tromey.com>

	* record.c (_initialize_record): Update help text.
2018-05-24 12:29:23 -06:00
Tom Tromey c8a15b78e6 Update help text in linux-fork.c
This updates some help text in linux-fork.c to conform to GNU
standards.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* linux-fork.c (_initialize_linux_fork): Update help text.
2018-05-24 12:29:23 -06:00
Tom Tromey 55063ddb8e Update help text in record-btrace.c
This updates the help text in record-btrace.c to conform to GNU
standards.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* record-btrace.c (_initialize_record_btrace): Update help text.
2018-05-24 12:29:22 -06:00
Tom Tromey 02d016b71f Update help text in tracepoint.c
This changes the help text of a couple of commands in tracepoint.c to
follow the GNU style.

ChangeLog
2018-04-29  Tom Tromey  <tom@tromey.com>

	* tracepoint.c (_initialize_tracepoint): Update help text.

testsuite/ChangeLog
2018-04-30  Tom Tromey  <tom@tromey.com>

	* gdb.trace/tfind.exp: Update help tests.
2018-05-24 12:29:22 -06:00
Tom Tromey 7c9ee61b9f Update help text in disasm.c
This changes some help text in disasm.c to follow the GNU style.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* disasm.c (_initialize_disasm): Update help text.
2018-05-24 12:29:22 -06:00
Tom Tromey 0a8ba311d0 Update help text for "jump" command
This updates the usage text for the "jump" command to conform to the
GNU style.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* infcmd.c (_initialize_infcmd): Update help text.
2018-05-24 12:29:21 -06:00
Tom Tromey ffb2b66cab Update help text in dcache.c
This updates some text in dcache.c to follow GNU standards.
Here, I found a couple of spots needing an update.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* dcache.c (dcache_info_1): Update usage text.
	(_initialize_dcache): Update help text.
2018-05-24 12:29:21 -06:00
Tom Tromey bf212be198 Update help strings in TUI
This updates some help strings in the TUI to more closely follow GNU
standards.  In this case I chose to reuse some existing "usage" macros
in the help text.  Also, I found that XDBWIN_HEIGHT_USAGE is unused,
so I removed it.

ChangeLog
2018-04-29  Tom Tromey  <tom@tromey.com>

	* tui/tui-layout.c (_initialize_tui_layout): Update help text.
	* tui/tui-win.c (WIN_HEIGHT_USAGE, FOCUS_USAGE): Update
	(XDBWIN_HEIGHT_USAGE): Remove.
	(_initialize_tui_win): Use macros.  Update help text.
2018-05-24 12:29:21 -06:00
Tom Tromey 99806209a4 Update memattr.c help strings
This changes memattr.c to use the GNU style for help strings.

2018-04-29  Tom Tromey  <tom@tromey.com>

	* memattr.c (_initialize_mem): Update help string.
2018-05-24 12:29:20 -06:00
Tom Tromey 0cab2f1e91 Update core-related help strings
This updates some help strings in corefile.c and gcore.c.

2018-04-27  Tom Tromey  <tom@tromey.com>

	* corefile.c (_initialize_core): Update help string.
	* gcore.c (_initialize_gcore): Update help string.
2018-05-24 12:29:20 -06:00
Tom Tromey 784e4b3e80 Update help strings in skip.c
This changes help strings in skip.c to follow the GNU style.

2018-04-27  Tom Tromey  <tom@tromey.com>

	* skip.c (_initialize_step_skip): Update help strings.
2018-05-24 12:29:20 -06:00
Tom Tromey a3c25011e4 Fix help and documentation for inferior commands
This changes inferior.c to add Usage lines for all commands, and to
change how "metasyntactic variables" are written to conform to GNU
style.

While doing this I noticed that the manual doesn't document the
argument to "info inferiors", so I've added that as well.

ChangeLog
2018-04-27  Tom Tromey  <tom@tromey.com>

	* inferior.c (initialize_inferiors): Update help strings.

doc/ChangeLog
2018-04-27  Tom Tromey  <tom@tromey.com>

	* gdb.texinfo (Inferiors and Programs): Document argument to "info
	inferiors".
2018-05-24 12:29:19 -06:00
Andrew Burgess 45f25d6c83 gdb: Restore selected frame in print_frame_local_vars
PR gdb/23203 reports 'bt full' causing the currently selected frame to
change, this issue is fixed in this commit.

Add a new class scoped_restore_selected_frame that saves and restores
the selected frame.  Make use of this in print_frame_local_vars to
restore the selected frame on exit.

gdb/ChangeLog:

	PR gdb/23203
	* frame.c
	(scoped_restore_selected_frame::scoped_restore_selected_frame):
	Define.
	(scoped_restore_selected_frame::~scoped_restore_selected_frame):
	Define.
	* frame.h (class scoped_restore_selected_frame): New class.
	* stack.c (print_frame_local_vars): Remove catching and rethrowing
	of any exception, use scoped_restore_selected_frame to restore the
	frame instead.

gdb/testsuite/ChangeLog:

	PR gdb/23203
	* gdb.base/bt-selected-frame.c: New file.
	* gdb.base/bt-selected-frame.exp: New file.
	* lib/gdb.exp (get_current_frame_number): New function.
2018-05-24 18:01:31 +01:00
Maciej W. Rozycki d9f6d7f8b6 testsuite: Extend TLS core file testing with an OS-generated dump
Complementing commit 280ca31f4d ("Add test for fetching TLS from
core file") extend gdb.threads/tls-core.exp with an OS-generated dump
where supported.

This verifies not only that our core dump interpreter is consistent
with our producer, but that it matches the OS verified as well,
avoiding a possible case where our interpreter would be bug-compatible
with our producer but not the OS and it would go unnoticed in testing.

This results in:

 PASS: gdb.threads/tls-core.exp: native: load core file
 PASS: gdb.threads/tls-core.exp: native: print thread-local storage variable
 PASS: gdb.threads/tls-core.exp: gcore: load core file
 PASS: gdb.threads/tls-core.exp: gcore: print thread-local storage variable

with local testing and:

 UNSUPPORTED: gdb.threads/tls-core.exp: native: load core file
 UNSUPPORTED: gdb.threads/tls-core.exp: native: print thread-local storage variable
 PASS: gdb.threads/tls-core.exp: gcore: load core file
 PASS: gdb.threads/tls-core.exp: gcore: print thread-local storage variable

with remote testing, or for testing on ports that don't supports
cores.

gdb/testsuite/ChangeLog:
2018-05-24  Maciej W. Rozycki  <macro@mips.com>
	    Pedro Alves  <palves@redhat.com>

	* gdb.threads/tls-core.c: Include <stdlib.h>
	(thread_proc): Call `abort'.
	* gdb.threads/tls-core.exp: Generate a core with core_find too.
	(tls_core_test): New procedure, bits factored out from ...
	(top level): ... here.  Test both native cores and gcore cores.
2018-05-24 15:31:32 +01:00
Pedro Alves da05d921f0 Fix macOS build, missing override
Fixes:

In file included from ../../src/gdb/darwin-nat.c:63:0:
../../src/gdb/darwin-nat.h:28:8: error: 'virtual void darwin_nat_target::create_inferior(const char*, const string&, char**, int)' can be marked override [-Werror=suggest-override]
   void create_inferior (const char *exec_file,
        ^

gdb/ChangeLog:
2018-05-24  Pedro Alves  <palves@redhat.com>

	* darwin-nat.h (darwin_nat_target::create_inferior): Mark with
	override.
2018-05-24 13:21:55 +01:00
Tom Tromey a8be540e8a Remove struct complaints
struct complaints now just holds a single enum value, so remove it and
symfile_complaint_book and replace it with a global variable.

gdb/ChangeLog
2018-05-23  Tom Tromey  <tom@tromey.com>

	* complaints.c (struct complaints): Remove.
	(symfile_complaint_book): Remove.
	(series): New global.
	(complaint_internal): Update.
	(clear_complaints): Update.
2018-05-23 09:17:03 -06:00
Tom Tromey ff1cf532db Remove struct complain
At this point, struct complain is just holds a key, a value, and a
"next" pointer to form a linked list.  It's simpler to replace this
with an unordered map.

gdb/ChangeLog
2018-05-23  Tom Tromey  <tom@tromey.com>

	* complaints.c (counters): New global.
	(struct complain): Remove.
	(struct complaints) <root>: Remove.
	(complaint_sentinel): Remove.
	(symfile_complaint_book): Update.
	(find_complaint) Remove.
	(complaint_internal, clear_complaints): Update.

gdb/testsuite/ChangeLog
2018-05-23  Tom Tromey  <tom@tromey.com>

	* gdb.gdb/complaints.exp (test_initial_complaints): Simplify.
2018-05-23 09:17:03 -06:00
Tom Tromey 7ff8817441 Remove file and line from struct complain
The file and line handling in complaints.c wasn't used once
internal_complaint was removed.  This patch removes all the related
code.

gdb/ChangeLog
2018-05-23  Tom Tromey  <tom@tromey.com>

	* complaints.c (struct complain) <file, line>: Remove.
	(find_complaint): Remove file, line parameters.
	(complaint_internal): Update.
2018-05-23 09:17:02 -06:00