Commit Graph

37025 Commits

Author SHA1 Message Date
Yao Qi 246994ce35 Move aarch64_relocate_instruction to arch/aarch64-insn.c
This patch moves aarch64_relocate_instruction and visitor class to
arch/aarch64-insn.c, so that both GDB and GDBserver can use it.

gdb:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* arch/aarch64-insn.c (aarch64_decode_ldr_literal): Moved from
	gdbserver/linux-aarch64-low.c.
	(aarch64_relocate_instruction): Likewise.
	* arch/aarch64-insn.h (aarch64_decode_ldr_literal): Declare.
	(struct aarch64_insn_data): Moved from
	gdbserver/linux-aarch64-low.c.
	(struct aarch64_insn_visitor): Likewise.
	(aarch64_relocate_instruction): Declare.

gdb/gdbserver:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (extract_signed_bitfield): Remove.
	(aarch64_decode_ldr_literal): Move to gdb/arch/aarch64-insn.c.
	(aarch64_relocate_instruction): Likewise.
	(struct aarch64_insn_data): Move to gdb/arch/aarch64-insn.h.
	(struct aarch64_insn_visitor): Likewise.
2015-10-12 11:28:38 +01:00
Yao Qi 0badd99faf Use visitor in aarch64_relocate_instruction
Nowadays, the instruction decodings and handling are mixed together
inside aarch64_relocate_instruction.  The patch decouples instruction
decoding and instruction handling by using visitor pattern.  That is,
aarch64_relocate_instruction decode instructions and visit each
instruction by different visitor methods.  Each visitor defines the
concrete things to different instructions.  Fast tracepoint instruction
relocation and displaced stepping can define their own visitors,
sub-class of struct aarch64_insn_data.

gdb/gdbserver:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (struct aarch64_insn_data): New.
	(struct aarch64_insn_visitor): New.
	(struct aarch64_insn_relocation_data): New.
	(aarch64_ftrace_insn_reloc_b): New function.
	(aarch64_ftrace_insn_reloc_b_cond): Likewise.
	(aarch64_ftrace_insn_reloc_cb): Likewise.
	(aarch64_ftrace_insn_reloc_tb): Likewise.
	(aarch64_ftrace_insn_reloc_adr): Likewise.
	(aarch64_ftrace_insn_reloc_ldr_literal): Likewise.
	(aarch64_ftrace_insn_reloc_others): Likewise.
	(visitor): New.
	(aarch64_relocate_instruction): Use visitor.
2015-10-12 11:28:38 +01:00
Yao Qi dfaffe9d93 Move append_insns out of aarch64_relocate_instruction
aarch64_relocate_instruction should only decode instructions, and other
operations should be done out side of it.  This patch moves append_insns
out of aarch64_relocate_instruction, to its caller.

gdb/gdbserver:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (aarch64_relocate_instruction): Return
	int.  Add argument buf.
	(aarch64_install_fast_tracepoint_jump_pad): Pass buf to
	aarch64_relocate_instruction.
2015-10-12 11:28:38 +01:00
Yao Qi 70b439f0a8 Move target_read_uint32 out of aarch64_relocate_instruction
This patch is to move target_read_uint32 out of
aarch64_relocate_instruction and pass INSN to
aarch64_relocate_instruction, so that it is cleaner, only decode
instructions.

gdb/gdbserver:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (aarch64_relocate_instruction): Add
	argument insn.  Remove local variable insn.  Don't call
	target_read_uint32.
	(aarch64_install_fast_tracepoint_jump_pad): Call
	target_read_uint32.
2015-10-12 11:28:38 +01:00
Yao Qi 8240f4421f More tests in gdb.arch/insn-reloc.c
This patch adds more tests in gdb.arch/insn-reloc.c to cover
instruction BL and cover B.CON when CON is false.  These new added
tests can be used for displaced stepping too.

gdb/testsuite:

2015-10-12  Yao Qi  <yao.qi@linaro.org>

	* gdb.arch/insn-reloc.c (can_relocate_bcond): Rename to ...
	(can_relocate_bcond_true): ... it.
	(can_relocate_bcond_false): New function.
	(foo): Likewise.
	(can_relocate_bl): Likewise.
	(testcases) [__aarch64__]: Add can_relocate_bcond_false and
	can_relocate_bl.
