Commit Graph

45 Commits

Author SHA1 Message Date
Andrew Burgess 49a4ce2eae gdb: Remove hard-coded line number from test
Removes the use of a hard-coded line number from a test.

gdb/testsuite/ChangeLog:

	* gdb.linespec/ls-errs.exp (do_test): Update comment, use line
	number from variable rather than hard-coded.
2017-10-19 20:50:42 +01:00
Pedro Alves c45ec17c07 A smarter linespec completer
Continuing the theme of the explicit locations patch, this patch gets
rid of the need for quoting function names in linespec TAB completion.
To recap, when you have overloads in your program, and you want to set
a breakpoint in one of them:

 void function(int);  // set breakpoint here.
 void function(long);

 (gdb) b function(i[TAB]
 <all the symbols in the program that start with "i" are uselessly shown...>

This patch gets rid of the need for quoting by switching the linespec
completer to use the custom completion word point mechanism added in
the previous explicit location patch (extending it as needed), to
correctly determine the right completion word point.  In the case
above, we want the completer to figure out that it's completing a
function name that starts with "function(i", and it now does.

We also want the completer to know when it's potentially completing a
source file name, for:

(gdb) break source.[TAB] -> source.c:
(gdb) break source.c:  # Type line number or function name now

And we want it to know to complete label names, which it doesn't today:

(gdb) break function:lab[TAB]

etc., etc.

So what we want is for completion to grok the input string as closely
to how the linespec parser groks it.

With that in mind, the solution suggests itself - make the linespec
completer use the same parsing code as normal linespec parsing.

That's what the patch does.  The old completer is replaced by one that
reuses the actual linespec parser as much as possible.  This (ideally)
eliminate differences between what completion understands and actually
setting breakpoints understands by design.

The completer now offers sensible completion candidates depending on
which component of the linespec is being completed, source filename,
function, line number, expression, and (a new addition), labels.  For
example, when completing the function part, we now show the full name
of the method as completion candidates, instead of showing whatever
comes after what readline considered the word break character:

 (gdb) break klass::method[TAB]
 klass:method1(int)
 klass:method2()

If input is past the function, then we now offer keyword condidates:

  (gdb) b function(int) [TAB]
  if      task    thread

If input is past a keyword, we offer expression completion, which is
different from linespec completion:

  (gdb) b main if 1 + glo[TAB]
  global

(e.g., completes on types, struct data fields, etc.)

As mentioned, this teaches the linespec completer about completing
label symbols too:

  (gdb) b source.c:function:lab[TAB]

A nice convenience is that when completion uniquely matches a source
name, gdb adds the ":" automatically for you:

  (gdb) b filenam[TAB]
  (gdb) b filename.c:  # ':' auto-added, cursor right after it.

It's the little details.  :-)

I worked on this patch in parallel with writing the (big) testcase
added closer to the end of the series, which exercises many many
tricky cases around quoting and whitespace insertion placement.  In
general, I think it now all Just Works.

gdb/ChangeLog:
2017-07-17  Pedro Alves  <palves@redhat.com>

	* completer.c (complete_source_filenames): New function.
	(complete_address_and_linespec_locations): New function.
	(location_completer): Use complete_address_and_linespec_locations.
	(completion_tracker::build_completion_result): Honor the tracker's
	request to suppress append.
	* completer.h (completion_tracker::suppress_append_ws)
	(completion_tracker::set_suppress_append_ws): New methods.
	(completion_tracker::m_suppress_append_ws): New field.
	(complete_source_filenames): New declaration.
	* linespec.c (linespec_complete_what): New.
	(struct ls_parser) <complete_what, completion_word,
	completion_quote_char, completion_quote_end, completion_tracker>:
	New fields.
	(string_find_incomplete_keyword_at_end): New.
	(linespec_lexer_lex_string): Record quote char.  If in completion
	mode, don't throw.
	(linespec_lexer_consume_token): Advance the completion word point.
	(linespec_lexer_peek_token): Save/restore completion info.
	(save_stream_and_consume_token): New.
	(set_completion_after_number): New.
	(linespec_parse_basic): Set what to complete next depending on
	token.  Handle function and label completions specially.
	(parse_linespec): Disable objc shortcut in completion mode.  Set
	what to complete next depending on token type.  Skip keyword if in
	completion mode.
	(complete_linespec_component, linespec_complete): New.
	* linespec.h (linespec_complete): Declare.

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

	* gdb.base/completion.exp: Adjust expected output.
	* gdb.linespec/ls-errs.exp: Don't send tab characters, now that
	the completer works.
2017-07-17 20:29:37 +01:00
Pedro Alves c6756f62e0 Rewrite/enhance explicit locations completer, parse left->right
One of the most annoying (to me) things about GDB's completion is when
you have overloads in your program, and you want to set a breakpoint
in one of them:

 void function(int);  // set breakpoint here.
 void function(long);

 (gdb) b -f func[TAB]
 (gdb) b -f function(       # ok, gdb completed as much as possible.
 (gdb) b -f function([TAB]  # show me the overloads, please.
 <_all_ symbols in the program are shown...>

E.g., when debugging GDB, that'd be:

 (gdb) b -f function([TAB]
 (anonymous namespace)::get_global()::global  pt_insn_get_offset@plt                       scm_new_port_table_entry
 asprintf                                     pt_pkt_alloc_decoder                         scm_new_port_table_entry@plt
 asprintf@plt                                 pt_pkt_alloc_decoder@plt                     scm_out_of_range
 bt_ctf_get_char_array                        pt_pkt_sync_forward                          scm_out_of_range@plt
 bt_ctf_get_char_array@plt                    pt_pkt_sync_forward@plt                      scm_putc
 bt_ctf_get_uint64                            pwrite                                       scm_putc@plt
 bt_ctf_get_uint64@plt                        pwrite@plt                                   scm_reverse_x
 bt_ctf_iter_read_event                       PyErr_Restore                                scm_reverse_x@plt
 bt_ctf_iter_read_event@plt                   PyErr_Restore@plt                            scm_set_port_filename_x
 <snip...>

Now that's a load of completely useless completions.

The reason GDB offers those is that the completer relies on readline
figuring out the completion word point in the input line based on the
language's word break characters, which include "(".  So readline
tells the completer to complete on "", the string that is after '('.
Likewise, if you type "function(i[TAB]" to try to complete to "int",
you're out of luck.  GDB shows you all the symbols in the program that
start with "i"...  This makes sense for the expression completer, as
what you'd want to type is e.g., a global variable, say:

(gdb) print function(i[TAB]

but, it makes no sense when specifying a function name for a
breakpoint location.

To get around that limitation, users need to quote the function name,
like:

 (gdb) b -f 'function([TAB]
 function(int)      function(long)
 (gdb) b 'function(i[TAB]
 (gdb) b 'function(int)' # now completes correctly!

Note that the quoting is only necessary for completion.  Creating the
breakpoint does not require the quoting:

 (gdb) b -f function(int) [RET]
 Breakpoint 1 at ....

This patch removes this limitation.

(
Actually, it's a necessary patch, though not sufficient.  That'll
start working correctly by the end of the series.  With this patch, if try it,
you'll see:

 (gdb) b -f function(i[TAB]
 (gdb) b -f function

i.e., gdb strips everything after the "(".  That's caused by some code
in symtab.c that'll be eliminated further down the series.  These
patches are all unfortunately interrelated, which is also the reason
new tests only appear much later in the series.
But let's ignore that reality for the remainder of the description.
)

So... this patch gets rid of the need for quoting.

It does that by adding a way for a completer to control the exact
completion word point that readline should start the completion
request for, instead of letting readline try to figure it out using
the current language's word break chars array, and often failing.

In the case above, we want the completer to figure out that it's
completing a function name that starts with "function(i".  It now
does.

It took me a while to figure out a way to ask readline to "use this
exact word point", and for a while I feared that it'd be impossible
with current readline (and having to rely on master readline for core
functionality is something I'd like to avoid very much).  Eventually,
after several different attempts, I came up with what is described in
the comment above gdb_custom_word_point_brkchars in the patch.

With this patch, the handle_brkchars phase of the explicit location
completer advances the expected word point as it parses the input line
left to right, until it figures out exactly what we're completing,
instead of expecting readline to break the string using the word break
characters, and then having the completer heuristically fix up a bad
decision by parsing the input string backwards.  This allows correctly
knowning that we're completing a symbol name after -function, complete
functions without quoting, etc.

Later, we'll make use of this same mechanims to implement a proper
linespec completer that avoids need for quoting too.

gdb/ChangeLog:
2017-07-17  Pedro Alves  <palves@redhat.com>

	* ada-lang.c (ada_collect_symbol_completion_matches): Add
	complete_symbol_mode parameter.
	* cli/cli-cmds.c (complete_command): Get the completion result out
	of the handle_brkchars tracker if used a custom word point.
	* completer.c: Include "linespec.h".
	(enum explicit_location_match_type) <MATCH_LINE>: New enumerator.
	(advance_to_expression_complete_word_point): New.
	(completion_tracker::completes_to_completion_word): New.
	(complete_files_symbols): Pass down
	complete_symbol_mode::EXPRESSION.
	(explicit_options, probe_options): New.
	(collect_explicit_location_matches): Complete on the
	explictit_loc->foo instead of word.  Use
	linespec_complete_function.  Handle MATCH_LINE.  Handle offering
	keyword and options completions.
	(backup_text_ptr): Delete.
	(skip_keyword): New.
	(complete_explicit_location): Remove 'word' parameter.  Add
	language, quoted_arg_start and quoted_arg_end parameters.
	Rewrite, parsing left to right.
	(location_completer): Rewrite.
	(location_completer_handle_brkchars): New function.
	(symbol_completer): Pass down complete_symbol_mode::EXPRESSION.
	(enum complete_line_internal_reason): Adjust comments.
	(completion_tracker::discard_completions): New.
	(completer_handle_brkchars_func_for_completer): Handle
	location_completer.
	(gdb_custom_word_point_brkchars)
	(gdb_org_rl_basic_quote_characters): New.
	(gdb_completion_word_break_characters_throw)
	(completion_find_completion_word): Handle trackers that use a
	custom word point.
	(completion_tracker::advance_custom_word_point_by): New.
	(completion_tracker::build_completion_result): Don't rely on
	readline appending the quote char.
	(gdb_rl_attempted_completion_function_throw): Handle trackers that
	use a custom word point.
	(gdb_rl_attempted_completion_function): Restore
	rl_basic_quote_characters.
	* completer.h (class completion_tracker): Extend intro comment.
	(completion_tracker::set_quote_char)
	(completion_tracker::quote_char)
	(completion_tracker::set_use_custom_word_point)
	(completion_tracker::use_custom_word_point)
	(completion_tracker::custom_word_point)
	(completion_tracker::set_custom_word_point)
	(completion_tracker::advance_custom_word_point_by)
	(completion_tracker::completes_to_completion_word)
	(completion_tracker::discard_completions): New methods.
	(completion_tracker::m_quote_char)
	(completion_tracker::m_use_custom_word_point)
	(completion_tracker::m_custom_word_point): New fields.
	(advance_to_expression_complete_word_point): Declare.
	* f-lang.c (f_collect_symbol_completion_matches): Add
	complete_symbol_mode parameter.
	* language.h (struct language_defn)
	<la_collect_symbol_completion_matches>: Add complete_symbol_mode
	parameter.
	* linespec.c (linespec_keywords): Add NULL terminator.  Make extern.
	(linespec_complete_function): New function.
	(linespec_lexer_lex_keyword): Adjust.
	* linespec.h (linespec_keywords, linespec_complete_function): New
	declarations.
	* location.c (find_end_quote): New function.
	(explicit_location_lex_one): Add explicit_completion_info
	parameter.  Save quoting info.  Don't throw if being called for
	completion.  Don't handle Ada operators here.
	(is_cp_operator, skip_op_false_positives, first_of)
	(explicit_location_lex_one_function): New function.
	(string_to_explicit_location): Replace 'dont_throw' parameter with
	an explicit_completion_info pointer parameter.  Handle it.  Don't
	use explicit_location_lex_one to lex function names.  Use
	explicit_location_lex_one_function instead.
	* location.h (struct explicit_completion_info): New.
	(string_to_explicit_location): Replace 'dont_throw' parameter with
	an explicit_completion_info pointer parameter.
	* symtab.c (default_collect_symbol_completion_matches_break_on):
	Add complete_symbol_mode parameter.  Handle LINESPEC mode.
	(default_collect_symbol_completion_matches)
	(collect_symbol_completion_matches): Add complete_symbol_mode
	parameter.
	(collect_symbol_completion_matches_type): Pass down
	complete_symbol_mode::EXPRESSION.
	(collect_file_symbol_completion_matches): Add complete_symbol_mode
	parameter.  Handle LINESPEC mode.
	* symtab.h (complete_symbol_mode): New.
	(default_collect_symbol_completion_matches_break_on)
	(default_collect_symbol_completion_matches)
	(collect_symbol_completion_matches)
	(collect_file_symbol_completion_matches): Add complete_symbol_mode
	parameter.

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

	* gdb.linespec/ls-errs.exp (do_test): Adjust expected output.
2017-07-17 20:21:33 +01:00
Pedro Alves 8f14146e13 Fix gdb.base/completion.exp with --target_board=dwarf4-gdb-index
This is the same patch as posted at
<https://sourceware.org/ml/gdb-patches/2017-02/msg00644.html>, with
the test at
<https://sourceware.org/ml/gdb-patches/2017-02/msg00687.html> squashed
in.

This patch fixes:

 -FAIL: gdb.base/completion.exp: tab complete break break.c:ma (timeout)
 -FAIL: gdb.base/completion.exp: complete break break.c:ma
 +PASS: gdb.base/completion.exp: tab complete break break.c:ma
 +PASS: gdb.base/completion.exp: delete breakpoint for tab complete break break.c:ma
 +PASS: gdb.base/completion.exp: complete break break.c:ma

When run with --target_board=dwarf4-gdb-index.

The issue here is that make_file_symbol_completion_list_1, used when
completing a symbol restricted to a given source file, uses
lookup_symtab to look up the symtab with the given name, and search
for matching symbols inside.  This assumes that there's only one
symtab for the given source file.  This is an incorrect assumption
with (for example) -fdebug-types-section, where we'll have an extra
extra symtab containing the types.  lookup_symtab finds that symtab,
and inside that symtab there are no functions...

gdb/ChangeLog:
2017-07-14  Pedro Alves  <palves@redhat.com>

	* symtab.c (make_file_symbol_completion_list_1): Iterate over
	symtabs matching all symtabs with SRCFILE as file name instead of
	only considering the first hit, with lookup_symtab.

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

	* gdb.linespec/base/one/thefile.cc (z1): New function.
	* gdb.linespec/base/two/thefile.cc (z2): New function.
	* gdb.linespec/linespec.exp: Add tests.
2017-07-14 16:50:35 +01:00
Luis Machado bf5f525c89 Fix gdb.linespec/explicit.exp
This patch addresses timeout failures i noticed while testing aarch64-elf.

FAIL: gdb.linespec/explicit.exp: complete unique function name (timeout)
FAIL: gdb.linespec/explicit.exp: complete non-unique function name (timeout)
FAIL: gdb.linespec/explicit.exp: complete non-existant function name (timeout)
FAIL: gdb.linespec/explicit.exp: complete unique file name (timeout)
FAIL: gdb.linespec/explicit.exp: complete non-unique file name (timeout)

The timeouts were caused by an attempt to match a bell character (x07) that
doesn't show up on my particular test setup.

The bell character is output whenever one tries to complete a pattern and there
are multiple possible matches. When there is only one possible match, GDB will
complete the input pattern without outputting the bell character.

The reason for the discrepancy in this test's behavior is due to the use of
"main" for a unique name test.

On glibc-based systems, GDB may notice the "main_arena" symbol, which is
a data global part of glibc's malloc implementation. Therefore a bell character
will be output because we have a couple possible completion matches.

GDB should not be outputting such a data symbol as a possible match, but this
problem may/will be addressed in a future change and is besides the point of
this particular change.

On systems that are not based on glibc, GDB will not see any other possible
matches for completing "main", so there will be no bell characters.

The use of main is a bit fragile though, so the patch adds a new local function
with a name that has a greater chance of being unique and adjusts the test to
iuse it.

I've also added the regular expression switch (-re) to all the
gdb_test_multiple calls that were missing it. Hopefully this will reduce the
chances of someone wasting time trying to match a regular expression (a much
more common use case) when, in reality, the pattern is supposed to be matched
literally.

gdb/testsuite/ChangeLog

2017-02-13  Luis Machado  <lgustavo@codesourcery.com>

	* gdb.linespec/explicit.c (my_unique_function_name): New function.
	(main): Call my_unique_function_name.
	* gdb.linespec/explicit.exp: Use my_unique_function_name to test
	completion of patterns with a single match.
	Add missing -re switches to gdb_test_multiple calls.
2017-02-13 07:16:34 -06:00
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00
Luis Machado 5b362f04b2 Fix more cases of improper test names
I noticed more occurrences of improper test names. The rather mechanical,
tedious and large patch below addresses, hopefully, most of the leftover cases.

As usual, another pair of eyes is welcome to check if missed something or did
an invalid substitution.

This patch also fixes the prepare_for_testing calls to pass proper test names.

gdb/testsuite/ChangeLog:

2016-12-23  Luis Machado  <lgustavo@codesourcery.com>

	Fix test names for the following files:

	* gdb.ada/exec_changed.exp
	* gdb.ada/info_types.exp
	* gdb.arch/aarch64-atomic-inst.exp
	* gdb.arch/aarch64-fp.exp
	* gdb.arch/altivec-abi.exp
	* gdb.arch/altivec-regs.exp
	* gdb.arch/amd64-byte.exp
	* gdb.arch/amd64-disp-step.exp
	* gdb.arch/amd64-dword.exp
	* gdb.arch/amd64-entry-value-inline.exp
	* gdb.arch/amd64-entry-value-param.exp
	* gdb.arch/amd64-entry-value-paramref.exp
	* gdb.arch/amd64-entry-value.exp
	* gdb.arch/amd64-i386-address.exp
	* gdb.arch/amd64-invalid-stack-middle.exp
	* gdb.arch/amd64-invalid-stack-top.exp
	* gdb.arch/amd64-optimout-repeat.exp
	* gdb.arch/amd64-prologue-skip.exp
	* gdb.arch/amd64-prologue-xmm.exp
	* gdb.arch/amd64-stap-special-operands.exp
	* gdb.arch/amd64-stap-wrong-subexp.exp
	* gdb.arch/amd64-tailcall-cxx.exp
	* gdb.arch/amd64-tailcall-noret.exp
	* gdb.arch/amd64-tailcall-ret.exp
	* gdb.arch/amd64-tailcall-self.exp
	* gdb.arch/amd64-word.exp
	* gdb.arch/arm-bl-branch-dest.exp
	* gdb.arch/arm-disp-step.exp
	* gdb.arch/arm-neon.exp
	* gdb.arch/arm-single-step-kernel-helper.exp
	* gdb.arch/avr-flash-qualifier.exp
	* gdb.arch/disp-step-insn-reloc.exp
	* gdb.arch/e500-abi.exp
	* gdb.arch/e500-regs.exp
	* gdb.arch/ftrace-insn-reloc.exp
	* gdb.arch/i386-avx512.exp
	* gdb.arch/i386-bp_permanent.exp
	* gdb.arch/i386-byte.exp
	* gdb.arch/i386-cfi-notcurrent.exp
	* gdb.arch/i386-disp-step.exp
	* gdb.arch/i386-dr3-watch.exp
	* gdb.arch/i386-float.exp
	* gdb.arch/i386-gnu-cfi.exp
	* gdb.arch/i386-mpx-map.exp
	* gdb.arch/i386-mpx-sigsegv.exp
	* gdb.arch/i386-mpx-simple_segv.exp
	* gdb.arch/i386-mpx.exp
	* gdb.arch/i386-permbkpt.exp
	* gdb.arch/i386-prologue.exp
	* gdb.arch/i386-signal.exp
	* gdb.arch/i386-size-overlap.exp
	* gdb.arch/i386-unwind.exp
	* gdb.arch/i386-word.exp
	* gdb.arch/mips-fcr.exp
	* gdb.arch/powerpc-d128-regs.exp
	* gdb.arch/powerpc-stackless.exp
	* gdb.arch/ppc64-atomic-inst.exp
	* gdb.arch/s390-stackless.exp
	* gdb.arch/s390-tdbregs.exp
	* gdb.arch/s390-vregs.exp
	* gdb.arch/sparc-sysstep.exp
	* gdb.arch/thumb-bx-pc.exp
	* gdb.arch/thumb-singlestep.exp
	* gdb.arch/thumb2-it.exp
	* gdb.arch/vsx-regs.exp
	* gdb.asm/asm-source.exp
	* gdb.base/a2-run.exp
	* gdb.base/advance.exp
	* gdb.base/all-bin.exp
	* gdb.base/anon.exp
	* gdb.base/args.exp
	* gdb.base/arithmet.exp
	* gdb.base/async-shell.exp
	* gdb.base/async.exp
	* gdb.base/attach-pie-noexec.exp
	* gdb.base/attach-twice.exp
	* gdb.base/auto-load.exp
	* gdb.base/bang.exp
	* gdb.base/bitfields.exp
	* gdb.base/break-always.exp
	* gdb.base/break-caller-line.exp
	* gdb.base/break-entry.exp
	* gdb.base/break-inline.exp
	* gdb.base/break-on-linker-gcd-function.exp
	* gdb.base/break-probes.exp
	* gdb.base/break.exp
	* gdb.base/breakpoint-shadow.exp
	* gdb.base/call-ar-st.exp
	* gdb.base/call-sc.exp
	* gdb.base/call-signal-resume.exp
	* gdb.base/call-strs.exp
	* gdb.base/callfuncs.exp
	* gdb.base/catch-fork-static.exp
	* gdb.base/catch-gdb-caused-signals.exp
	* gdb.base/catch-load.exp
	* gdb.base/catch-signal-fork.exp
	* gdb.base/catch-signal.exp
	* gdb.base/catch-syscall.exp
	* gdb.base/charset.exp
	* gdb.base/checkpoint.exp
	* gdb.base/chng-syms.exp
	* gdb.base/code-expr.exp
	* gdb.base/code_elim.exp
	* gdb.base/commands.exp
	* gdb.base/completion.exp
	* gdb.base/complex.exp
	* gdb.base/cond-expr.exp
	* gdb.base/condbreak.exp
	* gdb.base/consecutive.exp
	* gdb.base/continue-all-already-running.exp
	* gdb.base/coredump-filter.exp
	* gdb.base/corefile.exp
	* gdb.base/dbx.exp
	* gdb.base/debug-expr.exp
	* gdb.base/define.exp
	* gdb.base/del.exp
	* gdb.base/disabled-location.exp
	* gdb.base/disasm-end-cu.exp
	* gdb.base/disasm-optim.exp
	* gdb.base/display.exp
	* gdb.base/duplicate-bp.exp
	* gdb.base/ena-dis-br.exp
	* gdb.base/ending-run.exp
	* gdb.base/enumval.exp
	* gdb.base/environ.exp
	* gdb.base/eu-strip-infcall.exp
	* gdb.base/eval-avoid-side-effects.exp
	* gdb.base/eval-skip.exp
	* gdb.base/exitsignal.exp
	* gdb.base/expand-psymtabs.exp
	* gdb.base/filesym.exp
	* gdb.base/find-unmapped.exp
	* gdb.base/finish.exp
	* gdb.base/float.exp
	* gdb.base/foll-exec-mode.exp
	* gdb.base/foll-exec.exp
	* gdb.base/foll-fork.exp
	* gdb.base/fortran-sym-case.exp
	* gdb.base/freebpcmd.exp
	* gdb.base/func-ptr.exp
	* gdb.base/func-ptrs.exp
	* gdb.base/funcargs.exp
	* gdb.base/gcore-buffer-overflow.exp
	* gdb.base/gcore-relro-pie.exp
	* gdb.base/gcore-relro.exp
	* gdb.base/gcore.exp
	* gdb.base/gdb1090.exp
	* gdb.base/gdb11530.exp
	* gdb.base/gdb11531.exp
	* gdb.base/gdb1821.exp
	* gdb.base/gdbindex-stabs.exp
	* gdb.base/gdbvars.exp
	* gdb.base/hbreak.exp
	* gdb.base/hbreak2.exp
	* gdb.base/included.exp
	* gdb.base/infcall-input.exp
	* gdb.base/inferior-died.exp
	* gdb.base/infnan.exp
	* gdb.base/info-macros.exp
	* gdb.base/info-os.exp
	* gdb.base/info-proc.exp
	* gdb.base/info-shared.exp
	* gdb.base/info-target.exp
	* gdb.base/infoline.exp
	* gdb.base/interp.exp
	* gdb.base/interrupt.exp
	* gdb.base/jit-reader.exp
	* gdb.base/jit-simple.exp
	* gdb.base/kill-after-signal.exp
	* gdb.base/kill-detach-inferiors-cmd.exp
	* gdb.base/label.exp
	* gdb.base/langs.exp
	* gdb.base/ldbl_e308.exp
	* gdb.base/line-symtabs.exp
	* gdb.base/linespecs.exp
	* gdb.base/list.exp
	* gdb.base/long_long.exp
	* gdb.base/longest-types.exp
	* gdb.base/maint.exp
	* gdb.base/max-value-size.exp
	* gdb.base/memattr.exp
	* gdb.base/mips_pro.exp
	* gdb.base/morestack.exp
	* gdb.base/moribund-step.exp
	* gdb.base/multi-forks.exp
	* gdb.base/nested-addr.exp
	* gdb.base/nextoverexit.exp
	* gdb.base/noreturn-finish.exp
	* gdb.base/noreturn-return.exp
	* gdb.base/nostdlib.exp
	* gdb.base/offsets.exp
	* gdb.base/opaque.exp
	* gdb.base/pc-fp.exp
	* gdb.base/permissions.exp
	* gdb.base/print-symbol-loading.exp
	* gdb.base/prologue-include.exp
	* gdb.base/psymtab.exp
	* gdb.base/ptype.exp
	* gdb.base/random-signal.exp
	* gdb.base/randomize.exp
	* gdb.base/range-stepping.exp
	* gdb.base/readline-ask.exp
	* gdb.base/recpar.exp
	* gdb.base/recurse.exp
	* gdb.base/relational.exp
	* gdb.base/restore.exp
	* gdb.base/return-nodebug.exp
	* gdb.base/return.exp
	* gdb.base/run-after-attach.exp
	* gdb.base/save-bp.exp
	* gdb.base/scope.exp
	* gdb.base/sect-cmd.exp
	* gdb.base/set-lang-auto.exp
	* gdb.base/set-noassign.exp
	* gdb.base/setvar.exp
	* gdb.base/sigall.exp
	* gdb.base/sigbpt.exp
	* gdb.base/siginfo-addr.exp
	* gdb.base/siginfo-infcall.exp
	* gdb.base/siginfo-obj.exp
	* gdb.base/siginfo.exp
	* gdb.base/signals-state-child.exp
	* gdb.base/signest.exp
	* gdb.base/sigstep.exp
	* gdb.base/sizeof.exp
	* gdb.base/skip.exp
	* gdb.base/solib-corrupted.exp
	* gdb.base/solib-nodir.exp
	* gdb.base/solib-search.exp
	* gdb.base/stack-checking.exp
	* gdb.base/stale-infcall.exp
	* gdb.base/stap-probe.exp
	* gdb.base/start.exp
	* gdb.base/step-break.exp
	* gdb.base/step-bt.exp
	* gdb.base/step-line.exp
	* gdb.base/step-over-exit.exp
	* gdb.base/step-over-syscall.exp
	* gdb.base/step-resume-infcall.exp
	* gdb.base/step-test.exp
	* gdb.base/store.exp
	* gdb.base/structs3.exp
	* gdb.base/sym-file.exp
	* gdb.base/symbol-without-target_section.exp
	* gdb.base/term.exp
	* gdb.base/testenv.exp
	* gdb.base/ui-redirect.exp
	* gdb.base/until.exp
	* gdb.base/unwindonsignal.exp
	* gdb.base/value-double-free.exp
	* gdb.base/vla-datatypes.exp
	* gdb.base/vla-ptr.exp
	* gdb.base/vla-sideeffect.exp
	* gdb.base/volatile.exp
	* gdb.base/watch-cond-infcall.exp
	* gdb.base/watch-cond.exp
	* gdb.base/watch-non-mem.exp
	* gdb.base/watch-read.exp
	* gdb.base/watch-vfork.exp
	* gdb.base/watchpoint-cond-gone.exp
	* gdb.base/watchpoint-delete.exp
	* gdb.base/watchpoint-hw-hit-once.exp
	* gdb.base/watchpoint-hw.exp
	* gdb.base/watchpoint-stops-at-right-insn.exp
	* gdb.base/watchpoints.exp
	* gdb.base/wchar.exp
	* gdb.base/whatis-exp.exp
	* gdb.btrace/buffer-size.exp
	* gdb.btrace/data.exp
	* gdb.btrace/delta.exp
	* gdb.btrace/dlopen.exp
	* gdb.btrace/enable.exp
	* gdb.btrace/exception.exp
	* gdb.btrace/function_call_history.exp
	* gdb.btrace/gcore.exp
	* gdb.btrace/instruction_history.exp
	* gdb.btrace/nohist.exp
	* gdb.btrace/reconnect.exp
	* gdb.btrace/record_goto-step.exp
	* gdb.btrace/record_goto.exp
	* gdb.btrace/rn-dl-bind.exp
	* gdb.btrace/segv.exp
	* gdb.btrace/step.exp
	* gdb.btrace/stepi.exp
	* gdb.btrace/tailcall-only.exp
	* gdb.btrace/tailcall.exp
	* gdb.btrace/tsx.exp
	* gdb.btrace/unknown_functions.exp
	* gdb.btrace/vdso.exp
	* gdb.compile/compile-ifunc.exp
	* gdb.compile/compile-ops.exp
	* gdb.compile/compile-print.exp
	* gdb.compile/compile-setjmp.exp
	* gdb.cp/abstract-origin.exp
	* gdb.cp/ambiguous.exp
	* gdb.cp/annota2.exp
	* gdb.cp/annota3.exp
	* gdb.cp/anon-ns.exp
	* gdb.cp/anon-struct.exp
	* gdb.cp/anon-union.exp
	* gdb.cp/arg-reference.exp
	* gdb.cp/baseenum.exp
	* gdb.cp/bool.exp
	* gdb.cp/breakpoint.exp
	* gdb.cp/bs15503.exp
	* gdb.cp/call-c.exp
	* gdb.cp/casts.exp
	* gdb.cp/chained-calls.exp
	* gdb.cp/class2.exp
	* gdb.cp/classes.exp
	* gdb.cp/cmpd-minsyms.exp
	* gdb.cp/converts.exp
	* gdb.cp/cp-relocate.exp
	* gdb.cp/cpcompletion.exp
	* gdb.cp/cpexprs.exp
	* gdb.cp/cplabel.exp
	* gdb.cp/cplusfuncs.exp
	* gdb.cp/cpsizeof.exp
	* gdb.cp/ctti.exp
	* gdb.cp/derivation.exp
	* gdb.cp/destrprint.exp
	* gdb.cp/dispcxx.exp
	* gdb.cp/enum-class.exp
	* gdb.cp/exception.exp
	* gdb.cp/exceptprint.exp
	* gdb.cp/expand-psymtabs-cxx.exp
	* gdb.cp/expand-sals.exp
	* gdb.cp/extern-c.exp
	* gdb.cp/filename.exp
	* gdb.cp/formatted-ref.exp
	* gdb.cp/fpointer.exp
	* gdb.cp/gdb1355.exp
	* gdb.cp/gdb2495.exp
	* gdb.cp/hang.exp
	* gdb.cp/impl-this.exp
	* gdb.cp/infcall-dlopen.exp
	* gdb.cp/inherit.exp
	* gdb.cp/iostream.exp
	* gdb.cp/koenig.exp
	* gdb.cp/local.exp
	* gdb.cp/m-data.exp
	* gdb.cp/m-static.exp
	* gdb.cp/mb-ctor.exp
	* gdb.cp/mb-inline.exp
	* gdb.cp/mb-templates.exp
	* gdb.cp/member-name.exp
	* gdb.cp/member-ptr.exp
	* gdb.cp/meth-typedefs.exp
	* gdb.cp/method.exp
	* gdb.cp/method2.exp
	* gdb.cp/minsym-fallback.exp
	* gdb.cp/misc.exp
	* gdb.cp/namelessclass.exp
	* gdb.cp/namespace-enum.exp
	* gdb.cp/namespace-nested-import.exp
	* gdb.cp/namespace.exp
	* gdb.cp/nextoverthrow.exp
	* gdb.cp/no-dmgl-verbose.exp
	* gdb.cp/non-trivial-retval.exp
	* gdb.cp/noparam.exp
	* gdb.cp/nsdecl.exp
	* gdb.cp/nsimport.exp
	* gdb.cp/nsnested.exp
	* gdb.cp/nsnoimports.exp
	* gdb.cp/nsrecurs.exp
	* gdb.cp/nsstress.exp
	* gdb.cp/nsusing.exp
	* gdb.cp/operator.exp
	* gdb.cp/oranking.exp
	* gdb.cp/overload-const.exp
	* gdb.cp/overload.exp
	* gdb.cp/ovldbreak.exp
	* gdb.cp/ovsrch.exp
	* gdb.cp/paren-type.exp
	* gdb.cp/parse-lang.exp
	* gdb.cp/pass-by-ref.exp
	* gdb.cp/pr-1023.exp
	* gdb.cp/pr-1210.exp
	* gdb.cp/pr-574.exp
	* gdb.cp/pr10687.exp
	* gdb.cp/pr12028.exp
	* gdb.cp/pr17132.exp
	* gdb.cp/pr17494.exp
	* gdb.cp/pr9067.exp
	* gdb.cp/pr9167.exp
	* gdb.cp/pr9631.exp
	* gdb.cp/printmethod.exp
	* gdb.cp/psmang.exp
	* gdb.cp/psymtab-parameter.exp
	* gdb.cp/ptype-cv-cp.exp
	* gdb.cp/ptype-flags.exp
	* gdb.cp/re-set-overloaded.exp
	* gdb.cp/ref-types.exp
	* gdb.cp/rtti.exp
	* gdb.cp/scope-err.exp
	* gdb.cp/shadow.exp
	* gdb.cp/smartp.exp
	* gdb.cp/static-method.exp
	* gdb.cp/static-print-quit.exp
	* gdb.cp/temargs.exp
	* gdb.cp/templates.exp
	* gdb.cp/try_catch.exp
	* gdb.cp/typedef-operator.exp
	* gdb.cp/typeid.exp
	* gdb.cp/userdef.exp
	* gdb.cp/using-crash.exp
	* gdb.cp/var-tag.exp
	* gdb.cp/virtbase.exp
	* gdb.cp/virtfunc.exp
	* gdb.cp/virtfunc2.exp
	* gdb.cp/vla-cxx.exp
	* gdb.disasm/t01_mov.exp
	* gdb.disasm/t02_mova.exp
	* gdb.disasm/t03_add.exp
	* gdb.disasm/t04_sub.exp
	* gdb.disasm/t05_cmp.exp
	* gdb.disasm/t06_ari2.exp
	* gdb.disasm/t07_ari3.exp
	* gdb.disasm/t08_or.exp
	* gdb.disasm/t09_xor.exp
	* gdb.disasm/t10_and.exp
	* gdb.disasm/t11_logs.exp
	* gdb.disasm/t12_bit.exp
	* gdb.disasm/t13_otr.exp
	* gdb.dlang/circular.exp
	* gdb.dwarf2/arr-stride.exp
	* gdb.dwarf2/arr-subrange.exp
	* gdb.dwarf2/atomic-type.exp
	* gdb.dwarf2/bad-regnum.exp
	* gdb.dwarf2/bitfield-parent-optimized-out.exp
	* gdb.dwarf2/callframecfa.exp
	* gdb.dwarf2/clztest.exp
	* gdb.dwarf2/corrupt.exp
	* gdb.dwarf2/data-loc.exp
	* gdb.dwarf2/dup-psym.exp
	* gdb.dwarf2/dw2-anon-mptr.exp
	* gdb.dwarf2/dw2-anonymous-func.exp
	* gdb.dwarf2/dw2-bad-mips-linkage-name.exp
	* gdb.dwarf2/dw2-bad-unresolved.exp
	* gdb.dwarf2/dw2-basic.exp
	* gdb.dwarf2/dw2-canonicalize-type.exp
	* gdb.dwarf2/dw2-case-insensitive.exp
	* gdb.dwarf2/dw2-common-block.exp
	* gdb.dwarf2/dw2-compdir-oldgcc.exp
	* gdb.dwarf2/dw2-compressed.exp
	* gdb.dwarf2/dw2-const.exp
	* gdb.dwarf2/dw2-cp-infcall-ref-static.exp
	* gdb.dwarf2/dw2-cu-size.exp
	* gdb.dwarf2/dw2-dup-frame.exp
	* gdb.dwarf2/dw2-entry-value.exp
	* gdb.dwarf2/dw2-icycle.exp
	* gdb.dwarf2/dw2-ifort-parameter.exp
	* gdb.dwarf2/dw2-inline-break.exp
	* gdb.dwarf2/dw2-inline-param.exp
	* gdb.dwarf2/dw2-intercu.exp
	* gdb.dwarf2/dw2-intermix.exp
	* gdb.dwarf2/dw2-lexical-block-bare.exp
	* gdb.dwarf2/dw2-linkage-name-trust.exp
	* gdb.dwarf2/dw2-minsym-in-cu.exp
	* gdb.dwarf2/dw2-noloc.exp
	* gdb.dwarf2/dw2-op-call.exp
	* gdb.dwarf2/dw2-op-out-param.exp
	* gdb.dwarf2/dw2-opt-structptr.exp
	* gdb.dwarf2/dw2-param-error.exp
	* gdb.dwarf2/dw2-producer.exp
	* gdb.dwarf2/dw2-ranges-base.exp
	* gdb.dwarf2/dw2-ref-missing-frame.exp
	* gdb.dwarf2/dw2-reg-undefined.exp
	* gdb.dwarf2/dw2-regno-invalid.exp
	* gdb.dwarf2/dw2-restore.exp
	* gdb.dwarf2/dw2-restrict.exp
	* gdb.dwarf2/dw2-single-line-discriminators.exp
	* gdb.dwarf2/dw2-strp.exp
	* gdb.dwarf2/dw2-undefined-ret-addr.exp
	* gdb.dwarf2/dw2-unresolved.exp
	* gdb.dwarf2/dw2-var-zero-addr.exp
	* gdb.dwarf2/dw4-sig-types.exp
	* gdb.dwarf2/dwz.exp
	* gdb.dwarf2/dynarr-ptr.exp
	* gdb.dwarf2/enum-type.exp
	* gdb.dwarf2/gdb-index.exp
	* gdb.dwarf2/implptr-64bit.exp
	* gdb.dwarf2/implptr-optimized-out.exp
	* gdb.dwarf2/implptr.exp
	* gdb.dwarf2/implref-array.exp
	* gdb.dwarf2/implref-const.exp
	* gdb.dwarf2/implref-global.exp
	* gdb.dwarf2/implref-struct.exp
	* gdb.dwarf2/mac-fileno.exp
	* gdb.dwarf2/main-subprogram.exp
	* gdb.dwarf2/member-ptr-forwardref.exp
	* gdb.dwarf2/method-ptr.exp
	* gdb.dwarf2/missing-sig-type.exp
	* gdb.dwarf2/nonvar-access.exp
	* gdb.dwarf2/opaque-type-lookup.exp
	* gdb.dwarf2/pieces-optimized-out.exp
	* gdb.dwarf2/pieces.exp
	* gdb.dwarf2/pr10770.exp
	* gdb.dwarf2/pr13961.exp
	* gdb.dwarf2/staticvirtual.exp
	* gdb.dwarf2/subrange.exp
	* gdb.dwarf2/symtab-producer.exp
	* gdb.dwarf2/trace-crash.exp
	* gdb.dwarf2/typeddwarf.exp
	* gdb.dwarf2/valop.exp
	* gdb.dwarf2/watch-notconst.exp
	* gdb.fortran/array-element.exp
	* gdb.fortran/charset.exp
	* gdb.fortran/common-block.exp
	* gdb.fortran/complex.exp
	* gdb.fortran/derived-type-function.exp
	* gdb.fortran/derived-type.exp
	* gdb.fortran/logical.exp
	* gdb.fortran/module.exp
	* gdb.fortran/multi-dim.exp
	* gdb.fortran/nested-funcs.exp
	* gdb.fortran/print-formatted.exp
	* gdb.fortran/subarray.exp
	* gdb.fortran/vla-alloc-assoc.exp
	* gdb.fortran/vla-datatypes.exp
	* gdb.fortran/vla-history.exp
	* gdb.fortran/vla-ptr-info.exp
	* gdb.fortran/vla-ptype-sub.exp
	* gdb.fortran/vla-ptype.exp
	* gdb.fortran/vla-sizeof.exp
	* gdb.fortran/vla-type.exp
	* gdb.fortran/vla-value-sub-arbitrary.exp
	* gdb.fortran/vla-value-sub-finish.exp
	* gdb.fortran/vla-value-sub.exp
	* gdb.fortran/vla-value.exp
	* gdb.fortran/whatis_type.exp
	* gdb.go/chan.exp
	* gdb.go/handcall.exp
	* gdb.go/hello.exp
	* gdb.go/integers.exp
	* gdb.go/methods.exp
	* gdb.go/package.exp
	* gdb.go/strings.exp
	* gdb.go/types.exp
	* gdb.go/unsafe.exp
	* gdb.guile/scm-arch.exp
	* gdb.guile/scm-block.exp
	* gdb.guile/scm-breakpoint.exp
	* gdb.guile/scm-cmd.exp
	* gdb.guile/scm-disasm.exp
	* gdb.guile/scm-equal.exp
	* gdb.guile/scm-frame-args.exp
	* gdb.guile/scm-frame-inline.exp
	* gdb.guile/scm-frame.exp
	* gdb.guile/scm-iterator.exp
	* gdb.guile/scm-math.exp
	* gdb.guile/scm-objfile.exp
	* gdb.guile/scm-ports.exp
	* gdb.guile/scm-symbol.exp
	* gdb.guile/scm-symtab.exp
	* gdb.guile/scm-value-cc.exp
	* gdb.guile/types-module.exp
	* gdb.linespec/break-ask.exp
	* gdb.linespec/cpexplicit.exp
	* gdb.linespec/explicit.exp
	* gdb.linespec/keywords.exp
	* gdb.linespec/linespec.exp
	* gdb.linespec/ls-dollar.exp
	* gdb.linespec/ls-errs.exp
	* gdb.linespec/skip-two.exp
	* gdb.linespec/thread.exp
	* gdb.mi/mi-async.exp
	* gdb.mi/mi-basics.exp
	* gdb.mi/mi-break.exp
	* gdb.mi/mi-catch-load.exp
	* gdb.mi/mi-cli.exp
	* gdb.mi/mi-cmd-param-changed.exp
	* gdb.mi/mi-console.exp
	* gdb.mi/mi-detach.exp
	* gdb.mi/mi-disassemble.exp
	* gdb.mi/mi-eval.exp
	* gdb.mi/mi-file-transfer.exp
	* gdb.mi/mi-file.exp
	* gdb.mi/mi-fill-memory.exp
	* gdb.mi/mi-inheritance-syntax-error.exp
	* gdb.mi/mi-linespec-err-cp.exp
	* gdb.mi/mi-logging.exp
	* gdb.mi/mi-memory-changed.exp
	* gdb.mi/mi-read-memory.exp
	* gdb.mi/mi-record-changed.exp
	* gdb.mi/mi-reg-undefined.exp
	* gdb.mi/mi-regs.exp
	* gdb.mi/mi-return.exp
	* gdb.mi/mi-reverse.exp
	* gdb.mi/mi-simplerun.exp
	* gdb.mi/mi-solib.exp
	* gdb.mi/mi-stack.exp
	* gdb.mi/mi-stepi.exp
	* gdb.mi/mi-syn-frame.exp
	* gdb.mi/mi-until.exp
	* gdb.mi/mi-var-block.exp
	* gdb.mi/mi-var-child.exp
	* gdb.mi/mi-var-cmd.exp
	* gdb.mi/mi-var-cp.exp
	* gdb.mi/mi-var-display.exp
	* gdb.mi/mi-var-invalidate.exp
	* gdb.mi/mi-var-list-children-invalid-grandchild.exp
	* gdb.mi/mi-vla-fortran.exp
	* gdb.mi/mi-watch.exp
	* gdb.mi/mi2-var-child.exp
	* gdb.mi/user-selected-context-sync.exp
	* gdb.modula2/unbounded-array.exp
	* gdb.multi/dummy-frame-restore.exp
	* gdb.multi/multi-arch-exec.exp
	* gdb.multi/multi-arch.exp
	* gdb.multi/tids.exp
	* gdb.multi/watchpoint-multi.exp
	* gdb.opencl/callfuncs.exp
	* gdb.opencl/convs_casts.exp
	* gdb.opencl/datatypes.exp
	* gdb.opencl/operators.exp
	* gdb.opencl/vec_comps.exp
	* gdb.opt/clobbered-registers-O2.exp
	* gdb.opt/inline-break.exp
	* gdb.opt/inline-bt.exp
	* gdb.opt/inline-cmds.exp
	* gdb.opt/inline-locals.exp
	* gdb.pascal/case-insensitive-symbols.exp
	* gdb.pascal/floats.exp
	* gdb.pascal/gdb11492.exp
	* gdb.python/lib-types.exp
	* gdb.python/py-arch.exp
	* gdb.python/py-as-string.exp
	* gdb.python/py-bad-printers.exp
	* gdb.python/py-block.exp
	* gdb.python/py-breakpoint-create-fail.exp
	* gdb.python/py-breakpoint.exp
	* gdb.python/py-caller-is.exp
	* gdb.python/py-cmd.exp
	* gdb.python/py-explore-cc.exp
	* gdb.python/py-explore.exp
	* gdb.python/py-finish-breakpoint.exp
	* gdb.python/py-finish-breakpoint2.exp
	* gdb.python/py-frame-args.exp
	* gdb.python/py-frame-inline.exp
	* gdb.python/py-frame.exp
	* gdb.python/py-framefilter-mi.exp
	* gdb.python/py-infthread.exp
	* gdb.python/py-lazy-string.exp
	* gdb.python/py-linetable.exp
	* gdb.python/py-mi-events.exp
	* gdb.python/py-mi-objfile.exp
	* gdb.python/py-mi.exp
	* gdb.python/py-objfile.exp
	* gdb.python/py-pp-integral.exp
	* gdb.python/py-pp-maint.exp
	* gdb.python/py-pp-re-notag.exp
	* gdb.python/py-pp-registration.exp
	* gdb.python/py-recurse-unwind.exp
	* gdb.python/py-strfns.exp
	* gdb.python/py-symbol.exp
	* gdb.python/py-symtab.exp
	* gdb.python/py-sync-interp.exp
	* gdb.python/py-typeprint.exp
	* gdb.python/py-unwind-maint.exp
	* gdb.python/py-unwind.exp
	* gdb.python/py-value-cc.exp
	* gdb.python/py-xmethods.exp
	* gdb.reverse/amd64-tailcall-reverse.exp
	* gdb.reverse/break-precsave.exp
	* gdb.reverse/break-reverse.exp
	* gdb.reverse/consecutive-precsave.exp
	* gdb.reverse/consecutive-reverse.exp
	* gdb.reverse/finish-precsave.exp
	* gdb.reverse/finish-reverse-bkpt.exp
	* gdb.reverse/finish-reverse.exp
	* gdb.reverse/fstatat-reverse.exp
	* gdb.reverse/getresuid-reverse.exp
	* gdb.reverse/i386-precsave.exp
	* gdb.reverse/i386-reverse.exp
	* gdb.reverse/i386-sse-reverse.exp
	* gdb.reverse/i387-env-reverse.exp
	* gdb.reverse/i387-stack-reverse.exp
	* gdb.reverse/insn-reverse.exp
	* gdb.reverse/machinestate-precsave.exp
	* gdb.reverse/machinestate.exp
	* gdb.reverse/next-reverse-bkpt-over-sr.exp
	* gdb.reverse/pipe-reverse.exp
	* gdb.reverse/readv-reverse.exp
	* gdb.reverse/recvmsg-reverse.exp
	* gdb.reverse/rerun-prec.exp
	* gdb.reverse/s390-mvcle.exp
	* gdb.reverse/step-precsave.exp
	* gdb.reverse/step-reverse.exp
	* gdb.reverse/time-reverse.exp
	* gdb.reverse/until-precsave.exp
	* gdb.reverse/until-reverse.exp
	* gdb.reverse/waitpid-reverse.exp
	* gdb.reverse/watch-precsave.exp
	* gdb.reverse/watch-reverse.exp
	* gdb.rust/generics.exp
	* gdb.rust/methods.exp
	* gdb.rust/modules.exp
	* gdb.rust/simple.exp
	* gdb.server/connect-with-no-symbol-file.exp
	* gdb.server/ext-attach.exp
	* gdb.server/ext-restart.exp
	* gdb.server/ext-wrapper.exp
	* gdb.server/file-transfer.exp
	* gdb.server/server-exec-info.exp
	* gdb.server/server-kill.exp
	* gdb.server/server-mon.exp
	* gdb.server/wrapper.exp
	* gdb.stabs/exclfwd.exp
	* gdb.stabs/gdb11479.exp
	* gdb.threads/clone-new-thread-event.exp
	* gdb.threads/corethreads.exp
	* gdb.threads/current-lwp-dead.exp
	* gdb.threads/dlopen-libpthread.exp
	* gdb.threads/gcore-thread.exp
	* gdb.threads/sigstep-threads.exp
	* gdb.threads/watchpoint-fork.exp
	* gdb.trace/actions-changed.exp
	* gdb.trace/backtrace.exp
	* gdb.trace/change-loc.exp
	* gdb.trace/circ.exp
	* gdb.trace/collection.exp
	* gdb.trace/disconnected-tracing.exp
	* gdb.trace/ftrace.exp
	* gdb.trace/mi-trace-frame-collected.exp
	* gdb.trace/mi-trace-unavailable.exp
	* gdb.trace/mi-traceframe-changed.exp
	* gdb.trace/mi-tsv-changed.exp
	* gdb.trace/no-attach-trace.exp
	* gdb.trace/passc-dyn.exp
	* gdb.trace/qtro.exp
	* gdb.trace/range-stepping.exp
	* gdb.trace/read-memory.exp
	* gdb.trace/save-trace.exp
	* gdb.trace/signal.exp
	* gdb.trace/status-stop.exp
	* gdb.trace/tfile.exp
	* gdb.trace/trace-break.exp
	* gdb.trace/trace-buffer-size.exp
	* gdb.trace/trace-condition.exp
	* gdb.trace/tracefile-pseudo-reg.exp
	* gdb.trace/tstatus.exp
	* gdb.trace/unavailable.exp
	* gdb.trace/while-dyn.exp
	* gdb.trace/while-stepping.exp
2016-12-23 10:52:18 -06:00
Luis Machado 84c93cd5f1 Fixup testcases outputting own name as a test name and standardize failed compilation messages
Changes in v3:

- Adjusted some testcases where the message "failed to compile" was not unique.

Changes in v2:

- Addressed comments from reviewers.
- Fixed spurious whitespaces.
- Changed compilation failure messages that included source/binary paths to
  ones that are short and deterministic.

---

Another bit of cleanup to the testsuite. We have a number of tests that are
not honoring the rule of not outputting their own name as a test name.

I fixed up all the offenders i could find with the following regular
expression:

"(xfail|kfail|kpass|fail|pass|unsupported|untested) ([A-Za-z0-9]+|\\\$(.)*testfile(.)*)\.exp$"

gdb/testsuite/ChangeLog:
2016-12-01  Luis Machado  <lgustavo@codesourcery.com>

	Fix test names and standardize compilation error messages throughout
	the following files:

	* gdb.ada/start.exp
	* gdb.arch/alpha-step.exp
	* gdb.arch/e500-prologue.exp
	* gdb.arch/ftrace-insn-reloc.exp
	* gdb.arch/gdb1291.exp
	* gdb.arch/gdb1431.exp
	* gdb.arch/gdb1558.exp
	* gdb.arch/i386-dr3-watch.exp
	* gdb.arch/i386-sse-stack-align.exp
	* gdb.arch/ia64-breakpoint-shadow.exp
	* gdb.arch/pa-nullify.exp
	* gdb.arch/powerpc-aix-prologue.exp
	* gdb.arch/thumb-bx-pc.exp
	* gdb.base/annota1.exp
	* gdb.base/annota3.exp
	* gdb.base/arrayidx.exp
	* gdb.base/assign.exp
	* gdb.base/attach.exp
	* gdb.base/auxv.exp
	* gdb.base/bang.exp
	* gdb.base/bfp-test.exp
	* gdb.base/bigcore.exp
	* gdb.base/bitfields2.exp
	* gdb.base/break-fun-addr.exp
	* gdb.base/break-probes.exp
	* gdb.base/call-rt-st.exp
	* gdb.base/callexit.exp
	* gdb.base/catch-fork-kill.exp
	* gdb.base/charset.exp
	* gdb.base/checkpoint.exp
	* gdb.base/comprdebug.exp
	* gdb.base/constvars.exp
	* gdb.base/coredump-filter.exp
	* gdb.base/cursal.exp
	* gdb.base/cvexpr.exp
	* gdb.base/detach.exp
	* gdb.base/display.exp
	* gdb.base/dmsym.exp
	* gdb.base/dprintf-pending.exp
	* gdb.base/dso2dso.exp
	* gdb.base/dtrace-probe.exp
	* gdb.base/dump.exp
	* gdb.base/enum_cond.exp
	* gdb.base/exe-lock.exp
	* gdb.base/exec-invalid-sysroot.exp
	* gdb.base/execl-update-breakpoints.exp
	* gdb.base/exprs.exp
	* gdb.base/fileio.exp
	* gdb.base/find.exp
	* gdb.base/finish.exp
	* gdb.base/fixsection.exp
	* gdb.base/foll-vfork.exp
	* gdb.base/frame-args.exp
	* gdb.base/gcore.exp
	* gdb.base/gdb1250.exp
	* gdb.base/global-var-nested-by-dso.exp
	* gdb.base/gnu-ifunc.exp
	* gdb.base/hashline1.exp
	* gdb.base/hashline2.exp
	* gdb.base/hashline3.exp
	* gdb.base/hbreak-in-shr-unsupported.exp
	* gdb.base/huge.exp
	* gdb.base/infcall-input.exp
	* gdb.base/info-fun.exp
	* gdb.base/info-shared.exp
	* gdb.base/jit-simple.exp
	* gdb.base/jit-so.exp
	* gdb.base/jit.exp
	* gdb.base/jump.exp
	* gdb.base/label.exp
	* gdb.base/lineinc.exp
	* gdb.base/logical.exp
	* gdb.base/longjmp.exp
	* gdb.base/macscp.exp
	* gdb.base/miscexprs.exp
	* gdb.base/new-ui-echo.exp
	* gdb.base/new-ui-pending-input.exp
	* gdb.base/new-ui.exp
	* gdb.base/nodebug.exp
	* gdb.base/nofield.exp
	* gdb.base/offsets.exp
	* gdb.base/overlays.exp
	* gdb.base/pending.exp
	* gdb.base/pointers.exp
	* gdb.base/pr11022.exp
	* gdb.base/printcmds.exp
	* gdb.base/prologue.exp
	* gdb.base/ptr-typedef.exp
	* gdb.base/realname-expand.exp
	* gdb.base/relativedebug.exp
	* gdb.base/relocate.exp
	* gdb.base/remote.exp
	* gdb.base/reread.exp
	* gdb.base/return2.exp
	* gdb.base/savedregs.exp
	* gdb.base/sep.exp
	* gdb.base/sepdebug.exp
	* gdb.base/sepsymtab.exp
	* gdb.base/set-inferior-tty.exp
	* gdb.base/setshow.exp
	* gdb.base/shlib-call.exp
	* gdb.base/sigaltstack.exp
	* gdb.base/siginfo-addr.exp
	* gdb.base/signals.exp
	* gdb.base/signull.exp
	* gdb.base/sigrepeat.exp
	* gdb.base/so-impl-ld.exp
	* gdb.base/solib-display.exp
	* gdb.base/solib-overlap.exp
	* gdb.base/solib-search.exp
	* gdb.base/solib-symbol.exp
	* gdb.base/structs.exp
	* gdb.base/structs2.exp
	* gdb.base/symtab-search-order.exp
	* gdb.base/twice.exp
	* gdb.base/unload.exp
	* gdb.base/varargs.exp
	* gdb.base/watchpoint-solib.exp
	* gdb.base/watchpoint.exp
	* gdb.base/whatis.exp
	* gdb.base/wrong_frame_bt_full.exp
	* gdb.btrace/dlopen.exp
	* gdb.cell/ea-standalone.exp
	* gdb.cell/ea-test.exp
	* gdb.cp/dispcxx.exp
	* gdb.cp/gdb2384.exp
	* gdb.cp/method2.exp
	* gdb.cp/nextoverthrow.exp
	* gdb.cp/pr10728.exp
	* gdb.disasm/am33.exp
	* gdb.disasm/h8300s.exp
	* gdb.disasm/mn10300.exp
	* gdb.disasm/sh3.exp
	* gdb.dwarf2/dw2-dir-file-name.exp
	* gdb.fortran/complex.exp
	* gdb.fortran/library-module.exp
	* gdb.guile/scm-pretty-print.exp
	* gdb.guile/scm-symbol.exp
	* gdb.guile/scm-type.exp
	* gdb.guile/scm-value.exp
	* gdb.linespec/linespec.exp
	* gdb.mi/gdb701.exp
	* gdb.mi/gdb792.exp
	* gdb.mi/mi-breakpoint-changed.exp
	* gdb.mi/mi-dprintf-pending.exp
	* gdb.mi/mi-dprintf.exp
	* gdb.mi/mi-exit-code.exp
	* gdb.mi/mi-pending.exp
	* gdb.mi/mi-solib.exp
	* gdb.mi/new-ui-mi-sync.exp
	* gdb.mi/pr11022.exp
	* gdb.mi/user-selected-context-sync.exp
	* gdb.opt/solib-intra-step.exp
	* gdb.python/py-events.exp
	* gdb.python/py-finish-breakpoint.exp
	* gdb.python/py-mi.exp
	* gdb.python/py-prettyprint.exp
	* gdb.python/py-shared.exp
	* gdb.python/py-symbol.exp
	* gdb.python/py-template.exp
	* gdb.python/py-type.exp
	* gdb.python/py-value.exp
	* gdb.reverse/solib-precsave.exp
	* gdb.reverse/solib-reverse.exp
	* gdb.server/solib-list.exp
	* gdb.stabs/weird.exp
	* gdb.threads/reconnect-signal.exp
	* gdb.threads/stepi-random-signal.exp
	* gdb.trace/actions.exp
	* gdb.trace/ax.exp
	* gdb.trace/backtrace.exp
	* gdb.trace/change-loc.exp
	* gdb.trace/deltrace.exp
	* gdb.trace/ftrace-lock.exp
	* gdb.trace/ftrace.exp
	* gdb.trace/infotrace.exp
	* gdb.trace/mi-tracepoint-changed.exp
	* gdb.trace/packetlen.exp
	* gdb.trace/passcount.exp
	* gdb.trace/pending.exp
	* gdb.trace/range-stepping.exp
	* gdb.trace/report.exp
	* gdb.trace/stap-trace.exp
	* gdb.trace/tfind.exp
	* gdb.trace/trace-break.exp
	* gdb.trace/trace-condition.exp
	* gdb.trace/trace-enable-disable.exp
	* gdb.trace/trace-mt.exp
	* gdb.trace/tracecmd.exp
	* gdb.trace/tspeed.exp
	* gdb.trace/tsv.exp
	* lib/perftest.exp
2016-12-01 14:47:50 -06:00
Luis Machado bc6c7af4a2 Fix test names starting with uppercase output by basic functions
The following patch is based on the previous patch i sent and handles cases of
test names that start with an uppercase letter. Test names should start with
lowercase unless it starts with the name of a technology, architecture, ISA
etc.

This first patch addresses cases of test names output explicitly via xfail,
kfail, kpass, fail, pass, unsupported, untested and also names set with the
pattern "set test" and "set testname".

gdb/testsuite/ChangeLog:
2016-12-01  Luis Machado  <lgustavo@codesourcery.com>

	Fix test names starting with uppercase throughout all the files below.

	* gdb.ada/array_return.exp
	* gdb.ada/catch_ex.exp
	* gdb.ada/info_exc.exp
	* gdb.ada/mi_catch_ex.exp
	* gdb.ada/mi_dyn_arr.exp
	* gdb.ada/mi_ex_cond.exp
	* gdb.ada/mi_exc_info.exp
	* gdb.ada/mi_interface.exp
	* gdb.ada/mi_task_arg.exp
	* gdb.ada/mi_task_info.exp
	* gdb.ada/mi_var_array.exp
	* gdb.arch/alpha-step.exp
	* gdb.arch/amd64-disp-step.exp
	* gdb.arch/arm-disp-step.exp
	* gdb.arch/disp-step-insn-reloc.exp
	* gdb.arch/e500-prologue.exp
	* gdb.arch/ftrace-insn-reloc.exp
	* gdb.arch/gdb1558.exp
	* gdb.arch/i386-bp_permanent.exp
	* gdb.arch/i386-disp-step.exp
	* gdb.arch/i386-float.exp
	* gdb.arch/i386-gnu-cfi.exp
	* gdb.arch/ia64-breakpoint-shadow.exp
	* gdb.arch/mips16-thunks.exp
	* gdb.arch/pa-nullify.exp
	* gdb.arch/powerpc-aix-prologue.exp
	* gdb.arch/powerpc-power.exp
	* gdb.arch/ppc-dfp.exp
	* gdb.arch/s390-tdbregs.exp
	* gdb.arch/spu-info.exp
	* gdb.arch/spu-ls.exp
	* gdb.arch/thumb-bx-pc.exp
	* gdb.base/advance.exp
	* gdb.base/annota-input-while-running.exp
	* gdb.base/arrayidx.exp
	* gdb.base/asmlabel.exp
	* gdb.base/async.exp
	* gdb.base/attach-wait-input.exp
	* gdb.base/auto-connect-native-target.exp
	* gdb.base/batch-preserve-term-settings.exp
	* gdb.base/bfp-test.exp
	* gdb.base/bigcore.exp
	* gdb.base/bp-permanent.exp
	* gdb.base/break-always.exp
	* gdb.base/break-fun-addr.exp
	* gdb.base/break-idempotent.exp
	* gdb.base/break-main-file-remove-fail.exp
	* gdb.base/break-probes.exp
	* gdb.base/break-unload-file.exp
	* gdb.base/break.exp
	* gdb.base/call-ar-st.exp
	* gdb.base/call-rt-st.exp
	* gdb.base/call-sc.exp
	* gdb.base/call-signal-resume.exp
	* gdb.base/call-strs.exp
	* gdb.base/callexit.exp
	* gdb.base/callfuncs.exp
	* gdb.base/catch-gdb-caused-signals.exp
	* gdb.base/catch-signal-siginfo-cond.exp
	* gdb.base/catch-syscall.exp
	* gdb.base/compare-sections.exp
	* gdb.base/cond-eval-mode.exp
	* gdb.base/condbreak-call-false.exp
	* gdb.base/consecutive-step-over.exp
	* gdb.base/cursal.exp
	* gdb.base/disabled-location.exp
	* gdb.base/disasm-end-cu.exp
	* gdb.base/display.exp
	* gdb.base/double-prompt-target-event-error.exp
	* gdb.base/dprintf-bp-same-addr.exp
	* gdb.base/dprintf-detach.exp
	* gdb.base/dprintf-next.exp
	* gdb.base/dprintf-non-stop.exp
	* gdb.base/dprintf-pending.exp
	* gdb.base/dso2dso.exp
	* gdb.base/ending-run.exp
	* gdb.base/enum_cond.exp
	* gdb.base/examine-backward.exp
	* gdb.base/exe-lock.exp
	* gdb.base/exec-invalid-sysroot.exp
	* gdb.base/execl-update-breakpoints.exp
	* gdb.base/execution-termios.exp
	* gdb.base/fileio.exp
	* gdb.base/fixsection.exp
	* gdb.base/foll-exec-mode.exp
	* gdb.base/foll-exec.exp
	* gdb.base/fork-running-state.exp
	* gdb.base/frame-args.exp
	* gdb.base/fullpath-expand.exp
	* gdb.base/func-ptr.exp
	* gdb.base/gcore-relro-pie.exp
	* gdb.base/gdb1090.exp
	* gdb.base/gdb1555.exp
	* gdb.base/global-var-nested-by-dso.exp
	* gdb.base/gnu-ifunc.exp
	* gdb.base/hbreak-in-shr-unsupported.exp
	* gdb.base/hbreak-unmapped.exp
	* gdb.base/hook-stop.exp
	* gdb.base/infcall-input.exp
	* gdb.base/info-fun.exp
	* gdb.base/info-shared.exp
	* gdb.base/interrupt-noterm.exp
	* gdb.base/jit-so.exp
	* gdb.base/jit.exp
	* gdb.base/line-symtabs.exp
	* gdb.base/list.exp
	* gdb.base/longjmp.exp
	* gdb.base/macscp.exp
	* gdb.base/max-value-size.exp
	* gdb.base/nodebug.exp
	* gdb.base/nofield.exp
	* gdb.base/overlays.exp
	* gdb.base/paginate-after-ctrl-c-running.exp
	* gdb.base/paginate-bg-execution.exp
	* gdb.base/paginate-inferior-exit.exp
	* gdb.base/pending.exp
	* gdb.base/pr11022.exp
	* gdb.base/printcmds.exp
	* gdb.base/ptr-typedef.exp
	* gdb.base/ptype.exp
	* gdb.base/randomize.exp
	* gdb.base/range-stepping.exp
	* gdb.base/realname-expand.exp
	* gdb.base/relativedebug.exp
	* gdb.base/remote.exp
	* gdb.base/savedregs.exp
	* gdb.base/sepdebug.exp
	* gdb.base/set-noassign.exp
	* gdb.base/shlib-call.exp
	* gdb.base/shreloc.exp
	* gdb.base/sigaltstack.exp
	* gdb.base/sigbpt.exp
	* gdb.base/siginfo-addr.exp
	* gdb.base/siginfo-obj.exp
	* gdb.base/siginfo-thread.exp
	* gdb.base/signest.exp
	* gdb.base/signull.exp
	* gdb.base/sigrepeat.exp
	* gdb.base/skip.exp
	* gdb.base/so-impl-ld.exp
	* gdb.base/solib-corrupted.exp
	* gdb.base/solib-disc.exp
	* gdb.base/solib-display.exp
	* gdb.base/solib-overlap.exp
	* gdb.base/solib-search.exp
	* gdb.base/solib-symbol.exp
	* gdb.base/source-execution.exp
	* gdb.base/sss-bp-on-user-bp-2.exp
	* gdb.base/sss-bp-on-user-bp.exp
	* gdb.base/stack-checking.exp
	* gdb.base/stale-infcall.exp
	* gdb.base/step-break.exp
	* gdb.base/step-line.exp
	* gdb.base/step-over-exit.exp
	* gdb.base/step-test.exp
	* gdb.base/structs.exp
	* gdb.base/sym-file.exp
	* gdb.base/symtab-search-order.exp
	* gdb.base/term.exp
	* gdb.base/type-opaque.exp
	* gdb.base/unload.exp
	* gdb.base/until-nodebug.exp
	* gdb.base/until.exp
	* gdb.base/unwindonsignal.exp
	* gdb.base/watch-cond.exp
	* gdb.base/watch-non-mem.exp
	* gdb.base/watch_thread_num.exp
	* gdb.base/watchpoint-reuse-slot.exp
	* gdb.base/watchpoint-solib.exp
	* gdb.base/watchpoint.exp
	* gdb.btrace/dlopen.exp
	* gdb.cell/arch.exp
	* gdb.cell/break.exp
	* gdb.cell/bt.exp
	* gdb.cell/core.exp
	* gdb.cell/data.exp
	* gdb.cell/dwarfaddr.exp
	* gdb.cell/ea-cache.exp
	* gdb.cell/ea-standalone.exp
	* gdb.cell/ea-test.exp
	* gdb.cell/f-regs.exp
	* gdb.cell/fork.exp
	* gdb.cell/gcore.exp
	* gdb.cell/mem-access.exp
	* gdb.cell/ptype.exp
	* gdb.cell/registers.exp
	* gdb.cell/sizeof.exp
	* gdb.cell/solib-symbol.exp
	* gdb.cell/solib.exp
	* gdb.compile/compile-tls.exp
	* gdb.cp/exception.exp
	* gdb.cp/gdb2495.exp
	* gdb.cp/local.exp
	* gdb.cp/mb-inline.exp
	* gdb.cp/mb-templates.exp
	* gdb.cp/pr10687.exp
	* gdb.cp/pr9167.exp
	* gdb.cp/scope-err.exp
	* gdb.cp/templates.exp
	* gdb.cp/virtfunc.exp
	* gdb.dwarf2/dw2-dir-file-name.exp
	* gdb.dwarf2/dw2-single-line-discriminators.exp
	* gdb.fortran/complex.exp
	* gdb.fortran/library-module.exp
	* gdb.guile/guile.exp
	* gdb.guile/scm-cmd.exp
	* gdb.guile/scm-frame-inline.exp
	* gdb.guile/scm-objfile.exp
	* gdb.guile/scm-pretty-print.exp
	* gdb.guile/scm-symbol.exp
	* gdb.guile/scm-type.exp
	* gdb.guile/scm-value.exp
	* gdb.linespec/keywords.exp
	* gdb.linespec/ls-errs.exp
	* gdb.linespec/macro-relative.exp
	* gdb.linespec/thread.exp
	* gdb.mi/mi-breakpoint-changed.exp
	* gdb.mi/mi-dprintf-pending.exp
	* gdb.mi/mi-fullname-deleted.exp
	* gdb.mi/mi-logging.exp
	* gdb.mi/mi-pending.exp
	* gdb.mi/mi-solib.exp
	* gdb.mi/new-ui-mi-sync.exp
	* gdb.mi/user-selected-context-sync.exp
	* gdb.multi/dummy-frame-restore.exp
	* gdb.multi/multi-arch-exec.exp
	* gdb.multi/remove-inferiors.exp
	* gdb.multi/watchpoint-multi-exit.exp
	* gdb.opt/solib-intra-step.exp
	* gdb.perf/backtrace.exp
	* gdb.perf/single-step.exp
	* gdb.perf/skip-command.exp
	* gdb.perf/skip-prologue.exp
	* gdb.perf/solib.exp
	* gdb.python/lib-types.exp
	* gdb.python/py-as-string.exp
	* gdb.python/py-bad-printers.exp
	* gdb.python/py-block.exp
	* gdb.python/py-breakpoint.exp
	* gdb.python/py-cmd.exp
	* gdb.python/py-events.exp
	* gdb.python/py-evthreads.exp
	* gdb.python/py-finish-breakpoint.exp
	* gdb.python/py-finish-breakpoint2.exp
	* gdb.python/py-frame-inline.exp
	* gdb.python/py-frame.exp
	* gdb.python/py-inferior.exp
	* gdb.python/py-infthread.exp
	* gdb.python/py-mi.exp
	* gdb.python/py-objfile.exp
	* gdb.python/py-pp-maint.exp
	* gdb.python/py-pp-registration.exp
	* gdb.python/py-prettyprint.exp
	* gdb.python/py-recurse-unwind.exp
	* gdb.python/py-shared.exp
	* gdb.python/py-symbol.exp
	* gdb.python/py-symtab.exp
	* gdb.python/py-template.exp
	* gdb.python/py-type.exp
	* gdb.python/py-unwind-maint.exp
	* gdb.python/py-unwind.exp
	* gdb.python/py-value.exp
	* gdb.python/python.exp
	* gdb.reverse/finish-reverse-bkpt.exp
	* gdb.reverse/insn-reverse.exp
	* gdb.reverse/next-reverse-bkpt-over-sr.exp
	* gdb.reverse/solib-precsave.exp
	* gdb.reverse/solib-reverse.exp
	* gdb.stabs/gdb11479.exp
	* gdb.stabs/weird.exp
	* gdb.threads/fork-child-threads.exp
	* gdb.threads/fork-plus-threads.exp
	* gdb.threads/fork-thread-pending.exp
	* gdb.threads/forking-threads-plus-breakpoint.exp
	* gdb.threads/hand-call-in-threads.exp
	* gdb.threads/interrupted-hand-call.exp
	* gdb.threads/linux-dp.exp
	* gdb.threads/local-watch-wrong-thread.exp
	* gdb.threads/next-while-other-thread-longjmps.exp
	* gdb.threads/non-ldr-exit.exp
	* gdb.threads/pending-step.exp
	* gdb.threads/print-threads.exp
	* gdb.threads/process-dies-while-detaching.exp
	* gdb.threads/process-dies-while-handling-bp.exp
	* gdb.threads/pthreads.exp
	* gdb.threads/queue-signal.exp
	* gdb.threads/reconnect-signal.exp
	* gdb.threads/signal-command-handle-nopass.exp
	* gdb.threads/signal-command-multiple-signals-pending.exp
	* gdb.threads/signal-delivered-right-thread.exp
	* gdb.threads/signal-sigtrap.exp
	* gdb.threads/sigthread.exp
	* gdb.threads/staticthreads.exp
	* gdb.threads/stepi-random-signal.exp
	* gdb.threads/thread-unwindonsignal.exp
	* gdb.threads/thread_check.exp
	* gdb.threads/thread_events.exp
	* gdb.threads/tid-reuse.exp
	* gdb.threads/tls-nodebug.exp
	* gdb.threads/tls-shared.exp
	* gdb.threads/tls-so_extern.exp
	* gdb.threads/tls.exp
	* gdb.threads/wp-replication.exp
	* gdb.trace/actions-changed.exp
	* gdb.trace/actions.exp
	* gdb.trace/backtrace.exp
	* gdb.trace/change-loc.exp
	* gdb.trace/collection.exp
	* gdb.trace/deltrace.exp
	* gdb.trace/disconnected-tracing.exp
	* gdb.trace/entry-values.exp
	* gdb.trace/ftrace-lock.exp
	* gdb.trace/ftrace.exp
	* gdb.trace/infotrace.exp
	* gdb.trace/mi-trace-frame-collected.exp
	* gdb.trace/mi-trace-unavailable.exp
	* gdb.trace/mi-traceframe-changed.exp
	* gdb.trace/mi-tracepoint-changed.exp
	* gdb.trace/mi-tsv-changed.exp
	* gdb.trace/no-attach-trace.exp
	* gdb.trace/packetlen.exp
	* gdb.trace/passc-dyn.exp
	* gdb.trace/passcount.exp
	* gdb.trace/pending.exp
	* gdb.trace/pr16508.exp
	* gdb.trace/qtro.exp
	* gdb.trace/range-stepping.exp
	* gdb.trace/read-memory.exp
	* gdb.trace/report.exp
	* gdb.trace/save-trace.exp
	* gdb.trace/signal.exp
	* gdb.trace/stap-trace.exp
	* gdb.trace/status-stop.exp
	* gdb.trace/strace.exp
	* gdb.trace/tfile.exp
	* gdb.trace/tfind.exp
	* gdb.trace/trace-break.exp
	* gdb.trace/trace-condition.exp
	* gdb.trace/trace-enable-disable.exp
	* gdb.trace/trace-mt.exp
	* gdb.trace/tracecmd.exp
	* gdb.trace/tracefile-pseudo-reg.exp
	* gdb.trace/tspeed.exp
	* gdb.trace/tstatus.exp
	* gdb.trace/tsv.exp
	* gdb.trace/unavailable.exp
	* gdb.trace/while-dyn.exp
	* gdb.trace/while-stepping.exp
	* lib/gdb-guile.exp
	* lib/gdb.exp
	* lib/mi-support.exp
	* lib/pascal.exp
	* lib/perftest.exp
	* lib/prelink-support.exp
	* lib/selftest-support.exp
2016-12-01 14:40:05 -06:00
Don Breazeal 1cafadb4e4 PR 18303, Tolerate malformed input for lookup_symbol-called functions
lookup_symbol is often called with user input.  Consequently, any
function called from lookup_symbol{,_in_language} should attempt to
deal with malformed input gracefully.  After all, malformed user
input is not a programming/API error.

This patch does not attempt to find/correct all instances of this.  It
only fixes locations in the code that trigger test suite failures.

This patch fixes PR breakpoints/18303, "Assertion: -breakpoint-insert
with windows paths of file in non-current directory".

The patch includes three new tests related to this.  One is just
gdb.linespec/ls-errs.exp copied and converted to use C++ instead of C, and
to add a case using a file name containing a Windows-style logical drive
specifier.  The others include an MI test to provide a regression test for
the specific case reported in PR 18303, and a C++ test for proper error
handling of access to a program variable when using a file scope specifier
that refers to a non-existent file.

Tested on x86_64 native Linux.

gdb/ChangeLog
2016-01-28  Keith Seitz  <keiths@redhat.com>

	PR breakpoints/18303
	* cp-namespace.c (cp_lookup_bare_symbol): Change assertion to
	look for "::" instead of simply ":".
	(cp_search_static_and_baseclasses): Return null_block_symbol for
	malformed input.
	Remove assertions.
	* cp-support.c (cp_find_first_component_aux): Do not return
	a prefix length for ':' unless the next character is also ':'.

gdb/testsuite/ChangeLog
2016-01-28  Don Breazeal  <donb@codesourcery.com>

	* gdb.cp/scope-err.cc: New test program.
	* gdb.cp/scope-err.exp: New test script.
	* gdb.linespec/ls-errs.c (myfunction): Expanded to have multiple
	lines and "set breakpoint here" comment.
	* gdb.linespec/ls-errs.exp: Added C++ testing and new test case.
	Fixed some whitespace and format issues.
	* gdb.mi/mi-linespec-err-cp.cc: New test program.
	* gdb.mi/mi-linespec-err-cp.exp: New test script.
2016-03-15 15:25:15 -07:00
Simon Marchi 2151ccc56c Always organize test artifacts in a directory hierarchy
When running tests in parallel, each test puts its generated files in a
different directory, under "outputs".  I think it would be nice if it
was always the case, as it would isolate the test cases a bit more.  An
artifact created by a test wouldn't get overwritten by another test.

Also, it makes it easier to clean up.  A lot of executables are left all
over the place because their names do not appear in gdb.*/Makefile.  If
everything is in "outputs", then we just have to delete that directory
(which we already do).

At the same time it makes the gdb.foo directories and their Makefiles
useless in the build directory, since they are pretty much only used for
cleaning.

What do you think?

gdb/testsuite/ChangeLog:

	* Makefile.in (ALL_SUBDIRS): Remove.
	(clean mostlyclean): Do not recurse in ALL_SUBDIRS.
	(distclean maintainer-clean realclean): Likewise.
	* configure.ac (AC_OUTPUT): Remove gdb.*/Makefile.
	* configure: Regenerate.
	* gdb.ada/Makefile.in: Delete.
	* gdb.arch/Makefile.in: Likewise.
	* gdb.asm/Makefile.in: Likewise.
	* gdb.base/Makefile.in: Likewise.
	* gdb.btrace/Makefile.in: Likewise.
	* gdb.cell/Makefile.in: Likewise.
	* gdb.compile/Makefile.in: Likewise.
	* gdb.cp/Makefile.in: Likewise.
	* gdb.disasm/Makefile.in: Likewise.
	* gdb.dlang/Makefile.in: Likewise.
	* gdb.dwarf2/Makefile.in: Likewise.
	* gdb.fortran/Makefile.in: Likewise.
	* gdb.gdb/Makefile.in: Likewise.
	* gdb.go/Makefile.in: Likewise.
	* gdb.guile/Makefile.in: Likewise.
	* gdb.java/Makefile.in: Likewise.
	* gdb.linespec/Makefile.in: Likewise.
	* gdb.mi/Makefile.in: Likewise.
	* gdb.modula2/Makefile.in: Likewise.
	* gdb.multi/Makefile.in: Likewise.
	* gdb.objc/Makefile.in: Likewise.
	* gdb.opencl/Makefile.in: Likewise.
	* gdb.opt/Makefile.in: Likewise.
	* gdb.pascal/Makefile.in: Likewise.
	* gdb.perf/Makefile.in: Likewise.
	* gdb.python/Makefile.in: Likewise.
	* gdb.reverse/Makefile.in: Likewise.
	* gdb.server/Makefile.in: Likewise.
	* gdb.stabs/Makefile.in: Likewise.
	* gdb.threads/Makefile.in: Likewise.
	* gdb.trace/Makefile.in: Likewise.
	* gdb.xml/Makefile.in: Likewise.
	* lib/gdb.exp (make_gdb_parallel_path): Add check for
	GDB_PARALLEL.
	(standard_output_file): Remove check for GDB_PARALLEL, always
	return path in outputs/$subdir/$testname.
2016-02-08 14:02:36 -05:00
Pedro Alves 5d5658a1d3 Per-inferior/Inferior-qualified thread IDs
This commit changes GDB to track thread numbers per-inferior.  Then,
if you're debugging multiple inferiors, GDB displays
"inferior-num.thread-num" instead of just "thread-num" whenever it
needs to display a thread:

 (gdb) info inferiors
   Num  Description       Executable
   1    process 6022     /home/pedro/gdb/tests/threads
 * 2    process 6037     /home/pedro/gdb/tests/threads
 (gdb) info threads
   Id   Target Id         Frame
   1.1  Thread 0x7ffff7fc2740 (LWP 6022) "threads" (running)
   1.2  Thread 0x7ffff77c0700 (LWP 6028) "threads" (running)
   1.3  Thread 0x7ffff7fc2740 (LWP 6032) "threads" (running)
   2.1  Thread 0x7ffff7fc1700 (LWP 6037) "threads" (running)
   2.2  Thread 0x7ffff77c0700 (LWP 6038) "threads" (running)
 * 2.3  Thread 0x7ffff7fc2740 (LWP 6039) "threads" (running)
 (gdb)
...
 (gdb) thread 1.1
 [Switching to thread 1.1 (Thread 0x7ffff7fc2740 (LWP 8155))]
 (gdb)
...

etc.

You can still use "thread NUM", in which case GDB infers you're
referring to thread NUM of the current inferior.

The $_thread convenience var and Python's InferiorThread.num attribute
are remapped to the new per-inferior thread number.  It's a backward
compatibility break, but since it only matters when debugging multiple
inferiors, I think it's worth doing.

Because MI thread IDs need to be a single integer, we keep giving
threads a global identifier, _in addition_ to the per-inferior number,
and make MI always refer to the global thread IDs.  IOW, nothing
changes from a MI frontend's perspective.

Similarly, since Python's Breakpoint.thread and Guile's
breakpoint-thread/set-breakpoint-thread breakpoint methods need to
work with integers, those are adjusted to work with global thread IDs
too.  Follow up patches will provide convenient means to access
threads' global IDs.

To avoid potencially confusing users (which also avoids updating much
of the testsuite), if there's only one inferior and its ID is "1",
IOW, the user hasn't done anything multi-process/inferior related,
then the "INF." part of thread IDs is not shown.  E.g,.:

 (gdb) info inferiors
   Num  Description       Executable
 * 1    process 15275     /home/pedro/gdb/tests/threads
 (gdb) info threads
   Id   Target Id         Frame
 * 1    Thread 0x7ffff7fc1740 (LWP 15275) "threads" main () at threads.c:40
 (gdb) add-inferior
 Added inferior 2
 (gdb) info threads
   Id   Target Id         Frame
 * 1.1  Thread 0x7ffff7fc1740 (LWP 15275) "threads" main () at threads.c:40
 (gdb)

No regressions on x86_64 Fedora 20.

gdb/ChangeLog:
2016-01-13  Pedro Alves  <palves@redhat.com>

	* NEWS: Mention that thread IDs are now per inferior and global
	thread IDs.
	* Makefile.in (SFILES): Add tid-parse.c.
	(COMMON_OBS): Add tid-parse.o.
	(HFILES_NO_SRCDIR): Add tid-parse.h.
	* ada-tasks.c: Adjust to use ptid_to_global_thread_id.
	* breakpoint.c (insert_breakpoint_locations)
	(remove_threaded_breakpoints, bpstat_check_breakpoint_conditions)
	(print_one_breakpoint_location, set_longjmp_breakpoint)
	(check_longjmp_breakpoint_for_call_dummy)
	(set_momentary_breakpoint): Adjust to use global IDs.
	(find_condition_and_thread, watch_command_1): Use parse_thread_id.
	(until_break_command, longjmp_bkpt_dtor)
	(breakpoint_re_set_thread, insert_single_step_breakpoint): Adjust
	to use global IDs.
	* dummy-frame.c (pop_dummy_frame_bpt): Adjust to use
	ptid_to_global_thread_id.
	* elfread.c (elf_gnu_ifunc_resolver_stop): Likewise.
	* gdbthread.h (struct thread_info): Rename field 'num' to
	'global_num.  Add new fields 'per_inf_num' and 'inf'.
	(thread_id_to_pid): Rename thread_id_to_pid to
	global_thread_id_to_ptid.
	(pid_to_thread_id): Rename to ...
	(ptid_to_global_thread_id): ... this.
	(valid_thread_id): Rename to ...
	(valid_global_thread_id): ... this.
	(find_thread_id): Rename to ...
	(find_thread_global_id): ... this.
	(ALL_THREADS, ALL_THREADS_BY_INFERIOR): Declare.
	(print_thread_info): Add comment.
	* tid-parse.h: New file.
	* tid-parse.c: New file.
	* infcmd.c (step_command_fsm_prepare)
	(step_command_fsm_should_stop): Adjust to use the global thread
	ID.
	(until_next_command, until_next_command)
	(finish_command_fsm_should_stop): Adjust to use the global thread
	ID.
	(attach_post_wait): Adjust to check the inferior number too.
	* inferior.h (struct inferior) <highest_thread_num>: New field.
	* infrun.c (handle_signal_stop)
	(insert_exception_resume_breakpoint)
	(insert_exception_resume_from_probe): Adjust to use the global
	thread ID.
	* record-btrace.c (record_btrace_open): Use global thread IDs.
	* remote.c (process_initial_stop_replies): Also consider the
	inferior number.
	* target.c (target_pre_inferior): Clear the inferior's highest
	thread num.
	* thread.c (clear_thread_inferior_resources): Adjust to use the
	global thread ID.
	(new_thread): New inferior parameter.  Adjust to use it.  Set both
	the thread's global ID and the thread's per-inferior ID.
	(add_thread_silent): Adjust.
	(find_thread_global_id): New.
	(find_thread_id): Make static.  Adjust to rename.
	(valid_thread_id): Rename to ...
	(valid_global_thread_id): ... this.
	(pid_to_thread_id): Rename to ...
	(ptid_to_global_thread_id): ... this.
	(thread_id_to_pid): Rename to ...
	(global_thread_id_to_ptid): ... this.  Adjust.
	(first_thread_of_process): Adjust.
	(do_captured_list_thread_ids): Adjust to use global thread IDs.
	(should_print_thread): New function.
	(print_thread_info): Rename to ...
	(print_thread_info_1): ... this, and add new show_global_ids
	parameter.  Handle it.  Iterate over inferiors.
	(print_thread_info): Reimplement as wrapper around
	print_thread_info_1.
	(show_inferior_qualified_tids): New function.
	(print_thread_id): Use it.
	(tp_array_compar): Compare inferior numbers too.
	(thread_apply_command): Use tid_range_parser.
	(do_captured_thread_select): Use parse_thread_id.
	(thread_id_make_value): Adjust.
	(_initialize_thread): Adjust "info threads" help string.
	* varobj.c (struct varobj_root): Update comment.
	(varobj_create): Adjust to use global thread IDs.
	(value_of_root_1): Adjust to use global_thread_id_to_ptid.
	* windows-tdep.c (display_tib): No longer accept an argument.
	* cli/cli-utils.c (get_number_trailer): Make extern.
	* cli/cli-utils.h (get_number_trailer): Declare.
	(get_number_const): Adjust documentation.
	* mi/mi-cmd-var.c (mi_cmd_var_update_iter): Adjust to use global
	thread IDs.
	* mi/mi-interp.c (mi_new_thread, mi_thread_exit)
	(mi_on_normal_stop, mi_output_running_pid, mi_on_resume):
	* mi/mi-main.c (mi_execute_command, mi_cmd_execute): Likewise.
	* guile/scm-breakpoint.c (gdbscm_set_breakpoint_thread_x):
	Likewise.
	* python/py-breakpoint.c (bppy_set_thread): Likewise.
	* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
	* python/py-infthread.c (thpy_get_num): Add comment and return the
	per-inferior thread ID.
	(thread_object_getset): Update comment of "num".

gdb/testsuite/ChangeLog:
2016-01-07  Pedro Alves  <palves@redhat.com>

	* gdb.base/break.exp: Adjust to output changes.
	* gdb.base/hbreak2.exp: Likewise.
	* gdb.base/sepdebug.exp: Likewise.
	* gdb.base/watch_thread_num.exp: Likewise.
	* gdb.linespec/keywords.exp: Likewise.
	* gdb.multi/info-threads.exp: Likewise.
	* gdb.threads/thread-find.exp: Likewise.
	* gdb.multi/tids.c: New file.
	* gdb.multi/tids.exp: New file.

gdb/doc/ChangeLog:
2016-01-07  Pedro Alves  <palves@redhat.com>

	* gdb.texinfo (Threads): Document per-inferior thread IDs,
	qualified thread IDs, global thread IDs and thread ID lists.
	(Set Watchpoints, Thread-Specific Breakpoints): Adjust to refer to
	thread IDs.
	(Convenience Vars): Document the $_thread convenience variable.
	(Ada Tasks): Adjust to refer to thread IDs.
	(GDB/MI Async Records, GDB/MI Thread Commands, GDB/MI Ada Tasking
	Commands, GDB/MI Variable Objects): Update to mention global
	thread IDs.
	* guile.texi (Breakpoints In Guile)
	<breakpoint-thread/set-breakpoint-thread breakpoint>: Mention
	global thread IDs instead of thread IDs.
	* python.texi (Threads In Python): Adjust documentation of
	InferiorThread.num.
	(Breakpoint.thread): Mention global thread IDs instead of thread
	IDs.
2016-01-13 10:59:43 +00:00
Joel Brobecker 618f726fcb GDB copyright headers update after running GDB's copyright.py script.
gdb/ChangeLog:

        Update year range in copyright notice of all files.
2016-01-01 08:43:22 +04:00
Sandra Loosemore 515b89b30c Require readline for gdb.linespec/explicit.exp tab-completion tests.
2015-09-18  Sandra Loosemore  <sandra@codesourcery.com>

	gdb/testsuite/
	* gdb.linespec/explicit.exp: Check for readline support for
	tab-completion tests.  Fix obvious typo.
2015-09-18 08:54:20 -07:00
Keith Seitz ad89c2aa67 Move strace -m/explicit location test to strace.exp
One of the build slaves shows this error running explicit.exp:

(gdb) strace -m gdbfoobarbaz
Remote failure reply: E.In-process agent library not loaded in process.
Fast and static tracepoints unavailable.
(gdb) FAIL: gdb.linespec/explicit.exp: strace -m gdbfoobarbaz

There are two big problems with this test:
1) The expected output is actually not what the test is meant to test for.
2) This test should really only run where it is supported.

This is most easily fixed by moving the test to gdb.trace/strace.exp.

gdb/testsuite/ChangeLog

	* gdb.linespec/explicit.exp: Move strace test from here ...
	* gdb.trace/strace.exp: ... to here.
2015-08-17 11:57:01 -07:00
Keith Seitz 87f0e72047 Explicit locations: add UI features for CLI
This patch exposes explicit locations to the CLI user.  This enables
users to "explicitly" specify attributes of the breakpoint location
to avoid any ambiguity that might otherwise exist with linespecs.

The general syntax of explicit locations is:
-source SOURCE_FILENAME -line {+-}LINE -function FUNCTION_NAME
-label LABEL_NAME

Option names may be abbreviated, e.g., "-s SOURCE_FILENAME -li 3" and users
may use the completer with either options or values.

gdb/ChangeLog:

	* completer.c: Include location.h.
	(enum match_type): New enum.
	(location_completer): Rename to ...
	(linespec_completer): ... this.
	(collect_explicit_location_matches, backup_text_ptr)
	(explicit_location_completer): New functions.
	(location_completer): "New" function; handle linespec
	and explicit location completions.
	(complete_line_internal): Remove all location completer-specific
	handling.
	* linespec.c (linespec_lexer_lex_keyword, is_ada_operator)
	(find_toplevel_char): Export.
	(linespec_parse_line_offset): Export.
	Issue error if STRING is not numerical.
	(gdb_get_linespec_parser_quote_characters): New function.
	* linespec.h (linespec_parse_line_offset): Declare.
	(get_gdb_linespec_parser_quote_characters): Declare.
	(is_ada_operator): Declare.
	(find_toplevel_char): Declare.
	(linespec_lexer_lex_keyword): Declare.
	* location.c (explicit_to_event_location): New function.
	(explicit_location_lex_one): New function.
	(string_to_explicit_location): New function.
	(string_to_event_location): Handle explicit locations.
	* location.h (explicit_to_event_location): Declare.
	(string_to_explicit_location): Declare.

gdb/testsuite/ChangeLog:

	* gdb.linespec/3explicit.c: New file.
	* gdb.linespec/cpexplicit.cc: New file.
	* gdb.linespec/cpexplicit.exp: New file.
	* gdb.linespec/explicit.c: New file.
	* gdb.linespec/explicit.exp: New file.
	* gdb.linespec/explicit2.c: New file.
	* gdb.linespec/ls-errs.exp: Add explicit location tests.
	* lib/gdb.exp (capture_command_output): Regexp-escape `command'
	before using in the matching pattern.
	Clarify that `prefix' is a regular expression.
2015-08-11 17:09:36 -07:00
Yao Qi 6d5f0679fe Handle the effect of skipping prologue
break-asm-file.exp has some manually written dwarf to create some line
number entries like this,

  [0x0000013d]  Extended opcode 2: set Address to 0x40053f
  [0x00000144]  Advance Line by 4 to 7
  [0x00000146]  Copy
  [0x00000147]  Extended opcode 2: set Address to 0x400541
  [0x0000014e]  Advance Line by 1 to 8
  [0x00000150]  Copy
  [0x00000151]  Extended opcode 2: set Address to 0x400547
  [0x00000158]  Extended opcode 1: End of Sequence

0x40053f is the start address of function func, and is mapped to line
7.  0x400541 is within function func, and is mapped to line 8.

(gdb) disassemble /r 0x40053f,+8
Dump of assembler code from 0x40053f to 0x400547:
   0x000000000040053f <func+0>: 00 00   add    %al,(%rax)
   0x0000000000400541 <func+2>: 00 00   add    %al,(%rax)
   0x0000000000400543 <func+4>: 00 00   add    %al,(%rax)
   0x0000000000400545 <func+6>: 00 00   add    %al,(%rax)

in the following test,

(gdb) break a/break-asm-file0.s:func
Breakpoint 1 at 0x40053f: file a/break-asm-file0.s, line 7.

As we can see, breakpoint is set at the start address of function func
on x86, which means no prologue is skipped.  On other targets, such as
arm and aarch64, breakpoint is set at the address *after* the start
address, which is mapped to line 8.  Then test fails.

In fact, it is lucky this test doesn't fail on x86 and x86_64, whose
gdbarch method skip_prologue doesn't reply on skip_prologue_using_sal
if producer isn't clang.

  if (find_pc_partial_function (start_pc, NULL, &func_addr, NULL))
    {
      CORE_ADDR post_prologue_pc
	= skip_prologue_using_sal (gdbarch, func_addr);
      struct compunit_symtab *cust = find_pc_compunit_symtab (func_addr);

      /* Clang always emits a line note before the prologue and another
	 one after.  We trust clang to emit usable line notes.  */
      if (post_prologue_pc
	  && (cust != NULL
	      && COMPUNIT_PRODUCER (cust) != NULL
	      && startswith (COMPUNIT_PRODUCER (cust), "clang ")))
        return max (start_pc, post_prologue_pc);
    }

so it doesn't return and go further to prologue analyser.  Since ".int 0"
isn't an instruction of prologue, nothing is skipped, starting address
is used, and test passes.

however, on targets which don't have such producer checking, the first
line number entry is skipped, and skip_prologue_using_sal returns sal
represents the second line number entry.

The idea of this patch is to force GDB stop at somewhere which is stilled
mapped to line 7 after skipping prologue.  I choose to add a new line
number entry for the following instruction but mapped to the same line (7),
because I see the comments in dwarf2read.c,

   ... fact that two consecutive
   line number entries for the same line is a heuristic used by gcc
   to denote the end of the prologue.

then the line table becomes:

  [0x000000d4]  Extended opcode 2: set Address to 0x400529
  [0x000000db]  Advance Line by 4 to 7
  [0x000000dd]  Copy
  [0x000000de]  Extended opcode 2: set Address to 0x40052a
  [0x000000e5]  Advance Line by 0 to 7
  [0x000000e7]  Copy
  [0x000000e8]  Extended opcode 2: set Address to 0x40052b
  [0x000000ef]  Advance Line by 1 to 8
  [0x000000f1]  Copy
  [0x000000f2]  Extended opcode 2: set Address to 0x40052c
  [0x000000f9]  Extended opcode 1: End of Sequence

gdb/testsuite:

2015-03-26  Yao Qi  <yao.qi@linaro.org>

	PR testsuite/18139
	* gdb.linespec/break-asm-file0.s (func): New label .Lfunc_2.
	Add a line number entry for the same line.
	* gdb.linespec/break-asm-file1.s (func): New label .Lfunc_2.
	Add a line number entry for the same line.
2015-03-26 08:29:48 +00:00
Yao Qi 2898689ba3 Remove some hard-coded stuff in tests
There are some hard-coded stuff in .s files, such as .int 0 and
address offset, which isn't portable.  This patch is to replace
".int 0" with nop and address offset with labels.

gdb/testsuite:

2015-03-26  Yao Qi  <yao.qi@linaro.org>

	* gdb.linespec/break-asm-file0.s (func2): Use nop instead of
	.int 0.
	(func): Likewise.  Add .Lfunc_1 label.
	Use .Lfunc_1 label.
	* gdb.linespec/break-asm-file1.s (func3): Use nop instead of
	.int 0.
	(func): Likewise.
	Use .Lfunc_1 label.
2015-03-26 08:29:48 +00:00
Yao Qi 8518049884 Compile break-asm-file{0,1}.s without debug info
If I add some nop into break-asm-file1.s like this,

--- INDEX:/gdb/testsuite/gdb.linespec/break-asm-file1.s
+++ WORKDIR:/gdb/testsuite/gdb.linespec/break-asm-file1.s
@@ -31,8 +31,8 @@ _func:
 	.type func, %function
 func:
 .Lbegin_func:
-	.int 0
-	.int 0
+	nop
+	nop
 .Lend_func:
 	.size func, .-func
 .Lend_text1:

I get the following error:

Running gdb/testsuite/gdb.linespec/break-asm-file.exp ...
gdb/testsuite/gdb.linespec/break-asm-file1.s: Assembler messages:^M
gdb/testsuite/gdb.linespec/break-asm-file1.s: Fatal error: duplicate .debug_line sections

break-asm-file0.s and break-asm-file1.s have already had debug information
(written manually), so don't need to generate debug infor for them.

gdb/testsuite:

2015-03-26  Yao Qi  <yao.qi@linaro.org>

	* gdb.linespec/break-asm-file.exp: Don't call prepare_for_testing.
	Call gdb_compile instead to compile each .s files without debug
	information.
2015-03-26 08:29:48 +00:00
Keith Seitz 0578b14e99 Expand keyword lexing intelligence in the linespec parser.
This patch changes the heuristic the linespec lexer uses to
    detect a keyword in the input stream.

    Currently, the heuristic is: a word is a keyword if it
    1) points to a string that is a keyword
    2) is followed by a non-identifier character

    This is strictly more correct than using whitespace. For example,
    it allows constructs such as "break foo if(i == 1)". However,
    find_condition_and_thread in breakpoint.c does not support this expanded
    usage. It requires whitespace to follow the keyword.

    The proposed new heuristic is: a word is a keyword if it
    1) points to a string that is a keyword
    2) is followed by whitespace
    3) is not followed by another keyword string followed by whitespace

    This additional complexity allows constructs such as
    "break thread thread 3" and "break thread 3".  In the former case,
    the actual location is a symbol named "thread" to be set on thread #3.
    In the later case, the location is NULL, i.e., the default location,
    to be set on thread #3.

    In order to pass all the new tests added here, I've also had to add a
    new feature to parse_breakpoint_sals, which expands recognition of the
    default location to keywords other than "if", which is the only keyword
    currently permitted with the default (NULL) location, but there is no
    reason to exclude other keywords.

    Consequently, it will be possible to use "break thread 1" or
    "break task 1".

    In addition to all of this, it is now possible to remove the keyword_ok
    state from the linespec parser.

    gdb/ChangeLog

    	* breakpoint.c (parse_breakpoint_sals): Use
    	linespec_lexer_lex_keyword to ascertain if the user specified
    	a NULL location.
    	* linespec.c [IF_KEYWORD_INDEX]: Define.
    	(linespec_lexer_lex_keyword): Export.
    	(struct ls_parser) <keyword_ok>: Remove.
    	A keyword is only a keyword if not followed by another keyword.
    	(linespec_lexer_lex_one): Remove keyword_ok handling.
    	Add comment explaining why the parsing stream is not advanced
    	when a keyword is seen.
    	(parse_linespec): Remove parser->keyword_ok.
    	* linespec.h (linespec_lexer_lex_keyword): Add declaration.

    gdb/testsuite/ChangeLog

    	* gdb.linespec/keywords.c: New file.
    	* gdb.linespec/keywords.exp: New file.
