Commit Graph

78410 Commits

Author SHA1 Message Date
Alan Modra
f9c6b9078c Report overflow on PowerPC64 @h and @ha relocations.
This changes the behaviour of @h and @ha on PowerPC64 to report errors
on 32-bit overflow.  The motivation for this change is that on
PowerPC64, most uses of @h and @ha modifiers and their corresponding
relocations are to build up 32-bit offsets.  We'd like to know when
such offsets overflow.  Only rarely do people use @h or @ha with the
high 32-bit modifiers to build a 64-bit constant.  Those uses will now
need to use two new modifiers, @high and @higha, if the constant isn't
known at assembly time.  For now, we won't report overflow at assembly
time..

This also fixes an error when applying some of the HIGHER and HIGHEST
relocations.

include/elf/
	* ppc64.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA,
	R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA,
	R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): New.
	(IS_PPC64_TLS_RELOC): Match new tls relocs.
bfd/
	* reloc.c (BFD_RELOC_PPC64_ADDR16_HIGH, BFD_RELOC_PPC64_ADDR16_HIGHA,
	BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA,
	BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA): New.
	* elf64-ppc.c (ppc64_elf_howto_raw): Add entries for new relocs.
	Make all _HA and _HI relocs report signed overflow.
	(ppc64_elf_reloc_type_lookup): Handle new relocs.
	(must_be_dyn_reloc, ppc64_elf_check_relocs): Likewise.
	(dec_dynrel_count, ppc64_elf_relocate_section): Likewise.
	(ppc64_elf_relocate_section): Don't apply 0x8000 adjust to
	R_PPC64_TPREL16_HIGHER, R_PPC64_TPREL16_HIGHEST,
	R_PPC64_DTPREL16_HIGHER, and R_PPC64_DTPREL16_HIGHEST.
	* libbfd.h: Regenerate.
	* bfd-in2.h: Regenerate.
gas/
	* config/tc-ppc.c (SEX16): Don't mask.
	(REPORT_OVERFLOW_HI): Define as zero.
	(ppc_elf_suffix): Support @high, @higha, @dtprel@high, @dtprel@higha,
	@tprel@high, and @tprel@higha modifiers.
	(md_assemble): Ignore X_unsigned when applying 16-bit insn fields.
	Add (disabled) code to check @h and @ha reloc overflow for powerpc64.
	Handle new relocs.
	(md_apply_fix): Similarly.
elfcpp/
	* powerpc.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA,
	R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA,
	R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): Define.
gold/
	* powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
	(Target_powerpc::Scan::global, local): Likewise.
	(Target_powerpc::Relocate::relocate): Likewise.  Check for overflow
	on all ppc64 @h and @ha relocs.
2013-10-30 13:33:15 +10:30
Maciej W. Rozycki
e17aaa33b1 linux-tdep.c: Fix "warning: 'siginfo_size' may be used uninitialized..."
* linux-tdep.c (linux_corefile_thread_callback): Preinitialize
	siginfo_size.
2013-10-30 01:05:18 +00:00
Roland McGrath
70cc877f6e BFD: elf64-x86-64-nacl: Correct 9-byte nop sequence used in PLT0 entry.
bfd/
	* elf64-x86-64.c (elf_x86_64_nacl_plt0_entry): Correct 9-byte nop
	sequence to match what the assembler generates.
2013-10-29 16:15:38 -07:00
Alan Modra
84f7b15039 daily update 2013-10-30 09:30:01 +10:30
Alan Modra
b2df0add3b daily update 2013-10-30 08:54:25 +10:30
Jan Beulich
34a79995c4 ld/ELF: refine fake STT_FILE symbol emission
There's no real need to emit these always: They're needed only if we
indeed want to emit a localized symbol. Hence defer emission until we
at least did the basic early checks that would lead to no such symbol
getting emitted. This in particular avoids emitting such a symbol in
the majority of (if not all) "ld -r" cases.

I hope my set of cross build tests caught all the test cases needing
adjustment - please forgive if I missed a few.

bfd/
2013-10-29  Jan Beulich <jbeulich@suse.com>

	* elflink.c (struct elf_outext_info): Add field file_sym_done.
	(bfd_elf_final_link): Initialize new field. Move fake STT_FILE
	symbol emission from here ...
	(elf_link_output_extsym): ... to here.

gas/testsuite/
2013-10-29  Jan Beulich <jbeulich@suse.com>

	* gas/microblaze/relax_size.elf: Drop expectation of no longer
	present STT_FILE symbol.
	* gas/microblaze/relax_size2.elf: Likewise.