2015-10-12 11:28:38 +01:00
Pierre-Marie de Rodat 2520f728b7 Forward VALUE_LVAL when avoiding side effects for STRUCTOP_STRUCT
Assume foo_array is a pointer to a C structure. GDB must evaluate the
following expression properly, but it does not currently:

    (gdb) print 1 && &foo_array[1].a
    Attempt to take address of value not located in memory.

The problem is that in EVAL_AVOID_SIDE_EFFECTS mode,
eval.c:evaluate_subexp_standard always returns a not_lval value as the
result for a STRUCTOP_STRUCT operation. As a consequence, the rest of
the code believes that one cannot take the address of the returned
value.

This patch fixes STRUCTOP_STRUCT handling so that the VALUE_LVAL
attribute for the returned value is properly initialized.  After this
change, the above session becomes:

    (gdb) print 1 && &foo_array[1].a
    $1 = 1

gdb/ChangeLog:

	* eval.c (evaluate_subexp_standard) <STRUCTOP_STRUCT>: If
	EVAL_AVOID_SIDE_EFFECTS mode, forward the VALUE_LVAL attribute
	to the returned value.

gdb/testsuite/ChangeLog:

	* gdb.base/nested-addr.c: New file.
	* gdb.base/nested-addr.exp: New testcase.

Tested on x86_64-linux, no regression.
2015-10-12 12:22:10 +02:00
Joel Brobecker 5b639deae1 [Ada] ada_unpack_from_contents: Error if target buffer not large enough
This adds a guard that the size of the "unpacked" buffer is large enough
to contain at least BIT_SIZE bits.  If not, report an error.  This is to
guard this routine from doing buffer overflows when called incorrectly.

gdb/ChangeLog:

        * ada-lang.c (ada_unpack_from_contents): Add guard that unpacked
        is large enough for BIT_SIZE.  Update function comment.
2015-10-09 14:33:57 -07:00
Joel Brobecker 0cafa88cc0 [Ada] Buffer overflow in ada_unpack_from_contents
This patch fixes a buffer overflow in ada_unpack_from_contents
caused by one of the previous commits. This happens when trying
to print the value of an array of variant records.

The overflow happens while trying to print one element of the array.
Because the size of each element in the array is variable, the array
has a DWARF byte_stride attribute, which makes us treat the array
as if it was packed. And during the extraction of each array element,
we try to unpack an object using the array's byte stride as the size,
into an element whose size is actually less than the stride.

This patch fixes the issue by overriding the byte-stride with
the actual element's length.

gdb/ChangeLog:

        * ada-lang.c (ada_value_primitive_packed_val): Move
        src_len variable to local block where used.  Override
        BIT_SIZE if bigger than size of resolved type.
2015-10-09 14:33:28 -07:00
Joel Brobecker 220475ed8b make is_scalar_type non-static and use it in ada-lang.c
Just a small cleanup, to avoid code duplication...

gdb/ChangeLog:

        * gdbtypes.h (is_scalar_type): Add extern declaration.
        * gdbtypes.c (is_scalar_type): Make non-static.
        * ada-lang.c (ada_value_primitive_packed_val): Use is_scalar_type
        to compute IS_SCALAR instead of doing it ourselves.
2015-10-09 14:32:23 -07:00
Joel Brobecker d0a9e81089 [Ada] Better handling of dynamic types in ada_value_primitive_packed_val
There is some partial handling for dynamic types in
ada_value_primitive_packed_val, but this support was added
in a fairly ad hoc way, and actually only covered the situation
where OBJ is not NULL and its contents had not been fetched yet.
In addition, even in the cases that it does cover, it doesn't make
much sense. In particular, it was adjusting BIT_SIZE and SRC_LEN,
which are properties of the data to be extracted _from_, based
on TYPE's length once resolved, which is a property of the data
we want to extract _to_.

This patch hopefully adjust this function to handle dynamic types
correctly, and in all cases. It does so by unpacking the data into
a temporary buffer in order to use that buffer to resolve the type.
And _then_ creates the resulting value from that resolved type.

gdb/ChangeLog:

        * ada-lang.c (ada_value_primitive_packed_val): Rework handling
        of case where TYPE is dynamic.
