From: Simon Marchi Date: Fri, 22 Apr 2022 13:16:59 +0000 (-0400) Subject: gdb/testsuite: use with_cwd where possible X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=019a5c62974523a3331911130c66350ef0a6f3c4;p=binutils-gdb.git gdb/testsuite: use with_cwd where possible I learned about with_cwd today. I spotted a few spots that could use it, to make the code more robust. Change-Id: Ia23664cb827f25e79d31948e0c006a8dc61c33e1 --- diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index 34a16af1491..0c58a1ab6b7 100644 --- a/gdb/testsuite/gdb.base/completion.exp +++ b/gdb/testsuite/gdb.base/completion.exp @@ -675,10 +675,9 @@ gdb_test "complete whatis &values\[0\]->z" \ # ${srcdir} may be a relative path. We want to make sure we end up # in the right directory - so make sure we know where it is. -set mydir [pwd] -cd ${srcdir} -set fullsrcdir [pwd] -cd ${mydir} +with_cwd $srcdir { + set fullsrcdir [pwd] +} # If the directory name contains a '+' we must escape it, adding a backslash. # If not, the test below will fail because it will interpret the '+' as a diff --git a/gdb/testsuite/gdb.base/fullname.exp b/gdb/testsuite/gdb.base/fullname.exp index a264dc75322..f9faca87423 100644 --- a/gdb/testsuite/gdb.base/fullname.exp +++ b/gdb/testsuite/gdb.base/fullname.exp @@ -99,14 +99,12 @@ if { [gdb_breakpoint [standard_output_file tmp-${srcfile}]:${line} {no-message}] # Build the test executable using relative paths not relative to the directory # we'll run GDB from. -set save_pwd [pwd] -cd [standard_output_file {}] -if { [gdb_compile [standard_output_file tmp-${srcfile}] "${testfile}" \ - executable {debug}] != "" } { - cd $save_pwd - return -1 +with_cwd [standard_output_file {}] { + if { [gdb_compile [standard_output_file tmp-${srcfile}] "${testfile}" \ + executable {debug}] != "" } { + return -1 + } } -cd $save_pwd gdb_exit gdb_start diff --git a/gdb/testsuite/gdb.base/fullpath-expand.exp b/gdb/testsuite/gdb.base/fullpath-expand.exp index efa8d63b1d4..b3890244997 100644 --- a/gdb/testsuite/gdb.base/fullpath-expand.exp +++ b/gdb/testsuite/gdb.base/fullpath-expand.exp @@ -25,13 +25,13 @@ if { [file pathtype $objdir] != "absolute" } { return -1 } -set saved_pwd [pwd] -cd $srcdir -set err [gdb_compile "${subdir}/${srcfile} ${subdir}/${srcfile2}" $binfile executable {debug}] -cd $saved_pwd -if { $err != "" } { - untested "${srcfile} or ${srcfile2} compilation failed" - return -1 +with_cwd $srcdir { + set err [gdb_compile "${subdir}/${srcfile} ${subdir}/${srcfile2}" $binfile executable {debug}] + + if { $err != "" } { + untested "${srcfile} or ${srcfile2} compilation failed" + return -1 + } } set result [catch "exec realpath ${srcdir}/${subdir}/${srcfile2}" realsrcfile2] diff --git a/gdb/testsuite/gdb.base/settings.exp b/gdb/testsuite/gdb.base/settings.exp index efd7f17d5cf..dafc5e4d8fd 100644 --- a/gdb/testsuite/gdb.base/settings.exp +++ b/gdb/testsuite/gdb.base/settings.exp @@ -585,11 +585,9 @@ proc test-string {variant} { # ${srcdir} may be a relative path. We want to make sure we # end up in the right directory - so make sure we know where # it is. - global srcdir - set mydir [pwd] - cd ${srcdir} - set fullsrcdir [pwd] - cd ${mydir} + with_cwd $::srcdir { + set fullsrcdir [pwd] + } gdb_test "cd ${fullsrcdir}" \ "Working directory [string_to_regexp ${fullsrcdir}].*" \ diff --git a/gdb/testsuite/gdb.base/source-dir.exp b/gdb/testsuite/gdb.base/source-dir.exp index 21d4831688f..fff1c1f8717 100644 --- a/gdb/testsuite/gdb.base/source-dir.exp +++ b/gdb/testsuite/gdb.base/source-dir.exp @@ -87,31 +87,28 @@ proc test_truncated_comp_dir {} { return } - set original_dir [pwd] set working_dir [standard_output_file ""] - cd ${working_dir} - - set strip_dir [file normalize "${working_dir}/../.."] - - set new_srcfile [standard_output_file ${srcfile}] - set fd [open "$new_srcfile" w] - puts $fd "int - main () - { - return 0; - }" - close $fd - - set options \ - "debug additional_flags=-fdebug-prefix-map=${strip_dir}=" - if { [gdb_compile "${srcfile}" "${binfile}" \ - executable ${options}] != "" } { - untested "failed to compile" - return -1 + with_cwd $working_dir { + set strip_dir [file normalize "${working_dir}/../.."] + + set new_srcfile [standard_output_file ${srcfile}] + set fd [open "$new_srcfile" w] + puts $fd "int + main () + { + return 0; + }" + close $fd + + set options \ + "debug additional_flags=-fdebug-prefix-map=${strip_dir}=" + if { [gdb_compile "${srcfile}" "${binfile}" \ + executable ${options}] != "" } { + untested "failed to compile" + return -1 + } } - cd ${original_dir} - clean_restart ${binfile} if { [ishost *-*-mingw*] } { diff --git a/gdb/testsuite/gdb.linespec/break-ask.exp b/gdb/testsuite/gdb.linespec/break-ask.exp index d73172de596..120c399acf2 100644 --- a/gdb/testsuite/gdb.linespec/break-ask.exp +++ b/gdb/testsuite/gdb.linespec/break-ask.exp @@ -28,16 +28,19 @@ if { [file pathtype $objdir] == "relative" } { untested "objdir $objdir should be absolute" return } -set saved_pwd [pwd] -cd $srcdir/${subdir}/base/one -set err1 [gdb_compile "thefile.cc" $objfile1 object $opts] -cd $saved_pwd -cd $srcdir/${subdir}/base/two -set err2 [gdb_compile "thefile.cc" $objfile2 object $opts] -cd $saved_pwd -if { $err1 != "" || $err2 != "" } { - untested "compilation failed" - return -1 + +with_cwd $srcdir/${subdir}/base/one { + if { [gdb_compile "thefile.cc" $objfile1 object $opts] != "" } { + untested "compilation failed" + return + } +} + +with_cwd $srcdir/${subdir}/base/two { + if { [gdb_compile "thefile.cc" $objfile2 object $opts] != "" } { + untested "compilation failed" + return + } } if { [gdb_compile "$srcdir/${subdir}/$srcfile $objfile1 $objfile2" \ diff --git a/gdb/testsuite/gdb.linespec/macro-relative.exp b/gdb/testsuite/gdb.linespec/macro-relative.exp index 609f290d8fb..67b779f5896 100644 --- a/gdb/testsuite/gdb.linespec/macro-relative.exp +++ b/gdb/testsuite/gdb.linespec/macro-relative.exp @@ -32,13 +32,12 @@ if { [file pathtype $objdir] == "relative" } { untested "objdir $objdir should be absolute" return } -set saved_pwd [pwd] -cd $srcdir/${subdir}/base/two -set err [gdb_compile "../../${srcfile}" "${binfile}" executable $opts] -cd $saved_pwd -if { $err != "" } { - untested "compilation failed" - return -1 + +with_cwd $srcdir/${subdir}/base/two { + if { [gdb_compile "../../${srcfile}" "${binfile}" executable $opts] != "" } { + untested "compilation failed" + return + } } clean_restart ${testfile} diff --git a/gdb/testsuite/lib/ada.exp b/gdb/testsuite/lib/ada.exp index 67581c89008..25f8193c974 100644 --- a/gdb/testsuite/lib/ada.exp +++ b/gdb/testsuite/lib/ada.exp @@ -18,8 +18,6 @@ # BUILDDIR. proc target_compile_ada_from_dir {builddir source dest type options} { - set saved_cwd [pwd] - global board set board [target_info name] set save_multilib_flag [board_info $board multilib_flags] @@ -39,10 +37,10 @@ proc target_compile_ada_from_dir {builddir source dest type options} { } catch { - cd $builddir - return [target_compile $source $dest $type $options] + with_cwd $builddir { + return [target_compile $source $dest $type $options] + } } result options - cd $saved_cwd if { $save_multilib_flag != "" } { unset_board_info "multilib_flags"