2015-03-23 13:16:39 -07:00
Gary Benson ef0b411a11 Add max-completions parameter, and implement tab-completion limiting.
This commit adds a new exception, MAX_COMPLETIONS_REACHED_ERROR, to be
thrown whenever the completer has generated too many candidates to
be useful.  A new user-settable variable, "max_completions", is added
to control this behaviour.  A top-level completion limit is added to
complete_line_internal, as the final check to ensure the user never
sees too many completions.  An additional limit is added to
default_make_symbol_completion_list_break_on, to halt time-consuming
symbol table expansions.

gdb/ChangeLog:

	PR cli/9007
	PR cli/11920
	PR cli/15548
	* cli/cli-cmds.c (complete_command): Notify user if max-completions
	reached.
	* common/common-exceptions.h (enum errors)
	<MAX_COMPLETIONS_REACHED_ERROR>: New value.
	* completer.h (get_max_completions_reached_message): New declaration.
	(max_completions): Likewise.
	(completion_tracker_t): New typedef.
	(new_completion_tracker): New declaration.
	(make_cleanup_free_completion_tracker): Likewise.
	(maybe_add_completion_enum): New enum.
	(maybe_add_completion): New declaration.
	(throw_max_completions_reached_error): Likewise.
	* completer.c (max_completions): New global variable.
	(new_completion_tracker): New function.
	(free_completion_tracker): Likewise.
	(make_cleanup_free_completion_tracker): Likewise.
	(maybe_add_completions): Likewise.
	(throw_max_completions_reached_error): Likewise.
	(complete_line): Remove duplicates and limit result to max_completions
	entries.
	(get_max_completions_reached_message): New function.
	(gdb_display_match_list): Handle max_completions.
	(_initialize_completer): New declaration and function.
	* symtab.c: Include completer.h.
	(completion_tracker): New static variable.
	(completion_list_add_name): Call maybe_add_completion.
	(default_make_symbol_completion_list_break_on_1): Renamed from
	default_make_symbol_completion_list_break_on.  Maintain
	completion_tracker across calls to completion_list_add_name.
	(default_make_symbol_completion_list_break_on): New function.
	* top.c (init_main): Set rl_completion_display_matches_hook.
	* tui/tui-io.c: Include completer.h.
	(tui_old_rl_display_matches_hook): New static global.
	(tui_rl_display_match_list): Notify user if max-completions reached.
	(tui_setup_io): Save/restore rl_completion_display_matches_hook.
	* NEWS (New Options): Mention set/show max-completions.