2015-10-09 14:30:38 -07:00
Joel Brobecker f93fca700f [Ada] split data unpacking code out of ada_value_primitive_packed_val.
This patch is just preparation work which splits the function
ada_value_primitive_packed_val into two function: one which unpacks
the data, and the other which now uses it to implement
ada_value_primitive_packed_val.

This simplifies a bit ada_value_primitive_packed_val, but will also
allow us to use the new function to unpack data without actually creating
a struct value as a result.

gdb/ChangeLog:

        * ada-lang.c (ada_unpack_from_contents): New function,
        extracted from ada_value_primitive_packed_val.
        (ada_value_primitive_packed_val): Replace extracted out code
        by call to ada_unpack_from_contents.
2015-10-09 14:30:06 -07:00
Joel Brobecker a1c95e6b6e Reorder variable declarations in ada_value_primitive_packed_val
This patch just changes the order in which local variables are declared
so as to group the logically-related variables together.  No code
change otherwise.

gdb/ChangeLog:

        * ada-lang.c (ada_value_primitive_packed_val): Reorder local
        variable declarations.
2015-10-09 14:28:50 -07:00
Joel Brobecker fbd000da7c use gdb_byte in ada-lang.c::ada_value_primitive_packed_val...
... instead of "unsigned char".

gdb/Changelog:

        * ada-lang.c (ada_value_primitive_packed_val): Change the type
        of local variables src and unpacked to "gdb_type *" instead of
        "unsigned char *".
2015-10-09 14:28:21 -07:00
Joel Brobecker 086ca51f46 More explicit local variable names in ada_value_primitive_packed_val
A number of local variables declared in ada_value_primitive_packed_val
have a name that could, IMO, be improved to, either: Be more explicit
about what the variable is about (Eg: "src" is an index, so rename it
to "src_idx"); or be more consistent with other variables that they
relate to: for instance, several variables refer to the source via
"src" (Eg: srcBitsLeft, nsrc), but the buffer they refer to is called
"bytes", so patch renames "bytes" to "src".

This should help read and understand a little more easily the code
inside this function.  No real code change otherwise.

gdb/ChangeLog:

        * ada-lang.c (ada_value_primitive_packed_val): Make the name
        of various local variables more explicit and consistent.
        No real code change otherwise.
2015-10-09 14:27:43 -07:00
Simon Marchi c5bcd27856 i386: Fix type of gdbarch_tdep::register_reggroup_p
gdb/ChangeLog:

	* i386-tdep.h (struct gdbarch_tdep): Change type of
	register_reggroup_p to gdbarch_register_reggroup_p_ftype.
2015-10-09 10:12:22 -04:00
Simon Marchi 78c5b88248 cris: Use enum bfd_endian to represent endianness
gdb/ChangeLog:

	* cris-tdep.c (struct instruction_environment): Change type of
	byte_order to enum bfd_endian.
2015-10-09 10:12:21 -04:00
Simon Marchi f9fa37b325 arm-linux-tdep: Add explicit cast for int to gdb_syscall conversion
This patch is taken from Pedro's branch.

gdb/ChangeLog:

	* arm-linux-tdep.c (arm_canonicalize_syscall): Add
	enum gdb_syscall casts.
2015-10-09 10:12:21 -04:00
Simon Marchi 7c543f7b07 Change some void* to gdb_byte*
There are a bunch of places where a void* is implicitely casted into a
gdb_byte*.  The auto-insert-casts script added explicit casts at those
places.  However, in many cases, it makes more sense to just change the
void* to a gdb_byte*.

