Commit Graph

92419 Commits

Author SHA1 Message Date
Alan Hayward a602f924c8 Better make rule for arch/ files built for IPA
gdbserver/
	* Makefile.in: Update arch rules.
	* configure.srv: Explicitly mark arch/ files.
2017-11-15 09:59:12 +00:00
Yao Qi a714b0d692 Fix M68HC11_NUM_REGS
M68HC11_LAST_HARD_REG is 8, but m68hc11 register number is started from 0,
so there are 9 raw registers, but M68HC11_NUM_REGS is 8 by mistake.

My following unit test can find this issue (GDB is built with asan)

=================================================================
==15555==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000113150 at pc 0x51393f bp 0x7fffcec36f60 sp 0x7fffcec36f58
WRITE of size 2 at 0x602000113150 thread T0
    #0 0x51393e in m68hc11_pseudo_register_read gdb/m68hc11-tdep.c:320
    #1 0xc4b620 in gdbarch_pseudo_register_read(gdbarch*, regcache*, int, unsigned char*) gdb/gdbarch.c:1974
    #2 0xddad88 in regcache::cooked_read(int, unsigned char*) gdb/regcache.c:710
    #3 0xddff2b in cooked_read_test gdb/regcache.c:1850
    #4 0xdf8cfb in selftests::gdbarch_selftest::operator()() const gdb/selftest-arch.c:73

gdb:

2017-11-15  Yao Qi  <yao.qi@linaro.org>

	* m68hc11-tdep.c (M68HC11_NUM_REGS): Change it to
	M68HC11_LAST_HARD_REG + 1.
2017-11-15 09:36:51 +00:00
Jan Beulich 390a67891e x86: use correct register names
VEX.W may be legitimately set (and is then ignored by the CPU) for
non-64-bit code. Don't print 64-bit register names in such a case, by
utilizing that REX_W would never be set for non-64-bit code, and that
it is being set from VEX.W by generic decoding.

A test for this is going to be introduced in the next patch of this
series.
2017-11-15 08:52:05 +01:00
Jan Beulich 3a2430e05b x86: drop VEXI4_Fixup()
The low four bits of an immediate being set when the high bits specify a
fourth register operand is not a problem: CPUs ignore these bits rather
than raising #UD. Take care of incrementing codep in OP_EX_VexW()
instead.
2017-11-15 08:51:03 +01:00
Jan Beulich 0645f0a2a7 x86-64: don't allow use of %axl as accumulator
Just like %cxl can't be used as shift count register. Otherwise for
consistency %cxl would need to gain "ShiftCount" and use of both ought
to properly cause REX prefixes to be emitted.
2017-11-15 08:48:51 +01:00
Alan Modra 99847db8ea ld einfo positional arg support
To allow translators to reorder values in translated strings.  This
should mean that all binutils messages now have support for
reordering.

Note to translators:  Not all % letters take arguments, so for example
the following only has two arguments, the two %s strings.
"%P%F: output format %s cannot represent section called %s: %E\n"

You could reorder this if you liked to:
"%P%F: %E: section %2$s cannot be represented in output format %1$s\n"

einfo lacks support for flags, field width, precision and length
modifier (apart from %ld and %lu) so don't try to use them in
translations.  Both ld and bfd lack support to use a positional arg
twice.  These features could be added if needed..

	* ldmisc.c (vfinfo): Support up to 9 positional args.
2017-11-15 13:35:03 +10:30
Jim Wilson 583712f5ab First part of fix for riscv gas lns-common-1 failure.
gas/
	* testsuite/gas/lns/lns.exp (lns-common-1): Add riscv*-*-* to alt list.
2017-11-14 17:23:14 -08:00
Jim Wilson 4fbd5513b1 Add modified file I missed in last commit. 2017-11-14 17:07:32 -08:00
Jim Wilson 754842fba3 Fix riscv ld testsuite failure for compressed1d.
ld/
	* testsuite/ld-elf/compress1-alt.s: New.
	* testsuite/ld-elf/compressed1d-alt.d: New.
	* testsuite/ld-elf/compressed1d.d: Add riscv*-*-* to notarget list.