ld/testsuite/
2013-10-29  Jan Beulich <jbeulich@suse.com>

	* ld-cris/tls-e-tpoffcomm1.d: Drop expectation of no longer
	present STT_FILE symbol.
	* ld-mmix/bpo-18.d: Likewise.
	* ld-mmix/bpo-22.d: Likewise.
	* ld-mmix/greg-6.d: Likewise.
	* ld-mmix/greg-7.d: Likewise.
	* ld-mmix/loc4.d: Likewise.
	* ld-mmix/local1.d: Likewise.
	* ld-mmix/local3.d: Likewise.
	* ld-mmix/local5.d: Likewise.
	* ld-mmix/local7.d: Likewise.
	* ld-mmix/loct-1.d: Likewise.
	* ld-sh/sh64/abi32.xd: Likewise.
	* ld-sh/sh64/abi64.xd: Likewise.
	* ld-sh/sh64/cmpct1.xd: Likewise.
	* ld-sh/sh64/crange1.rd: Likewise.
	* ld-sh/sh64/crange2.rd: Likewise.
	* ld-sh/sh64/crange3-cmpct.rd: Likewise.
	* ld-sh/sh64/crange3-media.rd: Likewise.
	* ld-sh/sh64/crange3.rd: Likewise.
	* ld-sh/sh64/crangerel1.rd: Likewise.
	* ld-sh/sh64/crangerel2.rd: Likewise.
	* ld-sh/sh64/mix1.xd: Likewise.
	* ld-sh/sh64/mix2.xd: Likewise.
	* ld-sh/sh64/shdl32.xd: Likewise.
	* ld-sh/sh64/shdl64.xd: Likewise.
2013-10-29 17:52:24 +01:00
Tom Tromey
aee17e424f undef reg in gdb_curses.h
I tried to build gdb on the AIX machine in the GCC compile farm
(gcc111), but it failed in a couple of spots because gdb uses "reg" as
a variable name and the AIX <curses.h> defines "reg" to "register".

I saw that we already had a workaround for this lurking in utils.c, so
I just moved that to gdb_curses.h.

This fixed the problem on AIX and still builds on x86-64 Fedora 18.

2013-10-29  Tom Tromey  <tromey@redhat.com>

	* utils.c (reg): Move undefinition...
	* gdb_curses.h: ... here.  Update comment to mention AIX.
2013-10-29 10:41:30 -06:00
Nicolas Blanc
9ac6985971 ChangeLog entries for the remove-symbol-file commits. 2013-10-29 17:32:17 +01:00
Pedro Alves
24ba476b64 gdb.mi/mi-console.c, gdb.mi/mi-stack.c: Remove local emacs variables defining change-log-default-name.
These references to ChangeLog-mi are stale.
testsuite/gdb.mi/ChangeLog-mi doesn't exist anymore, since:

...
commit 2dd627049d
Author: Andrew Cagney <cagney@redhat.com>
Date:   Sat Jun 23 21:47:09 2001 +0000

    Rename gdb.mi/ChangeLog-mi to gdb.mi/ChangeLog.  Update everything.
...
commit 48efe7049b
Author: Andrew Cagney <cagney@redhat.com>
Date:   Mon Jan 12 15:16:44 2004 +0000

    Eliminate the old mi/tui specific ChangeLog files as in ...

    Added Files:
        mi/ChangeLog-1999-2003 testsuite/gdb.mi/ChangeLog-1999-2003
        tui/ChangeLog-1998-2003
    Removed Files:
        mi/ChangeLog testsuite/gdb.mi/ChangeLog tui/ChangeLog


Tested with 'make check RUNTESTFLAGS="--directory=gdb.mi"' on x86_64 Fedora 17.

gdb/testsuite/
2013-10-29  Pedro Alves  <palves@redhat.com>

	* gdb.mi/mi-console.c, gdb.mi/mi-stack.c: Remove local emacs
	variable setting change-log-default-name to ChangeLog-mi.
2013-10-29 13:48:25 +00:00
Andrew Burgess
f69d9aef9b Print <unavailable> for unavailable registers in info register output.
https://sourceware.org/ml/gdb-patches/2013-08/msg00171.html

gdb/ChangeLog

	* infcmd.c (default_print_one_register_info): Use val_print to
	print all values even optimized out or unavailable ones.  Don't
	try to print a raw form of optimized out or unavailable values.

gdb/testsuite/ChangeLog

	* gdb.trace/unavailable.exp (gdb_unavailable_registers_test):
	Expect <unavailable> pattern.
2013-10-29 13:26:49 +00:00
Nicolas Blanc
681f229a9f Test adding and removing a symbol file at runtime.
This test exercises the commands 'add-symbol-file'
and 'remove-symbol-file'.

2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

gdb/testsuite
	* gdb.base/sym-file-lib.c: New file.
	* gdb.base/sym-file-loader.c: New file.
	* gdb.base/sym-file-loader.h: New file.
	* gdb.base/sym-file-main.c: New file.
	* gdb.base/sym-file.exp: New file.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
2013-10-29 10:56:45 +01:00
Nicolas Blanc
e9f0e62efd Function is_elf_target.
2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

gdb/testsuite
	* lib/gdb.exp (is_elf_target): New function.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
2013-10-29 10:56:36 +01:00
Nicolas Blanc
76ad5e1e2a Create target sections for user-added symbol files.
Add the sections of the symbol files that are provided via
'add-symbol-file' to the set of current target sections.
User-added sections are removed upon notification of free_objfile
when their corresponding object file is deleted.