gdb/ChangeLog:

	* aarch64-tdep.c (stack_item_t): Change type of data to gdb_byte*.
	* arm-tdep.c (struct stack_item): Likewise.
	(push_stack_item): Add gdb_byte* cast.
	* avr-tdep.c (struct stack_item): Change type of data to gdb_byte*.
	(push_stack_item): Add gdb_byte* cast.
	* cli/cli-dump.c (dump_memory_to_file): Change type of buf to gdb_byte*
	and add cast.
	* cris-tdep.c (struct stack_item): Change type of data to gdb_byte*.
	(push_stack_item): Add gdb_byte* cast.
	* gcore.c (gcore_copy_callback): Change type of memhunk to gdb_byte* and
	add cast.
	* gdbtypes.h (print_scalar_formatted): Change type of first parameter to
	gdb_byte*.
	* h8300-tdep.c (h8300_extract_return_value): Change type of valbuf to
	gdb_byte* and remove unnecessary cast.
	(h8300h_extract_return_value): Likewise.
	(h8300_store_return_value): Change type of valbuf to gdb_byte*.
	(h8300h_store_return_value): Likewise.
	* iq2000-tdep.c (iq2000_extract_return_value): Change type of valbuf to
	gdb_byte* and remove unnecessary cast.
	* jit.c (jit_reader_try_read_symtab): Change type of gdb_mem to gdb_byte*
	and add cast.
	* m32r-tdep.c (m32r_store_return_value): Change type of valbuf to
	gdb_byte* and remove unnecessary cast.
	(m32r_extract_return_value): Change type of dst to gdb_byte* and remove
	valbuf.
	* mep-tdep.c (mep_pseudo_cr32_read): Change type of buf to gdb_byte*.
	(mep_pseudo_cr64_read): Likewise.
	(mep_pseudo_csr_write): Likewise.
	(mep_pseudo_cr32_write): Likewise.
	(mep_pseudo_cr64_write): Likewise.
	* mi/mi-main.c (mi_cmd_data_write_memory): Change type of buffer to
	gdb_byte* and add cast.
	* moxie-tdep.c (moxie_store_return_value): Change type of valbuf to
	gdb_byte* and remove unnecessary cast.
	(moxie_extract_return_value): Change type of dst to gdb_byte* and remove
	valbuf.
	* p-valprint.c (print_scalar_formatted): Change type of valaddr to
	gdb_byte*.
	* printcmd.c (void): Likewise.
	* python/py-inferior.c (infpy_read_memory): Change type of buffer to
	gdb_byte* and add cast.
	(infpy_write_memory): Likewise.
	(infpy_search_memory): Likewise.
	* regcache.c (regcache_raw_write_signed): Change type of buf to gdb_byte*
	and add cast.
	(regcache_raw_write_unsigned): Likewise.
	(regcache_cooked_write_signed): Likewise.
	(regcache_cooked_write_unsigned): Likewise.
	* sh64-tdep.c (h64_extract_return_value): Change type of valbuf to
	gdb_byte*.
2015-10-09 10:08:23 -04:00
Simon Marchi 7567e115d3 Add two callback data casts
gdb/ChangeLog:

	* fbsd-tdep.c (fbsd_collect_regset_section_cb): Add cast.
	* linux-tdep.c (linux_collect_regset_section_cb_data): Likewise.
2015-10-09 09:41:30 -04:00
Eli Zaretskii f9acce4a4f Fix typos in comments
gdb/

2015-10-09  Eli Zaretskii  <eliz@gnu.org>

	* stack.c (print_stack_frame):
	* utils.c (printchar): Fix typos in commentary.
2015-10-09 16:21:08 +03:00
Markus Metzger abcef95aa5 btrace, test: avoid gdb.btrace/vdso.exp fail
The vdso.exp test checks that we can access the VDSO memory when replaying.

Depending on the line information generated by the compiler, runto_main may run
to the line marked with bp.1 or stop before that line.  The test incorrectly
assumes that it will always run to the marked line and fails if it doesn't.

The test does not really care about what is traced.  It does care that GDB is
replaying when capturing the second disassemble output.

Reflect that in the test by ignoring the output of the stepping and record goto
begin commands and by checking that GDB is actually replaying.

testsuite/
	* gdb.btrace/vdso.c (main): Remove breakpoint markers.
	* gdb.btrace/vdso.exp: Change stepping command to "next" and ignore
	its output.  Ignore the output of "record goto begin" and instead
	check that GDB is replaying.