2017-11-14 17:02:43 -08:00
GDB Administrator 47f19c17d6 Automatic date update in version.in 2017-11-15 00:00:25 +00:00
Paul Carroll 92ffd47519 Fix 'xfered>0' assertion in target.c for remote connection
We have a customer who is using a Corelis gdb server to connect to gdb.
Occasionally, the gdb server will send a 0-byte block of memory for a
read.  When this happens, gdb gives an assertion from target.c:

internal-error: target_xfer_partial: Assertion `*xfered_len > 0' failed.

This problem is almost identical to that fixed in
https://sourceware.org/ml/gdb-patches/2014-02/msg00636.html

In this case, remote.c needs to be modified to return TARGET_XFER_EOF
instead of TARGET_XFER_OK or TARGET_XFER_UNAVAILABLE when 0 bytes are
transferred.

gdb/ChangeLog:

	PR gdb/22388
	* remote.c (remote_write_bytes_aux, remote_read_bytes_1,
	remote_read_bytes, remote_write_qxfer, remote_xfer_partial):
	Return TARGET_XFER_EOF if size of returned data is 0.
2017-11-14 17:39:24 -05:00
Simon Marchi 0743190874 Fix mem region parsing regression and add test
In my patch

  Get rid of VEC (mem_region)
  a664f67e50

I introduced a regression, where the length of the memory region is
assigned to the "hi" field.  It should obviously be computed as "start +
length".  To my defense, no test had caught this :).  As a penance, I
wrote one.

gdb/ChangeLog:

	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
	memory-map-selftests.c.
	(SUBDIR_UNITTESTS_OBS): Add memory-map-selftests.o.
	* memory-map.c (memory_map_start_memory): Fix computation of hi
	address.
	* unittests/memory-map-selftests.c: New file.
2017-11-14 16:42:08 -05:00
Alan Modra 06bcf5416f PR22431, powerpc64 ld segfault when .plt discarded
The fix for the PR is to not use input_section->output_section->owner
to get to the output bfd, but use the output bfd directly since it is
available nowadays in struct bfd_link_info.

I thought it worth warning when non-empty dynamic sections are
discarded too, which meant a tweak to one of the ld tests to avoid the
warning.

bfd/
	PR 22431
	* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Warn on discarding
	non-empty dynamic section.
	(ppc_build_one_stub): Take elf_gp from output bfd, not output
	section owner.
	(ppc_size_one_stub, ppc64_elf_next_toc_section): Likewise.
ld/
	* testsuite/ld-elf/note-3.t: Don't discard .got.
2017-11-14 20:43:55 +10:30
Alan Modra 640d0ed874 ld-ifunc non-PIC tests
* testsuite/ld-ifunc/ifunc.exp: Ensure non-PIC tests are really
	not PIE by default gcc options.
2017-11-14 19:53:35 +10:30
Jan Beulich be92cb147d x86: add disassembler support for XOP VPCOM* pseudo-ops
Matching up with the assembler, which already supports them.
2017-11-14 08:43:26 +01:00
Jan Beulich 2645e1d079 x86: add support for AVX-512 VPCMP*{B,W} pseudo-ops
... matching up with VPCMP*{D,Q}.
2017-11-14 08:42:26 +01:00
Jan Beulich df145ef656 x86: string insns don't allow displacements
Remove the misleading indicators from the table.
2017-11-14 08:40:48 +01:00
Alan Modra 2d0d44d514 Inconsistent .eh_frame_hdr on powerpc64
There is code in bfd/elf-eh-frame.c and ld/emultempl/elf32.em that
checks for the presence of eh_frame info by testing for a section
named .eh_frame sized more than 8 bytes.   The size test is to exclude
a zero terminator.  A similar check in elf64-ppc.c wrongly just tested
for non-zero size before creating the linker generated .eh_frame
describing plt call and other linkage stubs.  The intention was to not
generate that info unless there was some user .eh_frame.  (No user
.eh_frame implies the user doesn't care about exception handling.)
Because the test in elf64-ppc.c was wrong, ld generated the stub
.eh_frame just on finding a zero .eh_frame terminator in crtend.o, but
didn't generate the corresponding .eh_frame_hdr.

	* elf64-ppc.c (ppc64_elf_size_stubs): Correct test for user
	.eh_frame info.
2017-11-14 15:45:41 +10:30
Simon Marchi ddbb44cf36 gdb.opt/inline-locals.exp: Remove trailing parentheses in test names
Test names should not end with parentheses, since the buildbot strips
those.

gdb/testsuite/ChangeLog:

	* gdb.opt/inline-locals.exp: Remove trailing parentheses from
	test names.
2017-11-13 22:06:02 -05:00
GDB Administrator 8f8a20af3f Automatic date update in version.in 2017-11-14 00:00:24 +00:00
H.J. Lu 58e6cc77b7 ld: Replace exp_dataseg_none with exp_seg_none
* emultempl/ppc32elf.em (ppc_before_allocation): Replace
	exp_dataseg_none with exp_seg_none.
	* emultempl/ppc64elf.em (prelim_size_sections): Likewise.
	* emultempl/spuelf.em (spu_before_allocation): Likewise.
2017-11-13 08:19:10 -08:00
Andreas Schwab 5616b6c32f Enable hardware single step for m68k in GDBServer
* linux-m68k-low.c (m68k_supports_hardware_single_step): New
function.
(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
2017-11-13 16:03:36 +01:00
Jan Beulich 5b2b928e83 gas/arm64: don't emit stack pointer symbol table entries
Without this change, all of

	mov	z0.b, p0/m, wsp
	mov	z0.b, wsp
	mov	z0.d, p0/m, sp
	mov	z0.d, sp

insert stray symbols into the symbol table.
2017-11-13 12:27:45 +01:00
Jan Beulich 6465780617 gas/ia64: fix testsuite failures
Commit dd90581873 ("Place .shstrtab section after .symtab and .strtab,
thus restoring monotonically incre... ") adjusted section numbers, but
forgot to adjust sh_link references from relocation and group section
table entries.

Additionally some other (perhaps subsequent) change appears to have
added .rel.* and .rela.* sections to their respective groups, which
requires some further adjustments to group-2.d. I assume this additional
breakage wasn't noticed because the test was already failing at that
time.

This makes the gas testsuite complete successfully again for me in a
cross build on ix86-linux; there continue to be quite a few ld failures.
2017-11-13 12:26:48 +01:00
Jan Beulich 5be87c8fa7 PE: don't corrupt section flags when linking from ELF objects
Linking EFI executables from ELF object files can result in corrupted
COFF section flags if the section's alignment is too high. Issue a
diagnostic in that case, erroring out if this is not a final link, and
make sure only in-range values get written to the output image.

While doing this also make tic80 use the generic alignment macros
instead of custom #ifdef-ary.

No testsuite regressions for the range of COFF/PE targets that actually
cross-build in the first place on x86-64-linux.
2017-11-13 12:26:12 +01:00
Jan Beulich b76bc5d54e x86: don't default variable shift count insns to 8-bit operand size
Just like %dx in I/O instructions isn't suitable to derive operand size
information, %cl source operands of shift instructions aren't.
2017-11-13 12:22:21 +01:00
Jan Beulich 897e603cb9 x86: {f,}xsave64 / {f,}xrstor64 / xsaveopt64 should not allow q suffix
Just like is the case for xsave{s,c}64 and xrstors64 already. I wonder
though why xsave{s,c} and xrstors don't allow for the q suffix, other
than the other insns without the "64" suffix do.
2017-11-13 12:21:29 +01:00
Jan Beulich 1187cf29b1 x86/Intel: don't mistake riz/eiz as base register
Just like we make rsp/esp a base register even if it comes second, make
riz/eiz an index register even if it comes first.
2017-11-13 12:20:30 +01:00
Jan Beulich 2abc2bec4d x86-64/Intel: issue diagnostic for out of range displacement
... rather than silently dropping it altogether.
i386_finalize_displacement() expects baseindex to already be set, so
the respective statement needs to be moved up. This then also allows a
subsequent conditional to be simplified.

For this to not regress on 32-bit addressing, break out address size
guessing from i386_index_check(), invoking the new function earlier so
that i386_finalize_displacement() has i.prefix[ADDR_PREFIX] available.
i386_addressing_mode () in turn needs i.base_reg / i.index_reg set
earlier.
2017-11-13 12:19:34 +01:00
H.J. Lu ed1794ee7a ld: Add ldlang_check_relro_region/update lang_find_relro_sections_1
Extract GNU_RELRO region check into a new funtion and pass a pointer to
seg_align_type to lang_find_relro_sections_1 so that they can also be
used for text-only LOAD segment.

	* ldlang.c (lang_size_sections_1): Extract GNU_RELRO region check
	into ...
	(ldlang_check_relro_region): New function.
	(lang_find_relro_sections_1): Add an argument for pointer to
	seg_align_type and replace expld.dataseg with the pointer.
	(lang_find_relro_sections): Pass address of expld.dataseg to
	lang_find_relro_sections_1.
2017-11-12 17:26:11 -08:00
H.J. Lu f4d18a5466 cl 2017-11-12 17:26:10 -08:00
H.J. Lu cba6246d3a ld: Add lang_size_relro_segment
Break lang_size_sections down into separate functions so that they can
also be used for text-only LOAD segment.  lang_size_relro_segment will
call lang_size_relro_segment_1 and lang_size_segment for both GNU_RELRO
segment and text-only LOAD segment.

	* ldlang.c (lang_size_segment): New function.
	(lang_size_relro_segment_1): Likewise.
	(lang_size_relro_segment): Likewise.
	(lang_size_sections): Rewrite to call lang_size_relro_segment.
2017-11-12 17:22:24 -08:00
H.J. Lu d7475e036f ld: Add fold_segment_align/fold_segment_relro_end/fold_segment_end
Extract DATA_SEGMENT_END/DATA_SEGMENT_ALIGN/DATA_SEGMENT_RELRO_END cases
for GNU_RELRO segment into separate functions so that they can also be
used for text-only LOAD segment.

	* ldexp.c (fold_unary): Extract the DATA_SEGMENT_END case to ...
	(fold_segment_end): New function.
	(fold_binary): Extract the DATA_SEGMENT_ALIGN case to ...
	(fold_segment_align): New function.
	(fold_binary): Extract the DATA_SEGMENT_RELRO_END case to ...
	(fold_segment_relro_end): New function.
2017-11-12 17:20:18 -08:00
H.J. Lu 0f99513f2a ld: Update phase_enum/relro_enum and add seg_align_type
Update GNU_RELRO date type so that they can also be used for text-only
LOAD segment.

	* ldexp.h (phase_enum): Rename exp_dataseg_none,
	exp_dataseg_align_seen, exp_dataseg_relro_seen,
	exp_dataseg_end_seen, exp_dataseg_relro_adjust,
	exp_dataseg_adjust and exp_dataseg_done to exp_seg_none,
	exp_seg_align_seen, exp_seg_relro_seen, exp_seg_end_seen,
	exp_seg_relro_adjust, exp_seg_adjust and exp_seg_done.
	(relro_enum): Rename exp_dataseg_relro_none,
	exp_dataseg_relro_start and exp_dataseg_relro_end to
	exp_seg_relro_none, exp_seg_relro_start and exp_seg_relro_end.
	(seg_align_type): New struct type.
	(ldexp_control): Use seg_align_type.
	* ldexp.c (fold_unary): Updated.
	(fold_binary): Likewise.
	* ldlang.c (strip_excluded_output_sections): Likewise.
	(lang_size_sections_1): Likewise.
	(lang_size_sections): Likewise.
2017-11-12 17:17:58 -08:00
H.J. Lu f882209d9a ld: Remove PF_X from PT_PHDR segment
It was reasonable to mark PT_PHDR segment with PF_X for compatibility
with UnixWare and Solaris linkers 20 years ago.  But it is inappropriate
today when the primary OS of GNU ld is Linux.  This patch removes PF_X
from PT_PHDR segment as gold does.

Tested natively on Linux/x86 as well as crosss-binutils for alpha-linux,
ia64-linux, powerpc64-linux, powerpc-linux, s390-linux, s390x-linux,
sparc64-linux and sparc-linux.

bfd/

	PR ld/22423
	* elf.c (_bfd_elf_map_sections_to_segments): Remove PF_X from
	PT_PHDR segment.

ld/

	PR ld/22423
	* testsuite/ld-alpha/tlsbin.rd: Replace "R E " with "R +" for
	PT_PHDR segment.
	* testsuite/ld-alpha/tlsbinr.rd: Likewise.
	* testsuite/ld-ia64/tlsbin.rd: Likewise.
	* testsuite/ld-powerpc/tlsexe.r: Likewise.
	* testsuite/ld-powerpc/tlsexe32.r: Likewise.
	* testsuite/ld-powerpc/tlsexetoc.r: Likewise.
	* testsuite/ld-s390/tlsbin.rd: Likewise.
	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
	* testsuite/ld-sparc/tlssunbin32.rd: Likewise.
	* testsuite/ld-sparc/tlssunbin64.rd: Likewise.
	* testsuite/ld-elf/pr22423.d: New test.
2017-11-12 17:04:03 -08:00
GDB Administrator 53892e6d23 Automatic date update in version.in 2017-11-13 00:00:24 +00:00
H.J. Lu ce3ad33357 ld: Add OTHER_PLT_SECTIONS
OTHER_PLT_SECTIONS contains sections which should be placed right after
.plt section.

	* emulparams/elf32_x86_64.sh (TINY_READONLY_SECTION): Renamed
	to ...
	(OTHER_PLT_SECTIONS): This.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_iamcu.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* scripttempl/elf.sc: Place ${OTHER_PLT_SECTIONS} just after
	.plt.
2017-11-12 07:25:36 -08:00
Alan Modra e3e53eed9c weakdef list handling
The existing code allowed common and indirect symbols to pass an
assert, but then read root.u.def which is not valid for anything
besides defined and weakdef symbols.  The garbage root.u.def.section
pointer read can't possibly match pointers stored at the same location
for indirect and common symbols, so we would always have left
u.weakdef NULL.

	* elflink.c (elf_link_add_object_symbols): Ignore anything but
	defined and defweak symbols when setting up weakdefs.
2017-11-12 17:45:24 +10:30
Alan Modra 529fe20eeb non_got_ref after adjust_dynamic_relocs
This patch was aimed at a FIXME in elf32-hppa.c, the ludicrous and
confusing fact that non_got_ref after adjust_dynamic_relocs in that
backend means precisely the inverse of what it means before
adjust_dynamic_relocs.  Before, when non_got_ref is set it means there
are dynamic relocs, after, if non_got_ref is clear it means "keep
dynamic relocs" and later, "has dynamic relocs".  There is a reason
why it was done that way..  Some symbols that may have dynamic
relocations pre-allocated in check_relocs turn out to not be dynamic,
and then are not seen by the backend adjust_dynamic_symbols.  We want
those symbols to lose their dynamic relocs when non-pic, so it's handy
that non_got_ref means the opposite after adjust_dynamic_relocs.  But
it's really confusing.

Most other targets, like ppc32, don't always set non_got_ref on
non-GOT references that have dynamic relocations.  This is because the
primary purpose of non_got_ref before adjust_dynamic_relocs is to flag
symbols that might need to be copied to .dynbss, and there are
relocation types that may require dyn_relocs but clearly cannot have
symbols copied into .dynbss, for example, TLS relocations.

Why do we need a flag after adjust_dynamic_relocs to say "keep
dynamic relocations"?  Well, you can discard most unwanted dyn_relocs
in the backend adjust_dynamic_relocs, and for those symbols that
aren't seen by the backend adjust_dynamic_relocs, in
allocate_dynrelocs based on a flag set by adjust_dynamic relocs,
dynamic_adjusted.  That doesn't solve all our difficulties though.
relocate_section needs to know whether a symbol has dyn_relocs, and
many targets transfer dyn_relocs to a weakdef if the symbol has one.
The transfer means relocate_section can't test dyn_relocs itself and
the weakdef field has been overwritten by that time.  So non_got_ref
is used to flag "this symbol has dynamic relocations" for
relocate_section.

Confused still?  Well, let's hope the comments I've added help clarify
things..  The patch also fixes a case where we might wrongly emit
dynamic relocations in an executable for common and undefined symbols.

	* elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Set non_got_ref
	to keep dyn_relocs, clear to discard.  Comment.
	(allocate_dynrelocs): Always clear non_got_ref when clearing
	dyn_relocs in non-pic case.  Invert non_got_ref test.  Also test
	dynamic_adjusted and ELF_COMMON_DEF_P.  Move code deleting
	dyn_relocs on undefined syms to handle for non-pic too.
	(elf32_hppa_relocate_section): Simplify test for non-pic dyn relocs.
	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Set non_got_ref
	to keep dyn_relocs, clear to discard.  Comment.
	(allocate_dynrelocs): Always clear non_got_ref when clearing
	dyn_relocs in non-pic case.  Invert non_got_ref test.  Also test
	dynamic_adjusted and ELF_COMMON_DEF_P.  Move code deleting
	dyn_relocs on undefined syms to handle for non-pic too.
	(ppc_elf_relocate_section): Simplify test for non-pic dyn relocs.
	* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Discard
	dyn_relocs here.  Don't bother setting non_got_ref.  Comment.
	(allocate_dynrelocs): Delete special handling of non-pic ELFv2
	ifuncs.  Move code deleting dyn_relocs on undefined symbols to
	handle for non-pic too.  Don't test non_got_ref.  Do test
	dynamic_adjusted and ELF_COMMON_DEF_P.
2017-11-12 17:45:23 +10:30
GDB Administrator d956390245 Automatic date update in version.in 2017-11-12 00:00:18 +00:00
Jim Wilson f617a0f6ce Fix riscv binutils xfail for debug_ranges test.
binutils/
	* testsuite/binutils-all/objdump.exp: Expect the debug_ranges test to
	pass.
2017-11-10 19:24:45 -08:00
GDB Administrator 9080294593 Automatic date update in version.in 2017-11-11 00:00:20 +00:00
GDB Administrator 09a5b18a6a Automatic date update in version.in 2017-11-10 00:00:28 +00:00
Pedro Alves 584a564f36 Fix racy output matching in gdb.tui/tui-completion.exp
'make check-read1 TESTS="gdb.tui/tui-completion.exp"' exposes this test race:

  (gdb) PASS: gdb.tui/completion.exp: set max-completions unlimited
  layout ^G
  asm    next   prev   regs   split  src
  (gdb) FAIL: gdb.tui/completion.exp: completion of layout names: tab completion
  Quit
  (gdb) PASS: gdb.tui/completion.exp: completion of layout names: quit command input
  focus ^G
  cmd   next  prev  src
  (gdb) FAIL: gdb.tui/completion.exp: completion of focus command: tab completion
  Quit

This is caused by expecting "$gdb_prompt layout $".
gdb_test_multiple's internal prompt regexp can match first if expect's
internal buffer is filled with partial output.  Fix that by splitting
the gdb_test_multiple in question in two.  Since the same problem/code
appears twice in the file, factor out a common procedure.

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

	* gdb.tui/tui-completion.exp (test_tab_completion): New procedure,
	factored out from ...
	(top level): ... here, and adjusted to avoid expecting beyond the
	prompt in a single gdb_test_multiple.
2017-11-09 22:47:16 +00:00
Pedro Alves 5ed7a928ac Fix racy output matching in gdb.base/multi-attach.exp, gdb.server/ext-{attach, restart, ext-run}.exp
This commit fixes this same problem in several places:

  (gdb) PASS: gdb.multi/multi-attach.exp: backtrace 2
  kill
  Kill the program being debugged? (y or n) y
  (gdb) FAIL: gdb.multi/multi-attach.exp: kill inferior 2 (got interactive prompt)

This is just another case of the gdb_test_multiple's internal "got
interactive prompt" pattern matching because the testcase misses
matching enough.

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

	* gdb.multi/multi-attach.exp ("kill" test): Match the whole query
	output.
	* gdb.server/ext-attach.exp ("kill" test): Likewise.
	* gdb.server/ext-restart.exp ("kill" test): Likewise.
	* gdb.server/ext-run.exp ("kill" test): Likewise.
	* gdb.server/ext-wrapper.exp ("kill" test): Likewise.
2017-11-09 22:46:44 +00:00
Pedro Alves a60e07381c Fix racy output matching in gdb.base/cpcompletion.exp
With:

 $ make check-read1 TESTS="gdb.cp/cpcompletion.exp"

we get (from gdb.log):

 (gdb) complete break Foo::
 break Foo::Foo()
 break Foo::Foofoo()
 break Foo::get_foo()
 break Foo::set_foo(int)
 break Foo::~Foo()
 (gdb) FAIL: gdb.cp/cpcompletion.exp: complete class methods (Foo not found)

The problem is that the
  "break ${class}::\[A-Za-z0-9_~\]+"
regexp patches partial input, like:
  break Foo::F
  break Foo::Fo
  break Foo::Foo
etc.

Fix that by expecting each whole line.

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

	* gdb.cp/cpcompletion.exp (test_class_complete): Tighten regex to
	match till end of line.
2017-11-09 22:46:06 +00:00
Pedro Alves 2c88253fc4 Fix racy output matching in gdb.base/memattr.exp
Testing with:
 $ make check-read1 TESTS="gdb.base/memattr.exp"


Exposes a testcase bug that can result in racy fails:

  info mem
  Using user-defined memory regions.
  Num Enb Low Addr           High Addr          Attrs
  1   y   0x0000000000601060 0x0000000000601160 wo nocache
  2   y   0x0000000000601180 0x0000000000601280 ro nocache
  4   y   0x0000000000601280 0x0000000000601380 rw nocache
  3   y   0x0000000000601380 0x0000000000601480 rw nocache
  5   y   0x0000000000601480 0x0000000000601580 rw nocache
  (gdb) FAIL: gdb.base/memattr.exp: info mem (1)

The problem is that:

  "Attrs\[^\n\r]*.."

matches:

  "Attrs \r"

when the output buffer is filled with partial output like this:

  "info mem\r\nUsing user-defined memory regions.\r\nNum Enb Low Addr           High Addr          Attrs \r"

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

	* gdb.base/memattr.exp: Tighten regexes to match the end line.
2017-11-09 22:45:39 +00:00
Pedro Alves c7a3851716 Fix racy output matching in gdb.base/completion.exp
Testing with:
 $ make check-read1 TESTS="gdb.base/completion.exp"

Exposes a testcase bug that can result in racy fails:

  FAIL: gdb.base/completion.exp: command-name completion limiting using tab character
  ERROR: Undefined command "".
  FAIL: gdb.base/completion.exp: symbol-name completion limiting using tab character
  FAIL: gdb.base/completion.exp: symbol-name completion limiting using complete command

testsuite/gdb.log shows:

  (gdb) PASS: gdb.base/completion.exp: set max-completions 5
  p^G
  passcount     path          print         print-object  printf
  *** List may be truncated, max-completions reached. ***
  (gdb) FAIL: gdb.base/completion.exp: command-name completion limiting using tab character
  pcomplete p
  Undefined command: "pcomplete".  Try "help".
  (gdb) ERROR: Undefined command "".

The problem is that the expect buffer can get filled with partial
output that ends in the gdb prompt, and so the default FAIL inside
gdb_test_multiple matches.

Fix that by splitting the gdb_test_multiple in two stages.  Since that
is done in more than one place in the testcase, move the otherwise
duplicate code to helper procedures.

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

	* gdb.base/completion.exp (ignore_and_resync, test_tab_complete):
	New procedures, factored out from ...
	(top level): ... here, and adjusted to avoid expecting beyond the
	prompt in one go.
2017-11-09 22:45:06 +00:00
Pedro Alves f29f4b6ba1 Fix racy output matching in gdb.asm/asm-source.exp
Testing with:
 $ make check-read1 TESTS="gdb.asm/asm-source.exp"

Exposes a testcase bug that can result in racy fails:

 (gdb) PASS: gdb.asm/asm-source.exp: next over foo3
 return
 Make selected stack frame return now? (y or n) y
 n
 #0  main () at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.asm/asmsrc1.s:53
 53              gdbasm_exit0
 (gdb) FAIL: gdb.asm/asm-source.exp: return from foo2 (got interactive prompt)
 n

The problem is that the "return now\?.*" regex can match partial
output like this:

 "Make selected stack frame return no"

and then we send the 'y' too early, and then the next time around we
hit gdb_test_multiple's internal "got interactive prompt" regex.

Also, note we match "return no" instead of "return now" because the
regex is missing one quote level.

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

	* gdb.asm/asm-source.exp ("kill" test): Match the whole query
	output.  Fix '?' match.
2017-11-09 22:44:08 +00:00
H.J. Lu fb24d531e9 ld: Reformat emultempl/elf32.em
Reformat emultempl/elf32.em to generate consistent codes.

	* emultempl/elf32.em (gld${EMULATION_NAME}_get_script): Reformat
	to generate consistent codes.
2017-11-09 14:38:37 -08:00