gdb/doc/ChangeLog:

	* gdb.texinfo (Command Completion): Document new
	"set/show max-completions" option.

gdb/testsuite/ChangeLog:

	* gdb.base/completion.exp: Disable completion limiting for
	existing tests.  Add new tests to check completion limiting.
	* gdb.linespec/ls-errs.exp: Disable completion limiting.
2015-01-31 15:07:22 -08:00
Joel Brobecker 32d0add0a6 Update year range in copyright notice of all files owned by the GDB project.
gdb/ChangeLog:

        Update year range in copyright notice of all files.
2015-01-01 13:32:14 +04:00
Mihail-Marian Nistor 87186c6a5c gdb/17394: cannot put breakpoint only in selected ASM file.
This patch fixes a problem when trying to insert a breakpoint on
a specific symbol defined in a specific file, eg:

    break foo.c:func

This currently works for files in C/C++/Ada, etc, but doesn't always
work for Asm files. Analysis of the problem showed that this related
to a limitation in gas, which does not generate debug info for functions/
symbols.  Thus, we have a symtab for the file ("info sources" shows
the file), but it contains no symbols.

When find_linespec_symbols is called in linespec_parse_basic, it calls
find_function_symbols, which uses add_matching_symbols_to_info to
collect all matching symbols.

That function does [pardon any mangled formatting]:

  for (ix = 0; VEC_iterate (symtab_ptr, info->file_symtabs, ix, elt); ++ix)
    {
      if (elt == NULL)
        {
          iterate_over_all_matching_symtabs (info->state, name, VAR_DOMAIN,
                                             collect_symbols, info,
                                             pspace, 1);
          search_minsyms_for_name (info, name, pspace);
        }
      else if (pspace == NULL || pspace == SYMTAB_PSPACE (elt))
        {
          /* Program spaces that are executing startup should have
             been filtered out earlier.  */
          gdb_assert (!SYMTAB_PSPACE (elt)->executing_startup);
          set_current_program_space (SYMTAB_PSPACE (elt));
          iterate_over_file_blocks (elt, name, VAR_DOMAIN,
                                    collect_symbols, info);
        }
    }