2015-10-09 14:29:41 +02:00
Pedro Alves 145e3ddb4b Fix gdb.base/a2-run.exp race
This patch fixes this racy failure, with the native-extended-gdbserver
board:

 (gdb) run
 Starting program: build/gdb/testsuite/outputs/gdb.base/a2-run/a2-run
 Remote debugging from host 127.0.0.1
 Process build/gdb/testsuite/outputs/gdb.base/a2-run/a2-run created; pid = 23832
 Reading /lib64/ld-linux-x86-64.so.2 from remote target...
 warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
 Reading /lib64/ld-linux-x86-64.so.2 from remote target...
 Reading /lib64/libm.so.6 from remote target...
 Reading /lib64/libc.so.6 from remote target...
 [Inferior 1 (process 23832) exited with code 01]
 (gdb) FAIL: gdb.base/a2-run.exp: run "a2-run" with no args
 PASS: gdb.base/a2-run.exp: no spurious messages at program exit
 run 5
 Starting program: build/gdb/testsuite/outputs/gdb.base/a2-run/a2-run 5
 Reading /lib64/ld-linux-x86-64.so.2 from remote target...
 usage:  factorial <number>

 Child exited with status 1

Note that the output is correct; it's just that inferior output
appeared after gdb's output, and the test doesn't handle that
correctly.

This comment isn't really correct, unfortunately:

	# waiting.  If we had already seen the status wrapper exit,
	# gdb_test_multiple/expect has no spawn ids left, and thus
	# returns.

That's true of expect in general, but I had missed / forgot that
gdb_test_multiple internally has extra matches using "-i
$gdb_spawn_id", so even if the caller clears all the indirect spawn id
lists, gdb_test_multiple will continue waiting.

So do a conditional exp_continue manually instead.

gdb/testsuite/ChangeLog:
2015-10-09  Pedro Alves  <palves@redhat.com>

	* gdb.base/a2-run.exp (maybe_exp_continue): New procedure.
	(top level): Use it in the run with no args test.