2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

	* exec.h (add_target_sections_of_objfile): New declaration.
	* exec.c (add_target_sections_of_objfile): New function.
	* symfile.c (add_symbol_file_command): Update current target sections.
	(symfile_free_objfile): New function.
	(_initialize_symfile): Register observer for free_objfile events.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
2013-10-29 10:56:27 +01:00
Nicolas Blanc
98297bf675 Documentation for the remove-symbol-file command.
2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

	* NEWS: Add description of the remove-symbol-file command.
gdb/doc
	* gdb.texinfo (Commands to Specify Files): Add description
	of the remove-symbol-file command.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
2013-10-29 10:56:19 +01:00
Nicolas Blanc
63644780ba New remove-symbol-file command.
New command for removing symbol files added via
the add-symbol-file command.

2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

	* breakpoint.c (disable_breakpoints_in_freed_objfile): New function.
	* objfiles.c (free_objfile): Notify free_objfile.
	(is_addr_in_objfile): New function.
	* objfiles.h (is_addr_in_objfile): New declaration.
	* printcmd.c (clear_dangling_display_expressions): Act upon free_objfile
	events instead of solib_unloaded events.
	(_initialize_printcmd): Register observer for free_objfile instead
	of solib_unloaded notifications.
	* solib.c (remove_user_added_objfile): New function.
	* symfile.c (remove_symbol_file_command): New command.
	(_initialize_symfile): Add remove-symbol-file.
gdb/doc
	* observer.texi: New free_objfile event.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
2013-10-29 10:56:07 +01:00
Yao Qi
487ad57ccf Simplify REGISTRY cleanup usages
In registry.c:registry_clear_data, the registered data is iterated and
invoke each 'free' function with the data passed:

  for (registration = data_registry->registrations, i = 0;
       i < fields->num_data;
       registration = registration->next, i++)
    if (fields->data[i] != NULL && registration->data->free != NULL)
      adaptor (registration->data->free, container, fields->data[i]);

we can see that data is passed to function 'free' and data is not NULL.
In each usage, we don't have to get the data again through key and
do NULL pointer checking.  This patch is to simplify them.

gdb:

2013-10-29  Yao Qi  <yao@codesourcery.com>

	* auto-load.c (auto_load_pspace_data_cleanup): Get data from
	parameter 'arg' instead of from program_space_data.
	* objfiles.c (objfiles_pspace_data_cleanup): Likewise.
	* solib-darwin.c (darwin_pspace_data_cleanup): Likewise.
	* solib-dsbt.c (dsbt_pspace_data_cleanup): Likewise.
	* solib-svr4.c (svr4_pspace_data_cleanup): Likewise.
	* inflow.c (inflow_inferior_data_cleanup): Get data from
	parameter 'arg' instead of inferior_data.
	* registry.h: Add comments.
2013-10-29 14:36:29 +08:00
Pedro Alves
3c4797ba74 breakpoint.c:watchpoints_triggered: simplify a tiny bit.
I was reading this, checking the the possible returns, and this
particular path confused a tiny little.  Above we do:

  if (!stopped_by_watchpoint)
    {
...
      return 0;
    }

so any return after that always return true.

Tested on x86_64 Fedora 17.

gdb/
2013-10-28  Pedro Alves  <palves@redhat.com>

	* breakpoint.c (watchpoints_triggered)
	<!target_stopped_data_address>: Hardcode return 1.
2013-10-28 18:34:37 +00:00
Tom de Vries
71193121ff Fix typo in gdb/testsuite/gdb.arch/thumb2-it.S.
2013-10-28  Tom de Vries  <tom@codesourcery.com>

	* gdb.arch/thumb2-it.S (it_8): Fix typo.
2013-10-28 18:54:28 +01:00
Pedro Alves
cdaa5b7326 infrun.c:process_event_stop_test: Reindent.
gdb/
2013-10-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (process_event_stop_test): Remove unnecessary scoping
	level and reindent.
2013-10-28 16:47:50 +00:00
Pedro Alves
94c57d6a62 infrun.c:handle_inferior_event: Make process_event_stop_test label a function.
Now that all ecs->random_signal handing is always done before the
'process_event_stop_test' label, we can easily make that a real
function and actually give it a describing comment that somewhat makes
sense.

Reindenting the new function will be handled in a follow up patch.

2013-10-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (process_event_stop_test): New function, factored out
	from handle_inferior_event.
	(handle_inferior_event): 'process_event_stop_test' is now a
	function instead of a goto label -- adjust.
2013-10-28 16:47:01 +00:00
Pedro Alves
fcf3daefe6 infrun.c:handle_inferior_event: Move process_event_stop_test goto label.
We only ever call "goto process_event_stop_test;" right after checking
that ecs->random_signal is clear.  The code at the
process_event_stop_test label looks like:

  /* For the program's own signals, act according to
     the signal handling tables.  */

  if (ecs->random_signal)
    {
     ... random signal handling ...
     return;
    }
  else
    {
     ... the stop tests that actually matter for the goto callers.
    }