This iterates over the symtabs. In the failing use case, ELT is
non-NULL (points to the symtab for the .s file), so it calls
iterate_over_file_blocks. Herein is where the problem exists: it is
assumed that if NAME exists, it must exist in the given symtab -- a
reasonable assumption for "normal" (non-asm) cases. It never searches
minimal symbols (or in the global default symtab).

This patch fixes the problem by doing so. It is important to note that
iterating over minsyms is fairly expensive, so this patch only adds
that extra search if the language is language_asm and
iterate_over_file_blocks returns no symbols.

gdb/ChangeLog:
2014-12-20  Keith Seitz  <keiths@redhat.com>
            Mihail-Marian Nistor  <mihail.nistor@freescale.com>

        PR gdb/17394
        * linespec.c (struct collect_minsyms): Add new member `symtab'.
        (add_minsym): Handle cases where info.symtab is non-NULL.
        (search_minsyms_for_name): Add new parameter `symtab'.
        Handle limiting searches to a specific symtab.
        (add_matching_symtabs_to_info): Search through minimal symbols
        for language_asm files for which no new symbols are found.

gdb/testsuite/ChangeLog:
2014-12-20  Mihail-Marian Nistor  <mihail.nistor@freescale.com>

        PR gdb/17394
        * gdb.linespec/break-asm-file.c: New file.
        * gdb.linespec/break-asm-file.exp: New file.
        * gdb.linespec/break-asm-file0.s: New file.
        * gdb.linespec/break-asm-file1.s: New file.