2015-10-09 12:56:26 +01:00
Iain Buclaw d5d8c4e12b [D] Support D style sizeof and typeof expressions.
gdb/ChangeLog:

	* d-exp.y: (UnaryExpression): Support `type.sizeof' expressions.
	(PostfixExpression): Support `expr.sizeof' expressions.
	(PrimaryExpression): Support `typeof(expr)' expressions.

gdb/testsuite/ChangeLog:

	* gdb.dlang/properties.exp: New file.
2015-10-08 21:42:36 +02:00
Maciej W. Rozycki 4e7de1556a MAINTAINERS: Update my email address
gdb/
	* MAINTAINERS: Update my email address.
2015-10-08 18:57:56 +01:00
Markus Metzger 04c4fe8c59 btrace: fix void return
record_btrace_resume returns the void return from the to_resume method of the
target beneath.  Split this into calling to_resume and return.

gdb/
	* record-btrace.c (record_btrace_resume): Fix void return.
2015-10-08 09:00:57 +02:00
Yao Qi f77ee8026d [aarch64] use aarch64_decode_insn to decode instructions in GDB
In this patch, we start to use aarch64_decode_insn to decode instructions
in aarch64_software_single_step.

gdb:

2015-10-07  Yao Qi  <yao.qi@linaro.org>

	* aarch64-tdep.c: Include opcode/aarch64.h.
	(submask): Move it above.
	(bit): Likewise.
	(bits): Likewise.
	(aarch64_software_single_step): Call aarch64_decode_insn.
	Decode instruction by aarch64_inst instead of using
	aarch64_decode_bcond and decode_masked_match.
2015-10-07 09:52:46 +01:00
Pitchumani Sivanupandi cbd641edf3 parse load_offset (bias) of restore command as long
Following failures are noticed for avr-gdb. This may be the case
for targets like AVR which has integer_to_address hook defined.

FAIL: gdb.base/dump.exp: struct copy, srec; value restored ok
FAIL: gdb.base/dump.exp: struct copy, ihex; value restored ok
FAIL: gdb.base/dump.exp: struct copy, tekhex; value restored ok

These tests are failed because load_offset(bias) of restore command
parsed as address.

command: restore filename [binary] bias start end

Except binary, other BFDs have a built-in location; gdb restores content
at offset 'bias' from that location. So, 'bias' of 'restore' command should
be parsed as address only when the file is binary.

Below patch changes gdb to parse 'bias' as long if the file is not binary.

gdb/ChangeLog

2015-10-06  Pitchumani Sivanupandi  <pitchumani.s@atmel.com>

	* cli/cli-dump.c (restore_command): Parse load_offset (bias) as address
	only when the file is binary.
2015-10-06 18:29:03 +02:00
jamesbowman ae4e25019d [FT32] gdb: Correctly interpret function prologs
The stack unwinder did not understand the function prologs
generated by gcc with -Os. Add code to recognize and interpret the
prolog calls.

[gdb]

2015-10-02  James Bowman  <james.bowman@ftdichip.com>

	* ft32-tdep.c (ft32_analyze_prologue): Add function prolog
	subroutine handling.
2015-10-02 17:32:47 -07:00
Sandra Loosemore 06e635ef63 Fix gdb.dwarf2/staticvirtual.exp regexp.
2015-10-02  Sandra Loosemore  <sandra@codesourcery.com>

	gdb/testsuite/
	* gdb.dwarf2/staticvirtual.exp: Generalize regexp so it can match
	whether or not address 0x1000 is mapped on the target.
2015-10-02 13:12:56 -07:00
Simon Marchi dd0a637a3d vec.h: Add casts for C++ compat
gdb/ChangeLog:

	* common/vec.h (VEC_OP (T,cleanup)): Add pointer cast.
2015-10-01 11:29:08 -04:00
Doug Evans 1fd60fc077 dwarf2read.c (setup_type_unit_groups): Add comment.
gdb/ChangeLog:

	* dwarf2read.c (setup_type_unit_groups): Add comment.
2015-09-30 12:29:48 -07:00
Pedro Alves 398e081380 x86/Linux: reenable all-stop on top of non-stop
Since the record-btrace target now supports non-stop mode, we no
longer need to force-disable as-ns on x86.

gdb/ChangeLog:
2015-09-30  Pedro Alves  <palves@redhat.com>

	* linux-nat.c (linux_nat_always_non_stop_p): Always return 1.
	* x86-linux-nat.c (x86_linux_always_non_stop_p): Delete.
	(x86_linux_create_target): Don't install
	x86_linux_always_non_stop_p.
2015-09-30 19:23:39 +01:00
Don Breazeal 6ab24463cb Call strprefix instead of strncmp in event parsing
This fixes a typo that used strncmp instead of strprefix when
checking for an exec event in a stop reply packet.

gdb/ChangeLog:

	* remote.c (remote_parse_stop_reply): Call strprefix instead
	of strncmp.
2015-09-30 10:14:45 -07:00
Simon Marchi ede5f15146 gdbarch.h: Change gdbarch_info::tdep_info's type to void *
As reported by Ulrich here:

  https://sourceware.org/ml/gdb-patches/2015-09/msg00604.html

The system compiler (gcc 4.1) in Centos 5 doesn't like that we cast to a
pointer to a type that doesn't exist.  I see no real value in using this
kind iof construct over just using void *.  So this patch changes the
tdep_info field to void * and removes the casts.  Even in C++, we
should not need an explicit cast when assigning to a void *.

gdb/ChangeLog:

	* gdbarch.sh (struct gdbarch_info): Change tdep_info's type to void *.
	* gdbarch.h: Regenerate.
	* i386-tdep.c (i386_gdbarch_init): Remove cast to
	struct gdbarch_tdep_info *.
	* mips-tdep.c (mips_gdbarch_init): Likewise.
	* ppc-linux-tdep (ppu2spu_sniffer): Likewise.
	* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
	* spu-multiarch.c (spu_gdbarch): Likewise.
2015-09-30 11:21:52 -04:00
Yao Qi 7781c06f6e Shorten long lines in linux-aarch64-low.c
Happen to see these lines are too long.  This patch shortens them.

gdb/gdbserver:

2015-09-30  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (emit_movk): Shorten a long line.
	(emit_load_store_pair): Likewise.
2015-09-30 16:01:47 +01:00
Simon Marchi e019fd1d14 py-type.exp: Do not run tests if binary fails to build
I noticed this while working on the test case.  I believe it would make
sense to skip running the tests if the binary failed to build.  Although
I would understand the opposite argument: if the binary does not build
for some reason, we probably want to know about it, and some catastrophic
failures in the tests might alarm us better than a timid "UNTESTED".

gdb/testsuite/ChangeLog:

	* gdb.python/py-type.exp: Do not run tests if binaries fail to
	build.
2015-09-30 10:04:33 -04:00
Kevin Buettner 51c935fa4a Fix ChangeLog Date for previous push. 2015-09-30 05:58:56 -07:00
Kevin Buettner aca20ec473 infcmd.c: Don't attempt to record a NULL value after a finish command.
Architectures which use RETURN_VALUE_STRUCT_CONVENTION will have a
NULL return value after executing a finish command.  See get_return_value()
in infcmd.c.

This patch avoids an eventual SIGSEV (caused by attempting to
derefrence a NULL pointer) by adding a suitable test to
finish_command_fsm_should_stop().

I encountered this problem while testing msp430:

(gdb) PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tc
finish
Run till exit from #0  fun1 () at /ironwood1/sourceware-git/msp430-elf/../binutils-gdb/gdb/testsuite/gdb.base/structs.c:125
ERROR: Process no longer exists

gdb/ChangeLog:
    	* infcmd.c (finish_command_fsm_should_stop): Don't attempt to
    	record a NULL value.
2015-09-30 05:56:03 -07:00
Markus Metzger 77ba2a6796 btrace, testsuite: fix spurious gdb.btrace/tsx.exp fails
If the atomic section in x86-tsx.S is aborted, the tsx.exp test will fail
even if the traced output is actually correct.

Consider abort scenarios in the test.

testsuite/
	* gdb.btrace/tsx.exp: Consider multiple correct outputs in the record
	instruction-history test.
2015-09-30 14:48:38 +02:00
Kevin Buettner 3b1ad7d510 msp430: Fix bug regarding large memory model inferior function call arguments.
This change causes reference, struct, and union arguments to be treated
the same as pointer arguments when determining the size of the value to
place into a register.

The case for doing this for reference arguments is obvious.

The msp430 ABI specifies that struct and union arguments are passed by
reference.  This is why they're treated in the same manner as pointer
and reference arguments when computing the size of the value to place
into a register.

In my testing using this multilib...

msp430-sim/-msim/-mcpu=msp430x/-mlarge/-mdata-region=either/-mcode-region=either

... I find that the the following failures, 125 in all, are fixed by this
patch.

FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns char
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns short
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns int
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex
FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns char *
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns char
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns short
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns int
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns long
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns float
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns double
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns float _Complex
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns double _Complex
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns long double _Complex
FAIL: gdb.base/callfuncs.exp: noproto: call inferior func with struct - returns char *
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 7 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 8 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 9 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 10 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 11 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 12 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 13 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 14 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 15 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 16 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 17 structs-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-tll
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tll
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-td
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-td
FAIL: gdb.base/structs.exp: p/c L<n>; call 1 structs-tld
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tld
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 7 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 8 structs-ts-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-ti-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-ti-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-ti-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-ti-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-ti-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tl-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tl-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tl-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-tl-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-tl-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tll-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tf-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tf-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-tf-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-tf-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-td-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tld-tc
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 5 structs-tc-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 6 structs-tc-ts
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-ti
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-tl
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tll
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-td
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tld
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-td-tf
FAIL: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf-td
FAIL: gdb.cp/classes.exp: call class_param.Aref_a (g_A)
FAIL: gdb.cp/classes.exp: call class_param.Aref_x (g_A)
FAIL: gdb.cp/classes.exp: call class_param.Aref_a (g_B)
FAIL: gdb.cp/classes.exp: call class_param.Aref_x (g_B)
FAIL: gdb.cp/classes.exp: call class_param.Aval_a (g_A)
FAIL: gdb.cp/classes.exp: call class_param.Aval_x (g_A)
FAIL: gdb.cp/classes.exp: call class_param.Aval_a (g_B)
FAIL: gdb.cp/classes.exp: call class_param.Aval_x (g_B)
FAIL: gdb.cp/ref-params.exp: print value of f1 on Child in main
FAIL: gdb.cp/ref-params.exp: print value of f2 on Child in main
FAIL: gdb.cp/ref-params.exp: print value of f1 on (Child&) in main
FAIL: gdb.cp/ref-params.exp: print value of f2 on (Child&) in main
FAIL: gdb.cp/ref-params.exp: print value of f1 on Child& in f2
FAIL: gdb.cp/ref-params.exp: print f1(MQ)
FAIL: gdb.cp/ref-params.exp: print mf1(MQ)
FAIL: gdb.cp/ref-params.exp: print mf2(MQ)
FAIL: gdb.cp/ref-params.exp: print f1(MQR)
FAIL: gdb.cp/ref-params.exp: print mf1(MQR)
FAIL: gdb.cp/ref-params.exp: print mf2(MQR)
FAIL: gdb.python/py-xmethods.exp: Before: a1 + a2
FAIL: gdb.python/py-xmethods.exp: Before: a2 - a1
FAIL: gdb.python/py-xmethods.exp: Before: b1 - a1
FAIL: gdb.python/py-xmethods.exp: After: a2 - a1
FAIL: gdb.python/py-xmethods.exp: After: b1 - a1

gdb/ChangeLog:

	* msp430-tdep.c (msp430_push_dummy_call): Treat reference, struct,
	and union arguments the same as pointer arguments when determining
	size of argument.
2015-09-29 21:55:31 -07:00
jamesbowman 0bcf3dd690 Undo accidental commit 2015-09-29 09:37:38 -07:00
jamesbowman 4f714dd43e Rebase patch #7 2015-09-29 09:31:09 -07:00
jamesbowman 86feccb920 [FT32] Replace hard-coded instruction patterns with macros
The stack unwinder can now use FT32_*() macros to interpet binary
instructions instead of local definitions.

2015-09-29  James Bowman  <james.bowman@ftdichip.com>

	* ft32-tdep.c: #include "opcode/ft32.h".
	Delete local macros IS_PUSH, PUSH_REG, IS_LINK, LINK_SIZE.
	(ft32_analyze_prologue): Use FT32_* macros.
2015-09-29 09:06:29 -07:00
Simon Marchi 84d73afc1a Fix last commit's ChangeLog
I somehow managed to do the same mistake in my ChangeLog entry as what I
was trying to fix in the code...
2015-09-28 18:44:30 -04:00
Simon Marchi 2181a6c626 cli-script.c: Fix read_next_line's comment
It seems obvious to me that stdout should in fact be stdin.

gdb/ChangeLog:

	* cli/cli-script.c (read_next_line): Fix stdout -> stdout in
	comment.
2015-09-28 18:34:54 -04:00
Doug Evans c60eb31fb1 gdb.base/gcore.c (array_func): Add reference to static_array.
Otherwise clang will delete it: it's otherwise unused.

gdb/testsuite/ChangeLog:

	* gdb.base/gcore.c (array_func): Add reference to static_array.
2015-09-28 13:27:28 -07:00
Doug Evans 245af59695 MAINTAINERS: Add Iain Buclaw as D language maintainer.
gdb/ChangeLog:

	* MAINTAINERS: Add Iain Buclaw as D language maintainer.
2015-09-28 12:40:01 -07:00
Doug Evans c402ef907a common/filestuff.c (make_cleanup_close): Update comment.
gdb/ChangeLog:

	* common/filestuff.c (make_cleanup_close): Update comment.
2015-09-28 11:31:54 -07:00
Simon Marchi bc84451b7a Fix cast of xml_find_attribute's return value
The cast auto-insert script inserted long unsigned int, but we should
use the typedef ULONGEST.  Fixes build failures on i386.

gdb/ChangeLog:

	* btrace.c (parse_xml_btrace_block): Fix cast of
	xml_find_attribute's return value.
	* memory-map.c (memory_map_start_memory): Likewise.
	* solib-svr4.c (library_list_start_library): Likewise.
	* solib-target.c (library_list_start_segment): Likewise.
	(library_list_start_section): Likewise.
	* tracepoint.c (traceframe_info_start_memory): Likewise.
2015-09-26 17:15:44 -04:00
Iain Buclaw ba587d55a5 [D] Fix regression in py-lookup-type.exp
In the console interpreter, primitive types are resolved in the expression
parser.  However that didn't take into consideration the script interface.

gdb/ChangeLog:

	* d-namespace.c (d_lookup_symbol): New arg langdef.
	All callers updated.  Support looking up symbol as a primitive type.
	(lookup_module_scope): New arg langdef.  All callers updated.
	Call d_lookup_symbol directly for simple bare symbols.
2015-09-26 09:13:40 +02:00