[gdb/testsuite] Fix gdb.fortran/info-modules.exp with gcc-4.8
authorTom de Vries <tdevries@suse.de>
Thu, 30 Jul 2020 15:47:37 +0000 (17:47 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 30 Jul 2020 15:47:37 +0000 (17:47 +0200)
commite12dcc50da18ef4382c02d1f2bb1541251cce45e
treee5489802066f8d512ed98a1a3bb644ffda03001e
parent3f853ba38317e5204b8c0465233e4bf5f1f46fba
[gdb/testsuite] Fix gdb.fortran/info-modules.exp with gcc-4.8

When running test-case gdb.fortran/info-modules.exp with gfortran 4.8.5, I
get:
...
FAIL: gdb.fortran/info-modules.exp: info module functions: \
  check for entry 'info-types.f90', '35', \
  'void mod1::__copy_mod1_M1t1\(Type m1t1, Type m1t1\);'
FAIL: gdb.fortran/info-modules.exp: info module functions -m mod1: \
  check for entry 'info-types.f90', '35', \
  'void mod1::__copy_mod1_M1t1\(Type m1t1, Type m1t1\);'
FAIL: gdb.fortran/info-modules.exp: info module variables: \
  check for entry 'info-types.f90', '(35)?', \
  'Type m1t1 mod1::__def_init_mod1_M1t1;'
FAIL: gdb.fortran/info-modules.exp: info module variables: \
  check for entry 'info-types.f90', '(35)?', \
  'Type __vtype_mod1_M1t1 mod1::__vtab_mod1_M1t1;'
...

With gfortran 7.5.0, we have:
...
$ readelf -wi info-modules | egrep "DW_AT_name.*(copy|def_init|vtype)_mod1"
    <286>   DW_AT_name        : __def_init_mod1_M1t1
    <29f>   DW_AT_name        : __vtype_mod1_M1t1
    <3de>   DW_AT_name        : __copy_mod1_M1t1
$
...
but with gfortran 4.8.5:
...
$ readelf -wi info-modules | egrep "DW_AT_name.*(copy|def_init|vtype)_mod1"
$
...

Fix this by allowing these module functions and variables to be missing.

Tested on x86_64-linux with gcc 4.8.5 and gcc 7.5.0.

gdb/testsuite/ChangeLog:

2020-07-30  Tom de Vries  <tdevries@suse.de>

* lib/sym-info-cmds.exp (GDBInfoModuleSymbols::check_entry_1): Factor
out of ...
(GDBInfoModuleSymbols::check_entry): ... here.
(GDBInfoModuleSymbols::check_optional_entry): New proc.
* gdb.fortran/info-modules.exp: Use check_optional_entry for entries
related to __def_init_mod1_M1t1 / __vtype_mod1_M1t1 / __copy_mod1_M1t1.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.fortran/info-modules.exp
gdb/testsuite/lib/sym-info-cmds.exp