2014-12-20 11:32:25 -05:00
Luis Machado 3bdff46b67 Skip tests that use cd for remote hosts
Several GDB tests change directory before compiling the test program
in order to test source file names that include directories.  This
doesn't work on a remote host because default_target_compile in
DejaGnu's target.exp copies each source file with
"[remote_download host $x]" which uses "[file tail $file] to strip
off the directory of each file.  If the source directory is remote
mounted on the host, this also leaves copied files in the source
directory.

A similar skip is already used in gdb.test/fullname.exp:

    # We rely on being able to copy things around.

    if { [is_remote host] } {
	untested "setting breakpoints by full path"
	return -1
    }

This patch causes three GDB tests that use "cd" to be skipped for a
remote host.  For gdb.base/fullpath-expand.exp this eliminates two
failures and prevents the test from leaving files fullpath-expand.c
and fullpath-expand-func.c in gdb/testsuite.  For
gdb.base/realname-expand.exp it eliminates two failures.  For
gdb.linespec/macro-relative.exp it prevents file macro-relative.c
from being left in gdb/testsuite/gdb.linespec/base/two.

gdb/testsuite/

	* gdb.base/fullpath-expand.exp: Skip for a remote host.
	* gdb.base/realname-expand.exp: Likewise.
	* gdb.linespec/macro-relative.exp: Likewise.