So this moves the label into the else branch.  It'll make converting
process_event_stop_test into a function a bit clearer.

gdb/
2013-10-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (handle_inferior_event): Move process_event_stop_test
	goto label to the else branch of the ecs->random_signal check,
	along with FRAME and GDBARCH re-fetching.
2013-10-28 16:46:23 +00:00
Pedro Alves
c447ac0bfb infrun.c:handle_inferior_event: Put all ecs->random_signal tests together.
I recently added a new ecs->random_signal test after the "switch back to
stepped thread" code, and before the stepping tests.  Looking at
making process_event_stop_test a proper function, I realized it'd be
better to keep ecs->random_signal related code together.  To do that,
I needed to factor out the "switch back to stepped thread" code to a new
function, and call it in both the "random signal" and "not random
signal" paths.

gdb/
2013-10-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (switch_back_to_stepped_thread): New function, factored
	out from handle_inferior_event.
	(handle_inferior_event): Adjust to call
	switch_back_to_stepped_thread.  Call it also at the tail of the
	random signal handling, and return, instead of also handling
	random signals just before the stepping tests.
2013-10-28 16:45:02 +00:00
Pedro Alves
f05e4c1115 infrun.c:handle_inferior_event: Remove some more dead code.
'ecs' is always memset before being passed to handle_inferior_event.
The stop func is only filled in later in the flow.  And since "Remove
dead sets/clears of ecs->random signal", nothing ever sets
ecs->random_signal before this part is reached either.

(Also tested with some added assertions in place.)

gdb/
2013-10-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (clear_stop_func): Delete.
	(handle_inferior_event): Don't call clear_stop_func and don't
	clear 'ecs->random_signal'.
2013-10-28 16:39:05 +00:00
Yao Qi
ca20d46296 Rename field 'lang' to 'lang_ops'.
On 10/25/2013 11:34 AM, Joel Brobecker wrote:
> Also, as a followup, I think it would be beneficial if we renamed
> field "lang" in the varobj_root into "lang_ops". I think it's more
> descriptive, especially since "lang" is used elsewhere with different
> meanings (and types).

Here is the patch to rename 'lang' to 'lang_ops'.  Committed as obvious.

gdb:

2013-10-27  Yao Qi  <yao@codesourcery.com>

	* varobj.c (struct varobj_root) <lang>: Rename to 'lang_ops'.
	(varobj_create, varobj_get_path_expr): Update.
	(varobj_value_has_mutated, varobj_update): Likewise.
	(create_child_with_value, new_root_variable): Likewise.
	(number_of_children, name_of_variable): Likewise.
	(value_of_child, my_value_of_variable): Likewise.
	(varobj_value_is_changeable_p): Likewise.
2013-10-27 20:01:29 +08:00
Yao Qi
a53b64eaa0 New field la_varobj_ops in struct language_defn
This is a follow-up series to move language stuff out of varobj.c.

This patch adds a new field la_varobj_ops in struct language_defn so
that each language has varobj-related options.  Not every language
supports varobj, and the operations are identical to operations of c
languages.

'struct language_defn' is the ideal place to save all language-related
operations.  After this patch, some cleanups can be done in patch 2/2,
which removes language-related stuff completely from varobj.c.

Regression tested on x86_64-linux.

gdb:

