A given target can now declare which gdb architecture it requires.
Also, we add the code to check gdb capabilities, and version.
Tests can use gdb_version.version_compare('>=X.Y') to test this.Signed-off-by: Pierrick Bouvier <[email protected]> --- tests/tcg/meson.build | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build index a47f1ada779..1496cba460c 100644 --- a/tests/tcg/meson.build +++ b/tests/tcg/meson.build @@ -1,5 +1,11 @@ env = find_program('env') +gdb_progs = ['gdb-multiarch', 'gdb'] +if config_host.has_key('GDB') + gdb_progs = [config_host['GDB'], gdb_progs] +endif +gdb = find_program(gdb_progs, required: false) + tcg_tests = {} # tcg_tests is a dictionary with following structure: # @@ -7,6 +13,7 @@ tcg_tests = {} # 'name_of_target': { # 'cc': cross_compiler, # 'folder': 'folder_for_test_src_files', +# 'gdb_arch': 'gdb architecture requirement', # 'qemu': emulators['qemu-...'], # 'tests': [ # { @@ -33,6 +40,18 @@ tcg_tests = {} # is guaranteed to be unique also. They can be duplicated by setting 'test_name'. # Default name is derived from src if 'exe_name' and 'test_name' are omitted. +gdb_arch_supported = {} +gdb_version = '0' +if gdb.found() + gdb_version = gdb.version() + gdb_arch = run_command(python, files('../../scripts/probe-gdb-support.py'), + gdb, + check: true) + foreach arch: gdb_arch.stdout().split() + gdb_arch_supported += {arch: true} + endforeach +endif + # plugins come first, as we need to build the list test_plugins = {} subdir('plugins') @@ -46,13 +65,14 @@ foreach target, plan: tcg_tests # return a clear error if user mispell a target entry foreach key, _ : plan - if key not in ['cc', 'folder', 'qemu', 'tests'] + if key not in ['cc', 'folder', 'gdb_arch', 'qemu', 'tests'] error('unknown tcg test plan entry \'' + key + '\' for target ' + target) endif endforeach cc = plan['cc'] folder = plan['folder'] + gdb_arch = plan['gdb_arch'] qemu = plan['qemu'] tests = plan['tests'] -- 2.43.0