2014-10-30 09:48:10 -02:00
Keith Seitz c888a17da5 Fix a dangling cleanup in linspec_parse_basic.
2014-05-05  Keith Seitz  <keiths@redhat.com>

	* linespec.c (linespec_parse_basic): Run cleanups if a convenience
	variable or history value is successfully parsed.

2014-05-05  Keith Seitz  <keiths@redhat.com>

	* gdb.linespec/ls-dollar.exp: Add test for linespec
	file:convenience_variable.
2014-05-05 13:43:31 -07:00
David Blaikie c2e827ad53 XFAIL under Clang tests using labels
gdb/testsuite/
	* gdb.base/label.exp: XFAIL label related tests under Clang.
	* gdb.cp/cplabel.exp: Ditto.
	* gdb.linespec/ls-errs.exp: Refactor tests to execute directly
	and XFAIL under Clang those using labels.
2014-04-24 20:20:46 -07:00
Doug Evans 01672a570a gdb.linespec/macro-relative.exp: Mark the test as unsupported if using fission. 2014-03-24 16:03:20 -07:00
Joel Brobecker ecd75fc8ee Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
Sergio Durigan Junior 58ce7251e8 gdb/
2013-05-07  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR breakpoints/15413:
	* breakpoint.c (condition_completer): Simplify the code to
	disconsider multiple locations of breakpoints when completing the
	"condition" command.

