8sa1-binutils-gdb/gdb/testsuite/lib
Shahab Vahedi 24ac169ac5 gdb/testsuite: Regenerate the testglue if it is not in
For running the  DejaGnu  tests,  some  esoteric  configurations
may require a testglue.   This,  for  instance,  is  true  about
testing ARC  targets  which  uses  its  own  DejaGnu  board  and
a simulator which does not support returning the program's  exit
code.  Therefore, for those  tests  that  use  "gdb_compile",  a
"gdb_tg.o"  file  is  compiled  and  linked   into   the   final
executable.

There  are  tests  that  invoke  "gdb_compile"  from   different
directories.   Let's  take  a   look   at   an   example   test:
gdb.base/fullname.exp.  The purpose of this  test  is  to  build
the executable from different directories (absolute vs. relative
vs.  other) and then check if gdb can handle setting breakpoints
accordingly.

When  "gdb_compile"  generates  the  "gdb_tg.o",  it  does   not
do it again  for  the  same  test.   Although  this  might  seem
efficient, it can lead to  problems  when  changing  directories
before the next compile:

  gdb compile failed, arc-elf32-gcc: error: gdb_tg.o:
  No such file or directory

This patch checks if the wrapper file ("gdb_tg.o") is  still  in
reach and if it is not, it will stimulate  the  regeneration  of
the wrapper.

It is worth mentioning that GCC's  DejaGnu  tests  handle  these
scenarios as well and they seem to be more efficient in doing so
by saving the library paths and manipulating them  if  necessary
[1].  However, for GDB tests, that  require  less  compilations,
I think the proposed solution should be fine compared to a  more
full fledged solution from GCC.  The glue file in  our  case  is
only 2 KiB.

Last but not least, I ran the x86_64 tests on an x86_64 host and
found no regression.

[1]
Avid  coders  may  look  for  "set_ld_library_path_env_vars"  in
gcc/testsuite/lib/target-libpath.exp.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_wrapper_init): Reset
	"gdb_wrapper_initialized" to 0 if "wrapper_file" does
	not exist.
2020-02-21 09:59:30 +01:00
..
ada.exp [gdb/testsuite] Handle missing gnatmake in gnat_runtime_has_debug_info 2020-02-18 10:18:36 +01:00
append_gdb_boards_dir.exp
build-piece.exp
cache.exp [gdb/testsuite] Ignore pass in gdb_caching_proc 2020-02-19 07:05:13 +01:00
cl_util.c
cl_util.h
compile-support.exp
compiler.c
compiler.cc
completion-support.exp
cp-support.exp
d-support.exp
data-structures.exp
dtrace.exp [gdb/testsuite] Be quiet about untested dtrace-prob.exp 2020-02-19 00:05:40 +01:00
dwarf.exp gdb/testsuite: Allow DWARF assembler to create multiple line tables 2020-01-13 23:56:02 +00:00
fortran.exp gdb/fortran: Allow for using Flang in Fortran testing 2020-02-04 17:17:20 +00:00
future.exp
gdb-guile.exp
gdb-python.exp
gdb-utils.exp
gdb.exp gdb/testsuite: Regenerate the testglue if it is not in 2020-02-21 09:59:30 +01:00
gdbserver-support.exp Have testsuite find gdbserver in new location 2020-02-14 14:14:38 -07:00
gen-perf-test.exp
gnat_debug_info_test.adb
go.exp
memory.exp
mi-support.exp
objc.exp
opencl_hostapp.c
opencl_kernel.cl
opencl.exp
pascal.exp
pdtrace.in
perftest.exp
prelink-support.exp
prompt.exp
range-stepping-support.exp
read1.c
rust-support.exp
selftest-support.exp
set_unbuffered_mode.c
sym-info-cmds.exp
trace-support.exp
tuiterm.exp
unbuffer_output.c
valgrind.exp