2013-10-25  Yao Qi  <yao@codesourcery.com>

	* language.h (struct lang_varobj_ops): Declare.
	(struct language_defn) <la_varobj_ops>: New field.
	* ada-lang.c: Include "varobj.h"
	(defn ada_language_defn): Initialize field 'la_varobj_ops' by
	ada_varobj_ops.
	* c-lang.c: Include "varobj.h"
	(c_language_defn): Initialize field 'la_varobj_ops' by
	c_varobj_ops.
	(cplus_language_defn): Initialize field 'la_varobj_ops' by
	cplus_varobj_ops.
	(asm_language_defn): Initialize field 'la_varobj_ops' by
	default_varobj_ops.
	(minimal_language_defn): Likewise.
	* d-lang.c (d_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* go-lang.c (go_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* opencl-lang.c (opencl_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* language.c (unknown_language_defn): Likewise.
	(auto_language_defn): Likewise.
	(local_language_defn): Likewise.
	* jv-lang.c (java_language_defn): Initialize field
	'la_varobj_ops' by java_varobj_ops.
	* varobj.c (varobj_create): Update.
	* varobj.h (default_varobj_ops): Define macro.
2013-10-25 14:03:02 +00:00
Anton Kolesov
38095c27fb testsuite: Fix gdb.base/bang.exp for remote stubs without exit
Some remote stubs do not have a proper exit() function implementation.
gdb.base/bang.exp was failing on those targets due to timeout.  With
this patch bang.exp uses already defined library procedures to handle
this situation gracefully without breaking native targets.

Tested with x86_64 (unix, native-gdbserver) and with arc-*-elf32.

gdb/testsuite/ChangeLog:

2013-10-25  Anton Kolesov  <Anton.Kolesov@synopsys.com>  (tiny change)

	* gdb.base/bang.exp: Use gdb_continue_to_end to properly support
	remote stubs where exit() behaviour is unreliable.
2013-10-25 14:03:01 +00:00
Pedro Alves
686d4defdf Print nonexisting/optimized out static fields gracefully.
With:

 struct static_struct { static int aaa; };
 struct static_struct sss;
 int main () { return 0; }

We get:

 (gdb) p sss
 $1 = {static aaa = <optimized out>}
 (gdb) p sss.aaa
 field aaa is nonexistent or has been optimized out

Note that the "field aaa ..." message is an error being thrown.

GDB is graceful everywhere else when printing optimized out values.
IOW it usually prints an <optimized out> value and puts that in the
value history.  I see no reason for here to be different, more so that
when the print the whole "containing" object (well, it's a static
field, so it's not really a container), we already print <optimized
out>.

After the patch:

 (gdb) p sss
 $1 = {static aaa = <optimized out>}
 (gdb) p sss.aaa
 $2 = <optimized out>

The value_entirely_optimized_out checks are there to preserve
behavior.  Without those, if the static field is a struct/union, GDB
would go and print its fields one by one (and print <optimized out>
for each).

Tested on x86_64 Fedora 17.

gdb/
2013-10-25  Pedro Alves  <palves@redhat.com>

	* cp-valprint.c (cp_print_value_fields): No longer handle a NULL
	static field value.
	(cp_print_static_field): If the value is entirely optimized out,
	print <optimized out> here.
	* jv-valprint.c (java_print_value_fields): No longer handle a NULL
	static field value.
	* p-valprint.c (pascal_object_print_static_field): If the value is
	entirely optimized out, print <optimized out> here.
	* valops.c (do_search_struct_field)
	(value_struct_elt_for_reference): No longer handle a NULL static
	field value.
	* value.c (value_static_field): Return an optimized out value
	instead of NULL.

gdb/testsuite/
2013-10-25  Pedro Alves  <palves@redhat.com>

	* gdb.cp/m-static.exp: Adjust expected output of printing a
	nonexistent or optimized out static field.  Also test printing the
	the "container" object.
2013-10-25 14:03:01 +00:00
Nick Clifton
96691246d4 PR binutils/15994
* dwarf2.c (lookup_address_in_line_info_table): Change return type
	to be the range of addresses covered by the table.
	(comp_unit_find_nearest_line): Likewise.
	(find_line): Search all CUs.  Select the one that matches and
	covers the smallest address range.
2013-10-25 14:03:01 +00:00
Nick Clifton
240d6706c6 PR binutils/15994
* dwarf2.c (lookup_address_in_line_info_table): Change return type
	to be the range of addresses covered by the table.
	(comp_unit_find_nearest_line): Likewise.
	(find_line): Search all CUs.  Select the one that matches and
	covers the smallest address range.
2013-10-25 14:03:01 +00:00
Nick Clifton
9993a35510 * nm.c (display_rel_file): Treat bfd_error_no_symbols as
non-fatal.
2013-10-25 14:03:01 +00:00
Nick Clifton
bf26dcc6ae * nm.c (display_rel_file): Treat bfd_error_no_symbols as
non-fatal.
2013-10-25 14:03:01 +00:00
Nick Clifton
9db0be606e * binutils-all/objdump.exp (cps_expected): Add MSP430 to list. 2013-10-25 14:03:01 +00:00
Yao Qi
6c177e28ea Send qXfer:traceframe-info:read when traceframe is selected.
When I do 'si', I find many 'qXfer:traceframe-info:read' packets are sent,
which is not necessary.  It slows down the single step.
(gdb) si
Sending packet: $qTStatus#49...Packet received: T0;tnotrun:0;tframes:0;tcreated:0;tfree:500000;tsize:500000;circular:0;disconn:0;starttime:0;stoptime:0;username:;notes::
Sending packet: $Z0,80483c7,1#b4...Packet received: OK
Sending packet: $Z0,4ce5b6b0,1#6e...Packet received: OK
Sending packet: $QPassSignals:e;10;14;17;1a;1b;1c;21;24;25;2c;4c;#5f...Packet received: OK
Sending packet: $vCont;s:p1b15.1b15;c#20...Packet received: T0505:44efffbf;04:44efffbf;08:d1830408;thread:p1b15.1b15;core:3;
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $mbfffef40,40#c0...Packet received: d183040878efffbf2e840408030000000000a040030000000500000070efffbf07000000010000004984040807000000030000000500000000000000b396e84c
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $z0,80483c7,1#d4...Packet received: OK
Sending packet: $z0,4ce5b6b0,1#8e...Packet received: OK
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01
Sending packet: $qXfer:traceframe-info:read::0,fff#0b...Packet received: E01

This problem was introduced by this patch
(https://sourceware.org/ml/gdb-patches/2013-04/msg00000.html), in
which get_traceframe_number is not checked before calling
traceframe_available_memory.  This patch moves the check to
remote_traceframe_info, say, if GDB doesn't have traceframe selected, GDB
doesn't need to send qXfer:traceframe-info:read packets.

With this patch applied, there is no qXfer:traceframe-info:read sent
out and single step is speed up a little bit.

Here is the experiment I did:

	   Num of single step	Original	Patched

single-step cpu_time 10000	8.08		7.57
single-step cpu_time 20000	16.23		14.23
single-step cpu_time 30000	24.19		21.59
single-step cpu_time 40000	32.49		28.0
single-step wall_time 10000	14.1974210739	13.2641420364
single-step wall_time 20000	28.5278921127	25.0541369915
single-step wall_time 30000	42.5864038467	38.0038759708
single-step wall_time 40000	57.2107698917	49.2350611687
single-step vmsize 10000	16128		16388
single-step vmsize 20000	16128		16388
single-step vmsize 30000	16260		16520
single-step vmsize 40000	16444		16704

The patch is tested on x86_64-linux.

gdb:

2013-10-24  Yao Qi  <yao@codesourcery.com>

	* remote.c (remote_traceframe_info): Return early if
	traceframe is not selected.
2013-10-25 14:03:01 +00:00
Yao Qi
09c1234798 Change mode of gas/configure back to 0755 2013-10-25 14:03:00 +00:00
Yao Qi
98322bfaf3 Fix changelog.
gdb/

	Add changelog entry for my previous commit.
2013-10-25 14:03:00 +00:00
Yao Qi
24a008139e Remove global traceframe_fun and traceframe_sal
I happen to see traceframe_fun and traceframe_sal are static variables,
which are not necessary to me.  They are only used in set_traceframe_context,
and they are not stateful.  This patch is to remove them.

gdb:

2013-10-24  Yao Qi  <yao@codesourcery.com>

	* tracepoint.c (traceframe_fun): Remove.
	(traceframe_sal): Remove.
	(set_traceframe_context): Add local variables.
2013-10-25 14:03:00 +00:00
Joel Brobecker
6ba1f11550 Minor coding style fixes in varobj.h
No actual code change, just a minor style fix.

gdb/ChangeLog:

        * varobj.h (struct lang_varobj_ops): Remove spaces between '*'
        and parameter name.
2013-10-25 14:03:00 +00:00
Maciej W. Rozycki
a35cfb4007 testsuite: Persistent gdbserver cleanup
* lib/gdb.exp (gdb_finish): Send a kill request to `gdbserver'
	if in the persistent mode.
	* gdb.trace/disconnected-tracing.exp: Reconnect before completion.
2013-10-25 14:03:00 +00:00
Maciej W. Rozycki
bbe769cc07 Avoid producing broken non-native core files
gdb/
	* linux-tdep.c (linux_corefile_thread_callback): Propagate any
	failure from register information collection.

	gdb/testsuite/
	* lib/gdb.exp (gdb_gcore_cmd): Also handle a "Target does not
	support core file generation" reply.
2013-10-25 14:03:00 +00:00
Maciej W. Rozycki
72ee449576 Fix ChangeLog typo 2013-10-25 14:03:00 +00:00
Maciej W. Rozycki
59a70096fd linux-tdep.c: Remove unused `num_notes' struct member
* linux-tdep.c (linux_corefile_thread_data): Remove `num_notes'
	member.
	(linux_corefile_thread_callback): Update accordingly.
	(linux_make_corefile_notes): Likewise.
2013-10-25 14:02:59 +00:00
Pedro Alves
98882a2651 Make STARTUP_WITH_SHELL a runtime toggle -- add new "set/show startup-with-shell" option.
Occasionaly we hear about people having problems with GDB not being
able to start programs (with "run"/"start").  GDB spawns a shell to
start the program, and most often, it'll be the case that the problem
is actually with the user's shell setup.

GDB has code to disable the use of the shell to start programs.
That's the STARTUP_WITH_SHELL macro that native targets could set to 0
in their nm.h file (though no target actually uses it nowadays).

This patch makes that setting a run-time knob instead.  This will be
useful to quickly diagnose such shell issues, and might also come in
handy at other times (such as when debugging the shell itself, if you
don't have a different shell handy).

gdb/
2013-10-24  Pedro Alves  <palves@redhat.com>

	* NEWS (New options): Mention set/show startup-with-shell.
	* config/alpha/nm-osf3.h (START_INFERIOR_TRAPS_EXPECTED): Set to 2
	instead of 3.
	* fork-child.c (fork_inferior, startup_inferior): Handle 'set
	startup-with-shell'.
	(show_startup_with_shell): New function.
	(_initialize_fork_child): Register the set/show startup-with-shell
	commands.
	* inf-ptrace.c (inf_ptrace_create_inferior): Remove comment.
	* inf-ttrace.c (inf_ttrace_him): Remove comment.
	* procfs.c (procfs_init_inferior): Remove comment.
	* infcmd.c (startup_with_shell): New global.
	* inferior.h (startup_with_shell): Declare global.
	(STARTUP_WITH_SHELL): Delete.
	(START_INFERIOR_TRAPS_EXPECTED): Set to 1 by default instead of 2.

gdb/doc/
2013-10-24  Pedro Alves  <palves@redhat.com>

	* gdb.texinfo (Starting): Document set/show startup-with-shell.
2013-10-25 14:02:59 +00:00
Pedro Alves
c9737c08e7 infrun debug output: print enum gdb_signal symbol names instead of POSIX signal names.
The other day while debugging something related to random signals, I
got confused with "set debug infrun 1" output, for it said:

 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x323d4e8b94
 infrun: random signal 20

On GNU/Linux, 20 is SIGTSTP.  For some reason, it took me a few
minutes to realize that 20 is actually a GDB signal number, not a
target signal number (duh!).  In any case, I propose making GDB's
output clearer here:

One way would be to use gdb_signal_to_name, like already used
elsewhere:

 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x323d4e8b94
 infrun: random signal SIGCHLD (20)

but I think that might confuse someone too ("20? Why does GDB believe
SIGCHLD is 20?").  So I thought of printing the enum string instead:

 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x323d4e8b94
 infrun: random signal GDB_SIGNAL_CHLD (20)

Looking at a more complete infrun debug log, we had actually printed
the (POSIX) signal name name a bit before:

 infrun: target_wait (-1, status) =
 infrun:   9300 [Thread 0x7ffff7fcb740 (LWP 9300)],
 infrun:   status->kind = stopped, signal = SIGCHLD
 ...
 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x323d4e8b94
 infrun: random signal 20

So I'm now thinking that it'd be even better to make infrun output
consistently use the enum symbol string, like so:

 infrun: clear_proceed_status_thread (Thread 0x7ffff7fca700 (LWP 25663))
 infrun: clear_proceed_status_thread (Thread 0x7ffff7fcb740 (LWP 25659))
- infrun: proceed (addr=0xffffffffffffffff, signal=144, step=1)
+ infrun: proceed (addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT, step=1)
- infrun: resume (step=1, signal=0), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 25659)] at 0x400700
+ infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 25659)] at 0x400700
 infrun: wait_for_inferior ()
 infrun: target_wait (-1, status) =
 infrun:   25659 [Thread 0x7ffff7fcb740 (LWP 25659)],
- infrun:   status->kind = stopped, signal = SIGCHLD
+ infrun:   status->kind = stopped, signal = GDB_SIGNAL_CHLD
 infrun: infwait_normal_state
 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x400700
- infrun: random signal 20
+ infrun: random signal (GDB_SIGNAL_CHLD)
 infrun: random signal, keep going
- infrun: resume (step=1, signal=20), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 25659)] at 0x400700
+ infrun: resume (step=1, signal=GDB_SIGNAL_CHLD), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 25659)] at 0x400700
 infrun: prepare_to_wait
 infrun: target_wait (-1, status) =
 infrun:   25659 [Thread 0x7ffff7fcb740 (LWP 25659)],
- infrun:   status->kind = stopped, signal = SIGTRAP
+ infrun:   status->kind = stopped, signal = GDB_SIGNAL_TRAP
 infrun: infwait_normal_state
 infrun: TARGET_WAITKIND_STOPPED
 infrun: stop_pc = 0x400704
 infrun: stepi/nexti
 infrun: stop_stepping

GDB's signal numbers are public and hardcoded (see
include/gdb/signals.h), so there's really no need to clutter the
output with numeric values in some places while others not.  Replacing
the magic "144" with GDB_SIGNAL_DEFAULT in "proceed"'s debug output
(see above) I think is quite nice.

I posit that all this makes it clearer to newcomers that GDB has its
own signal numbering (and that there must be some mapping going on).

Tested on x86_64 Fedora 17.

gdb/
2013-10-23  Pedro Alves  <palves@redhat.com>

	* common/gdb_signals.h (gdb_signal_to_symbol_string): Declare.
	* common/signals.c: Include "gdb_assert.h".
	(signals): New field 'symbol'.
	(SET): Use the 'symbol' parameter.
	(gdb_signal_to_symbol_string): New function.
	* infrun.c (handle_inferior_event) <random signal>: In debug
	output, print the random signal enum as string in addition to its
	number.
	* target/waitstatus.c (target_waitstatus_to_string): Print the
	signal's enum value as string instead of the (POSIX) signal name.
2013-10-25 14:02:59 +00:00
Gary Benson
f60db4f07f Fix off-by-one errors in *scanf format strings.
In the first hunk, the format string was off-by-one for cmd, and cmd
itself was larger than the maximum size required.  cmd was reduced in
size and the format string adjusted.

In the second hunk, the format string was off-by-one for local_address,
remote_address and extra, although the buffers for the two addresses
were large enough for this not to matter.  The specifiers for the two
addresses was corrected, and a number of unused variables including
extra were suppressed from parsing.

In the third hunk, the format string was off-by-one for name,
dependencies and status.  This code was rewritten using strtok since
dependencies can be arbitrarily long.

gdb/
2013-10-23  Gary Benson  <gbenson@redhat.com>

	PR 16013
	* common/linux-osdata.c (command_from_pid): Reduced size of cmd
	from 32 to 18.  Adjusted fscanf format string accordingly.
	(Avoids leaving cmd unterminated.)
	(print_sockets): Do not parse tlen, inode, sl, timeout, txq, rxq,
	trun, retn or extra.  (Avoids leaving extra unterminated.)  Check
	that local_address and remote_address will not overflow.
	(linux_xfer_osdata_modules): Parse lines using strtok to avoid
	leaving dependencies unterminated.  Parse size as "%u" to match
	definition.
2013-10-25 14:02:59 +00:00
Pedro Alves
6d3e7a943f Remove dead sets/clears of ecs->random signal.
'*ecs' is always memset by handle_inferior_event's callers, so all
these clears are unnecessary.  There's one place that sets the flag to
true, but, afterwards, before ecs->random_signal is ever read, we
reach the part of handle_inferior_even that clears ecs->random_signal,
among other things:

  clear_stop_func (ecs);
  ecs->event_thread->stepping_over_breakpoint = 0;
  bpstat_clear (&ecs->event_thread->control.stop_bpstat);
  ecs->event_thread->control.stop_step = 0;
  stop_print_frame = 1;
  ecs->random_signal = 0;
  stopped_by_random_signal = 0;

So all these ecs->random_signal accesses are dead code.

Tested on x86_64 Fedora 17.

gdb/
2013-10-22  Pedro Alves  <palves@redhat.com>

	* infrun.c (handle_inferior_event) <thread hop>: Don't clear or
	set ecs->random signal.
2013-10-25 14:02:59 +00:00
Pedro Alves
42ec045f62 Add missing ChangeLog entries for previous commits. 2013-10-25 14:02:59 +00:00
Pedro Alves
a9ba6bae21 infrun.c:keep_going: update comments.
This function still has comments referring back to when it was a goto
label in wait_for_inferior, eons ago.  Looking closer, actually most
of its comments could use a facelift (contents/formatting/typos).
That's what this patch does.

gdb/
2013-10-22  Pedro Alves  <palves@redhat.com>

	* infrun.c (keep_going): Update comments.
2013-10-25 14:02:59 +00:00
Pedro Alves
3a09da4102 remote: Map invalid signal numbers to GDB_SIGNAL_UNKNOWN.
I realized that remote.c is not validating input here.  Currently, if
a remote stub sends in an invalid signal number (or put another way,
if a future stub sends a new signal an old GDB doesn't know about),
GDB will do out of bounds accesses in the
signal_pass/signal_stop/signal_program arrays.  It'll probably be a
long while before we add another signal number (and buggy stubs should
just be fixed), but can't hurt to be defensive.

Tested on x86_64 Fedora 17, native gdbserver.

gdb/
2013-10-22  Pedro Alves  <palves@redhat.com>

	* remote.c (remote_parse_stop_reply) <'T'/'S'/'X' replies>: Map
	invalid signal numbers to GDB_SIGNAL_UNKNOWN.
2013-10-25 14:02:59 +00:00
Pedro Alves
4e22507533 Fix up a couple oddities in GDB's signal names and strings.
- The Mach exception/signals escaped the TARGET_ -> GDB_ prefix change
  done a while ago, but there's no real reason for that.  I grepped
  for TARGET_EXC and fixed all found, which unsurprisingly, means
  darwin-nat.c needed fixing.  I think the change there is as obvious
  and trivial as it can get, so I'd be quite surprised if this broke
  anything there somehow.

- GDB_SIGNAL_LAST's description string was unnecessarily inconsistent
  with the enum name.

Built on x86_64 Fedora 17.

gdb/
2013-10-22  Pedro Alves  <palves@redhat.com>

	* include/gdb/signals.def (TARGET_EXC_BAD_ACCESS): Rename to
	GDB_EXC_BAD_ACCESS.
	(TARGET_EXC_BAD_INSTRUCTION): Rename to GDB_EXC_BAD_INSTRUCTION.
	(TARGET_EXC_ARITHMETIC): Rename to GDB_EXC_ARITHMETIC.
	(TARGET_EXC_EMULATION): Rename to GDB_EXC_EMULATION.
	(TARGET_EXC_SOFTWARE): Rename to GDB_EXC_SOFTWARE.
	(TARGET_EXC_BREAKPOINT): Rename to GDB_EXC_BREAKPOINT.
	(GDB_SIGNAL_LAST): Change description string.
	* common/signals.c (gdb_signal_from_host, do_gdb_signal_to_host):
	Adjust to signal renaming.
	* darwin-nat.c (darwin_decode_message): Likewise.
2013-10-25 14:02:58 +00:00
Jose E. Marchesi
c8fde1b179 2013-10-22 Jose E. Marchesi <jose.marchesi@oracle.com>
* MAINTAINERS (Write After Approval): Add myself to the list.
2013-10-25 14:02:58 +00:00