gdb/testsuite/
2013-05-07  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR breakpoints/15413:
	* gdb.base/pending.exp: Add test for completion of the "condition"
	command for pending breakpoints.
	* gdb.linespec/linespec.ex: Add test for completion of the
	"condition" command when dealing with multiple locations.
2013-05-07 17:04:29 +00:00
Sandra Loosemore 156bffd096 2013-04-04 Sandra Loosemore <sandra@codesourcery.com>
gdb/testsuite/

	* gdb.linespec/linespec.exp: Make dir/file:line tests
	conditional for non-remote hosts only.
2013-04-04 20:59:12 +00:00
Jan Kratochvil 33f448b11e gdb/
* linespec.c (struct linespec_canonical_name): New.
	(struct linespec_state): Change canonical_names type to it.
	(add_sal_to_sals): Change variable canonical_name to canonical.  Change
	xrealloc element size.  Initialize the different CANONICAL fields.
	(canonical_to_fullform): New.
	(filter_results): Use it.  Add variables canonical, fullform and
	cleanup.
	(struct decode_line_2_item, decode_line_2_compare_items): New.
	(decode_line_2): Remove variables iter and item_names, add variables
	items and items_count.  Modify the code for these new variables.

gdb/testsuite/
	* gdb.linespec/base/one/thefile.cc (twodup): New.
	(m): Call it.
	* gdb.linespec/base/two/thefile.cc (dupname): New.
	(n): Call it.
	* gdb.linespec/break-ask.exp: New file.
	* gdb.linespec/lspec.cc (body_elsewhere): New comment marker.
2013-03-04 19:30:28 +00:00
Jan Kratochvil 233d95b548 gdb/
* dwarf2read.c (file_file_name): New function with code from
	file_full_name.
	(file_full_name): Move most of the code to file_file_name.
	(macro_start_file): Rename variable full_name to file_name and use
	file_file_name for it.  Add comp_dir parameter to new_macro_table.
	* macrocmd.c (show_pp_source_pos): New variable fullname.  Replace any
	macro_source_file->filename access by macro_source_fullname call.
	* macroscope.c (_initialize_macroscope): Update the new_macro_table
	caller.
	* macrotab.c (struct macro_table): New field comp_dir.
	(macro_include): New variables link_fullname and source_fullname.
	Replace any macro_source_file->filename access by macro_source_fullname
	call.
	(macro_lookup_inclusion): Remove the partial filenames checking code.
	(check_for_redefinition): New variables source_fullname and
	found_key_fullname.  Replace any macro_source_file->filename access by
	macro_source_fullname call.
	(macro_undef): New variables source_fullname and key_fullname.  Replace
	any macro_source_file->filename access by macro_source_fullname call.
	(macro_lookup_definition): New variables retval and source_fullname.
	Replace any macro_source_file->filename access by macro_source_fullname
	call.
	(foreach_macro): New variable key_fullname.  Replace any
	macro_source_file->filename access by macro_source_fullname call.
	(foreach_macro_in_scope): New variable datum_fullname.  Replace any
	macro_source_file->filename access by macro_source_fullname call.
	(new_macro_table): Add parameter comp_dir.  Initialize T with it.
	(macro_source_fullname): New function.
	* macrotab.h (struct macro_source_file): Extent the filename field
	comment.
	(new_macro_table): New parameter comp_dir, add a comment for it.
	(macro_source_fullname): new declaration.

gdb/testsuite/
	* gdb.linespec/base/one/header.h: New file.
	* gdb.linespec/base/two/header.h: New file.
	* gdb.linespec/macro-relative.c: New file.
	* gdb.linespec/macro-relative.exp: New file.
2013-02-03 16:25:56 +00:00
Joel Brobecker 8acc9f485b Update years in copyright notice for the GDB files.
Two modifications:
  1. The addition of 2013 to the copyright year range for every file;
  2. The use of a single year range, instead of potentially multiple
     year ranges, as approved by the FSF.
2013-01-01 06:41:43 +00:00
Jan Kratochvil 858174054d gdb/
* breakpoint.c (breakpoint_re_set): Remove the skip_re_set call.
	* infrun.c (handle_inferior_event): Rename the called function to
	function_name_is_marked_for_skip, pass it TMP_SAL.
	* skip.c (struct skiplist_entry): Update function_name comment.  Remove
	fields pc, gdbarch and pending.
	(skip_function_pc): Rename this forward declaration to ...
	(skip_function): ... here.
	(skip_file_command): Remove variable pending and its use, remove
	initialization of E fields pending and gdbarch.  Do not use SYMTAB
	filename, use the specified one.
	(skip_function_command): Remove variable func_pc, do not set it.
	Update the caller of skip_function.  Replace decode_line_1 call by
	a lookup_symbol call.  Remove variables orig_arg, decode_exception and
	sals.  Update the caller of skip_function.
	(skip_info): Remove variable address_width and its use.  Do not print
	address (PC).  Renumber column 5 to 4.
	(skip_function_pc): Rename to ...
	(skip_function): ... here and remove its parameters pc, arch and
	pending.  Update the function comment and no longer use those
	parameters.
	(function_pc_is_marked_for_skip): Rename to ...
	(function_name_is_marked_for_skip): ... here, update function comment
	just to a skip.h reference, replace pc parameter by function_name and
	function_sal.  No longer use E field pending and pc.  Remove variables
	searched_for_sal, sal and filename.  Call compare_filenames_for_search
	instead of just strcmp.
	(skip_re_set): Remove the function.
	* skip.h (struct symtab_and_line): New declaration.
	(function_pc_is_marked_for_skip): Rename to ...
	(function_name_is_marked_for_skip): ... here, replace pc parameter by
	function_name and function_sal, update the function comment.

gdb/testsuite/
	* gdb.base/skip-solib.exp (info skip with pending file): Update the
	expected output.
	(info skip with pending file): Remove.
	(ignoring function in solib, info skip for function multiply): Update
	the expected output.
	* gdb.base/skip.ex (skip (main), skip function baz, info skip)
	(info skip (delete 1), info skip after disabling all)
	(info skip after enabling all, info skip after disabling 4 2-3)
	(info skip after enabling 2-3, info skip 2-3)
	(info skip after deleting 2 3): Update the expected output.
	* gdb.linespec/base/two/thefile.cc (n): New variable v, split the
	statement to its initialization and return.
	* gdb.linespec/skip-two.exp: New file.
2012-12-24 19:40:05 +00:00
Doug Evans 7c09e5a0f7 PR breakpoints/14643.
* linespec.c (struct ls_parser): New member keyword_ok.
	(linespec_lexer_lex_string): Add comment.
	(linespec_lexer_lex_one): Ignore keywords if it's the wrong place
	for one.
	(parse_linespec): Set keyword_ok.

	testsuite/
	* gdb.linespec/ls-errs.exp: Change tests of "b if|task|thread".
	* gdb.linespec/thread.c: New file.
	* gdb.linespec/thread.exp: New file.
2012-10-11 16:12:05 +00:00
Keith Seitz eff9c3e636 * linespec.c (linespec_lex_number): A number followed
by quotes is a valid number, too.

	* gdb.linespec/ls-errs.exp: Check some quote-enclosed
	linespecs.
2012-07-30 17:45:37 +00:00
Tom Tromey f91e3dc1b6 * gdb.linespec/ls-errs.exp: Use standard_testfile.
* gdb.linespec/ls-dollar.exp: Use standard_testfile.
	* gdb.linespec/linespec.exp: Use standard_testfile.
2012-06-25 20:31:21 +00:00
Keith Seitz f3b5e28044 PR breakpoints/13798 and mi/11541
* gdb.linespec/ls-errs.exp: Add a few more tests for
	filenames with spaces and colons.
2012-06-13 18:06:07 +00:00
Doug Evans 957df313b7 * Makefile.in (clean): Remove Fission .dwo and .dwp files.
* gdb.ada/Makefile.in (clean): Ditto.
	* gdb.arch/Makefile.in (clean): Ditto.
	* gdb.asm/Makefile.in (clean): Ditto.
	* gdb.base/Makefile.in (clean): Ditto.
	* gdb.cell/Makefile.in (clean): Ditto.
	* gdb.cp/Makefile.in (clean): Ditto.
	* gdb.disasm/Makefile.in (clean): Ditto.
	* gdb.dwarf2/Makefile.in (clean): Ditto.
	* gdb.fortran/Makefile.in (clean): Ditto.
	* gdb.go/Makefile.in (clean): Ditto.
	* gdb.hp/Makefile.in (clean): Ditto.
	* gdb.hp/gdb.aCC/Makefile.in (clean): Ditto.
	* gdb.hp/gdb.base-hp/Makefile.in (clean): Ditto.
	* gdb.hp/gdb.compat/Makefile.in (clean): Ditto.
	* gdb.hp/gdb.defects/Makefile.in (clean): Ditto.
	* gdb.hp/gdb.objdbg/Makefile.in (clean): Ditto.
	* gdb.java/Makefile.in (clean): Ditto.
	* gdb.linespec/Makefile.in (clean): Ditto.
	* gdb.mi/Makefile.in (clean): Ditto.
	* gdb.modula2/Makefile.in (clean): Ditto.
	* gdb.multi/Makefile.in (clean): Ditto.
	* gdb.objc/Makefile.in (clean): Ditto.
	* gdb.opencl/Makefile.in (clean): Ditto.
	* gdb.opt/Makefile.in (clean): Ditto.
	* gdb.pascal/Makefile.in (clean): Ditto.
	* gdb.python/Makefile.in (clean): Ditto.
	* gdb.reverse/Makefile.in (clean): Ditto.
	* gdb.server/Makefile.in (clean): Ditto.
	* gdb.stabs/Makefile.in (clean): Ditto.
	* gdb.threads/Makefile.in (clean): Ditto.
	* gdb.trace/Makefile.in (clean): Ditto.
	* gdb.xml/Makefile.in (clean): Ditto.
2012-05-17 19:03:59 +00:00
Keith Seitz 40e084e177 linespec rewrite:
* linespec.c (decode_compound): Remove.
	(enum offset_relative_sign): New enum.
	(struct line_offset): New struct.
	(struct linespec): New struct.
	(struct linespec_state): Move file_symtabs,
	user_filename, and user_function into struct linespec.
	Make result an anonymous struct holding vectors of
	symbolp and minsym_and_objfile_d.
	Add language member.
	(enum ls_token_type): New enum.
	(linespec_keywords): New array.
	(struct ls_token): New struct.
	(struct ls_parser): New struct.
	(linespec_lexer_lex_number): New function.
	(linespec_lexer_lex_keyword): New function.
	(is_ada_operator): New function.
	(skip_quote_char): New function.
	(copy_token_string): New function.
	(is_closing_quote_enclosed): New function.
	(find_parameter_list_end): New function.
	(linespec_lexer_lex_string): New function.
	(linespec_lexer_lex_one): New function.
	(linespec_lexer_consume_token): New function.
	(linespec_lexer_peek_token): New function.
	(cplusplus_error): Remove unused function.
	(find_methods): Update comment.
	(find_toplevel_char): Return const.
	(is_objc_method_format): Remove unused function.
	(find_toplevel_string): New function.
	(is_linespec_boundary): Remove.
	(symbol_not_found_error): New function.
	(find_method_overload_end): Remove function.
	(unexpected_linespec_error): New function.
	(keep_name_info): Remove.
	(linespec_parse_line_offset): New function.
	(linespec_parse_basic): New function.
	(canonicalize_linespec): New function.
	(decode_line_internal): Remove.
	(create_sals_line_offset): New function adapted from
	decode_all_digits.
	(convert_linespec_to_sals): New function.
	(parse_linespec): New function.
	(linespec_parser_new): New function.
	(linespec_state_destructor): Change parameter type to
	struct linespec_state *.
	Add language parameter.
	Remove freeing of moved members.
	(linespec_parser_delete): New function.
	(decode_line_full): Use parse_linespec and linespec_parser_new.
	(decode_line_1): Likewise.
	(decode_indirect): Rename to ...
	(linespec_expression_to_pc): ... this and rewrite
	to simply find CORE_ADDR, storing this result for later
	conversion to SALs.
	(locate_first_half): Remove.
	(deocde_objc): Add parameter LS.
	Initialize new struct collect_info members.
	Handle minimal symbols, too.
	(decode_compound): Delete.
	(lookup_prefix_sym): Rewrite.
	(compare_msymbols): New function.
	(find_method): Rewrite.
	Do not call cplusplus_error.
	(symtabs_from_filename): Rewrite.
	(collect_function_symbols): Delete.
	(find_function_symbols): Rewrite without ARGPTR-style
	processing.
	(decode_all_digits): Delete. (Rewritten as create_sals_line_offset.)
	(decode_dollar): Adapted and renamed to ...
	(linespec_parse_variable): ... this.
	(find_linespec_symbols): New function.
	(decode_label): Adapted and renamed to ...
	(find_label_symbols): ... this.
	(decode_digits_list_mode): Add and use LS argument.
	(decode_digits_ordinary): Likewise.
	(collect_symbols): Do not collect SALs, just symbols and msymbols.
	If in list mode, allow any symbol class.  Otherwise, only
	permit LOC_BLOCK symbols.
	(minsym_found): Update comments.
	(search_minsyms_for_name): Do not convert the matching symbol
	into a SAL.  Simply push the symbol and objfile into the
	result vector.
	(decode_variable): Delete. Contents adapted into
	find_linespec_symbols.

	* cp-support.c (SKIP_SPACE): Remove.
	(operator_tokens): Remove unused global.
	(cp_validate_operator): Remove.
	* cp-support.h (cp_validate_operator): Remove declaration.

	* gdb.base/advance.exp: Update error message for
	"advance malformed" test.
	* gdb.base/break.exp: Likewise for "breakpoint with
	trailing garbage" test.
	* gdb.base/hbreak2.exp: Likewise for "hardware breakpoint
	with trailing garbage" test.
	* gdb.base/jump.exp: Likewise for "jump with trailing
	argument junk" test.
	* gdb.base/sepdebug.exp: Likewise for "breakpoint with
	trailng garbage" test.
	* gdb.base/until.exp: Likewise for "malformed until" test.
	* gdb.cp/ovldbreak.exp: Create the breakpoint table
	for "breakpoint info (after setting on all)".
	* gdb.cp/userdef.exp: Remove quoting for "break A2::operator+"
	tests.
	* gdb.cp/cplabel.cc: New file.
	* gdb.cp/cplabel.exp: New test.
	* gdb.linespec/ls-errs.c: New file.
	* gdb.linespec/ls-errs.exp: New test.
2012-04-05 18:50:29 +00:00
Keith Seitz e2171b3cd2 * gdb.linespec/ls-dollar.cc: New file.
* gdb.linespec/ls-dollar.exp: New test.
2012-03-28 17:33:33 +00:00
Tom Tromey 4aac40c837 gdb
* NEWS: Add item.
	* symtab.h (compare_filenames_for_search): Declare.
	* symtab.c (compare_filenames_for_search): New function.
	(iterate_over_some_symtabs): Use it.
	* symfile.h (struct quick_symbol_functions)
	<map_symtabs_matching_filename>: Change spec.
	* psymtab.c (partial_map_symtabs_matching_filename): Use
	compare_filenames_for_search.  Update for new spec.
	* dwarf2read.c (dw2_map_symtabs_matching_filename): Use
	compare_filenames_for_search.  Update for new spec.
	* breakpoint.c (clear_command): Use compare_filenames_for_search.
gdb/doc
	* gdb.texinfo (Specify Location): Document relative file name
	handling.
gdb/testsuite
	* gdb.linespec/linespec.exp: Change some tests to use $decimal.
	Add tests for relative directory.
2012-01-16 20:40:53 +00:00
Joel Brobecker 0b30217134 Copyright year update in most files of the GDB Project.
gdb/ChangeLog:

        Copyright year update in most files of the GDB Project.
2012-01-04 08:17:56 +00:00
Jan Kratochvil da8cb7ec98 gdb/testsuite/
* gdb.linespec/linespec.exp: Compile using {c++}.
2011-12-24 23:54:20 +00:00
Tom Tromey f8eba3c616 the "ambiguous linespec" series
gdb
2011-12-06  Joel Brobecker  <brobecker@acacore.com>

        * language.h (struct language_defn): Add new component
        la_symbol_name_compare.
        * symfile.h (struct quick_symbol_functions): Update the profile
        of parameter "name_matcher" for the expand_symtabs_matching
        method.  Update the documentation accordingly.
        * ada-lang.h (ada_name_for_lookup): Add declaration.
        * ada-lang.c (ada_name_for_lookup): New function, extracted out
        from ada_iterate_over_symbols.
        (ada_iterate_over_symbols): Do not encode symbol name anymore.
        (ada_expand_partial_symbol_name): Adjust profile.
        (ada_language_defn): Add value for la_symbol_name_compare field.
        * linespec.c: #include "ada-lang.h".
        (iterate_name_matcher): Add language parameter. Replace call
        to strcmp_iw by call to language->la_symbol_name_compare.
        (decode_variable): Encode COPY if current language is Ada.
        * dwarf2read.c (dw2_expand_symtabs_matching): Adjust profile
        of name_matcher parameter.  Adjust call to name_matcher.
        * psymtab.c (expand_symtabs_matching_via_partial): Likewise.
        (expand_partial_symbol_names): Update profile of parameter "fun".
        * psymtab.h (expand_partial_symbol_names): Update profile of
        parameter "fun".
        * symtab.c (demangle_for_lookup): Update function documentation.
        (search_symbols_name_matches): Add language parameter.
        (expand_partial_symbol_name): Likewise.
        * c-lang.c (c_language_defn, cplus_language_defn)
        (asm_language_defn, minimal_language_defn): Add value for
        la_symbol_name_compare field.
        * d-lang.c (d_language_defn): Likewise.
        * f-lang.c (f_language_defn): Ditto.
        * jv-lang.c (java_language_defn): Ditto.
        * m2-lang.c (m2_language_defn): Ditto.
        * objc-lang.c (objc_language_defn): Ditto.
        * opencl-lang.c (opencl_language_defn): Ditto.
        * p-lang.c (pascal_language_defn): Ditto.
        * language.c (unknown_language_defn, auto_language_defn)
        (local_language_defn): Ditto.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* linespec.c (iterate_over_all_matching_symtabs): Use
	LA_ITERATE_OVER_SYMBOLS.
	(lookup_prefix_sym, add_matching_symbols_to_info): Likewise.
	(find_function_symbols, decode_variable): Remove Ada special
	case.
	* language.h (struct language_defn) <la_iterate_over_symbols>: New
	field.
	(LA_ITERATE_OVER_SYMBOLS): New macro.
	* language.c (unknown_language_defn, auto_language_defn)
	(local_language_defn): Update.
	* c-lang.c (c_language_defn, cplus_language_defn)
	(asm_language_defn, minimal_language_defn): Update.
	* d-lang.c (d_language_defn): Update.
	* f-lang.c (f_language_defn): Update.
	* jv-lang.c (java_language_defn): Update.
	* m2-lang.c (m2_language_defn): Update.
	* objc-lang.c (objc_language_defn): Update.
	* opencl-lang.c (opencl_language_defn): Update.
	* p-lang.c (pascal_language_defn): Update.
	* ada-lang.c (ada_iterate_over_symbols): New function.
	(ada_language_defn): Update.

2011-12-06  Tom Tromey  <tromey@redhat.com>
	    Joel Brobecker  <brobecker@acacore.com>

	PR breakpoints/13105, PR objc/8341, PR objc/8343, PR objc/8366,
	PR objc/8535, PR breakpoints/11657, PR breakpoints/11970,
	PR breakpoints/12023, PR breakpoints/12334, PR breakpoints/12856,
	PR shlibs/8929, PR shlibs/7393:
	* python/py-type.c (compare_maybe_null_strings): Rename from
	compare_strings.
	(check_types_equal): Update.
	* utils.c (compare_strings): New function.
	* tui/tui-winsource.c (tui_update_breakpoint_info): Update for
	location changes.
	* tracepoint.c (scope_info): Update.
	(trace_find_line_command): Use DECODE_LINE_FUNFIRSTLINE.
	* symtab.h (iterate_over_minimal_symbols)
	(iterate_over_some_symtabs, iterate_over_symtabs)
	(find_pcs_for_symtab_line, iterate_over_symbols)
	(demangle_for_lookup): Declare.
	(expand_line_sal): Remove.
	* symtab.c (iterate_over_some_symtabs, iterate_over_symtabs)
	(lookup_symtab_callback): New functions.
	(lookup_symtab): Rewrite.
	(demangle_for_lookup): New function, extract from
	lookup_symbol_in_language.
	(lookup_symbol_in_language): Use it.
	(iterate_over_symbols): New function.
	(find_line_symtab): Update.
	(find_pcs_for_symtab_line): New functions.
	(find_line_common): Add 'start' argument.
	(decode_line_spec): Update.  Change argument to 'flags', change
	interpretation.
	(append_expanded_sal): Remove.
	(append_exact_match_to_sals): Remove.
	(expand_line_sal): Remove.
	* symfile.h (struct quick_symbol_functions) <lookup_symtab>:
	Remove.
	<map_symtabs_matching_filename>: New field.
	* stack.c (func_command): Only look in the current program space.
	Use DECODE_LINE_FUNFIRSTLINE.
	* source.c (line_info): Set pspace on sal.  Check program space in
	the loop.  Use DECODE_LINE_LIST_MODE.
	(select_source_symtab): Use DECODE_LINE_FUNFIRSTLINE.
	* solib-target.c: Remove DEF_VEC_I(CORE_ADDR).
	* python/python.c (gdbpy_decode_line): Update.
	* psymtab.c (partial_map_expand_apply): New function.
	(partial_map_symtabs_matching_filename): Rename from
	lookup_partial_symbol.  Update arguments.
	(lookup_symtab_via_partial_symtab): Remove.
	(psym_functions): Update.
	* objc-lang.h (parse_selector, parse_method): Don't declare.
	(find_imps): Update.
	* objc-lang.c (parse_selector, parse_method): Now static.
	(find_methods): Change arguments.  Fill in a vector of symbol
	names.
	(uniquify_strings): New function.
	(find_imps): Change arguments.
	* minsyms.c (iterate_over_minimal_symbols): New function.
	* linespec.h (enum decode_line_flags): New.
	(struct linespec_sals): New.
	(struct linespec_result) <canonical>: Remove.
	<pre_expanded, addr_string, sals>: New fields.
	(destroy_linespec_result, make_cleanup_destroy_linespec_result)
	(decode_line_full): Declare.
	(decode_line_1): Update.
	* linespec.c (struct address_entry, struct linespec_state, struct
	collect_info): New types.
	(add_sal_to_sals_basic, add_sal_to_sals, hash_address_entry)
	(eq_address_entry, maybe_add_address): New functions.
	(total_number_of_methods): Remove.
	(iterate_name_matcher, iterate_over_all_matching_symtabs): New
	functions.
	(find_methods): Change arguments.  Don't canonicalize input.
	Simplify logic.
	(add_matching_methods, add_constructors)
	(build_canonical_line_spec): Remove.
	(filter_results, convert_results_to_lsals): New functions.
	(decode_line_2): Change arguments.  Rewrite for new data
	structures.
	(decode_line_internal): Rename from decode_line_1.  Change
	arguments.  Add cleanups.  Update for new data structures.
	(linespec_state_constructor, linespec_state_destructor)
	(decode_line_full, decode_line_1): New functions.
	(decode_indirect): Change arguments.  Update.
	(locate_first_half): Use skip_spaces.
	(decode_objc): Change arguments.  Update for new data structures.
	Simplify logic.
	(decode_compound): Change arguments.  Add cleanups.  Remove
	fallback code, replace with error.
	(struct decode_compound_collector): New type.
	(collect_one_symbol): New function.
	(lookup_prefix_sym): Change arguments.  Update.
	(compare_symbol_name, add_all_symbol_names_from_pspace)
	(find_superclass_methods ): New functions.
	(find_method): Rewrite.
	(struct symtab_collector): New type.
	(add_symtabs_to_list, collect_symtabs_from_filename): New
	functions.
	(symtabs_from_filename): Change API.  Rename from
	symtab_from_filename.
	(collect_function_symbols): New function.
	(find_function_symbols): Change API.  Rename from
	find_function_symbol.  Rewrite.
	(decode_all_digits): Change arguments.  Rewrite.
	(decode_dollar): Change arguments.  Use decode_variable.
	(decode_label): Change arguments.  Rewrite.
	(collect_symbols): New function.
	(minsym_found): Change arguments.  Rewrite.
	(check_minsym, search_minsyms_for_name)
	(add_matching_symbols_to_info): New function.
	(decode_variable): Change arguments.  Iterate over all symbols.
	(symbol_found): Remove.
	(symbol_to_sal): New function.
	(init_linespec_result, destroy_linespec_result)
	(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
	New functions.
	(decode_digits_list_mode, decode_digits_ordinary): New functions.
	* dwarf2read.c (dw2_map_expand_apply): New function.
	(dw2_map_symtabs_matching_filename): Rename from
	dw2_lookup_symtab.  Change arguments.
	(dwarf2_gdb_index_functions): Update.
	* dwarf2loc.c: Remove DEF_VEC_I(CORE_ADDR).
	* defs.h (compare_strings): Declare.
	* cli/cli-cmds.c (compare_strings): Move to utils.c.
	(edit_command, list_command): Use DECODE_LINE_LIST_MODE.  Call
	filter_sals.
	(compare_symtabs, filter_sals): New functions.
	* breakpoint.h (struct bp_location) <line_number, source_file>:
	New fields.
	(struct breakpoint) <line_number, source_file>: Remove.
	<filter>: New field.
	* breakpoint.c (print_breakpoint_location, init_raw_breakpoint)
	(momentary_breakpoint_from_master, add_location_to_breakpoint):
	Update for changes to locations.
	(init_breakpoint_sal): Add 'filter' argument.  Set 'filter' on
	breakpoint.
	(create_breakpoint_sal): Add 'filter' argument.
	(remove_sal, expand_line_sal_maybe): Remove.
	(create_breakpoints_sal): Remove 'sals' argument.  Handle
	pre-expanded sals and the filter.
	(parse_breakpoint_sals): Use decode_line_full.
	(check_fast_tracepoint_sals): Use get_sal_arch.
	(create_breakpoint): Create a linespec_sals.  Update.
	(break_range_command): Use decode_line_full.  Update.
	(until_break_command): Update.
	(clear_command): Update match conditions for linespec.c changes.
	Use DECODE_LINE_LIST_MODE.
	(say_where): Update for changes to locations.
	(bp_location_dtor): Free 'source_file'.
	(base_breakpoint_dtor): Free 'filter'.  Don't free 'source_file'.
	(update_static_tracepoint): Update for changes to locations.
	(update_breakpoint_locations): Disable ranged breakpoint if too
	many locations match.  Update.
	(addr_string_to_sals): Use decode_line_full.  Resolve all sal
	PCs.
	(breakpoint_re_set_default): Don't call expand_line_sal_maybe.
	(decode_line_spec_1): Update.  Change argument name to 'flags',
	change interpretation.
	* block.h (block_containing_function): Declare.
	* block.c (block_containing_function): New function.
	* skip.c (skip_function_command): Update.
	(skip_re_set): Update.
	* infcmd.c (jump_command): Use DECODE_LINE_FUNFIRSTLINE.
	* mi/mi-main.c (mi_cmd_trace_find): Use DECODE_LINE_FUNFIRSTLINE.
	* NEWS: Add entry.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* elfread.c (elf_gnu_ifunc_resolver_return_stop): Allow
	breakpoint's pspace to be NULL.
	* breakpoint.h (struct breakpoint) <pspace>: Update comment.
	* breakpoint.c (init_raw_breakpoint): Conditionally set
	breakpoint's pspace.
	(init_breakpoint_sal): Don't set breakpoint's pspace.
	(prepare_re_set_context): Conditionally switch program space.
	(addr_string_to_sals): Check executing_startup on location's
	program space.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* breakpoint.h (enum enable_state) <bp_startup_disabled>: Remove.
	* breakpoint.c (should_be_inserted): Explicitly check if program
	space is executing startup.
	(describe_other_breakpoints): Update.
	(disable_breakpoints_before_startup): Change executing_startup
	earlier.  Remove loop.
	(enable_breakpoints_after_startup): Likewise.
	(init_breakpoint_sal): Don't use bp_startup_disabled.
	(create_breakpoint): Don't use bp_startup_disabled.
	(update_global_location_list): Use should_be_inserted.
	(bkpt_re_set): Update.
gdb/testsuite
2011-12-06  Joel Brobecker  <brobecker@acacore.com>

        * gdb.ada/fullname_bp.exp: Add tests for other valid linespecs
        involving a fully qualified function name.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* gdb.ada/homonym.exp: Add three breakpoint tests.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* gdb.base/solib-weak.exp (do_test): Remove kfail.
	* gdb.trace/tracecmd.exp: Disable pending breakpoints earlier.
	* gdb.objc/objcdecode.exp: Update for output changes.
	* gdb.linespec/linespec.exp: New file.
	* gdb.linespec/lspec.cc: New file.
	* gdb.linespec/lspec.h: New file.
	* gdb.linespec/body.h: New file.
	* gdb.linespec/base/two/thefile.cc: New file.
	* gdb.linespec/base/one/thefile.cc: New file.
	* gdb.linespec/Makefile.in: New file.
	* gdb.cp/templates.exp (test_template_breakpoints): Update for
	output changes.
	* gdb.cp/re-set-overloaded.exp: Remove kfail.
	* gdb.cp/ovldbreak.exp: Update for output changes.  "all" test now
	makes one breakpoint.
	* gdb.cp/method2.exp (test_break): Update for output changes.
	* gdb.cp/mb-templates.exp: Update for output changes.
	* gdb.cp/mb-inline.exp: Update for output changes.
	* gdb.cp/mb-ctor.exp: Update for output changes.
	* gdb.cp/ovsrch.exp: Use fully-qualified names.
	* gdb.base/solib-symbol.exp: Run to main later.  Breakpoint now
	has multiple matches.
	* gdb.base/sepdebug.exp: Disable pending breakpoints.  Update for
	error message change.
	* gdb.base/list.exp (test_list_filename_and_number): Update for
	error message change.
	* gdb.base/break.exp: Disable pending breakpoints.  Update for
	output changes.
	* configure.ac: Add gdb.linespec.
	* configure: Rebuild.
	* Makefile.in (ALL_SUBDIRS): Add gdb.linespec.
gdb/doc
2011-12-06  Tom Tromey  <tromey@redhat.com>

	* gdb.texinfo (Set Breaks): Update for new behavior.
2011-12-06 18:54:43 +00:00