Message ID | 87o7ob2usn.fsf@euler.schwinge.homeip.net |
---|---|
State | New |
Headers | show |
Series | 'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899] (was: [PATCH] testsuite: Fix up modules.exp [PR108899]) | expand |
On Mar 29, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: > I assume that the second UNSUPPORTED: > -UNSUPPORTED: g++.dg/modules/explicit-bool-1_b.C -std=c++17 > ... disappears is the intention of this patch? Yup > But surely the curly braces in: > -UNSUPPORTED: g++.dg/modules/explicit-bool-1_a.H -std=c++17 > +UNSUPPORTED: {g++.dg/modules/explicit-bool-1_a.H -std=c++17} > ... are not intentional? (Alexandre?) Unintended indeed, will look, thanks for letting me know > But worse, the latter also "bleeds into" all other testing Eeek Yeah, that's a much bigger problem indeed. > ..., this isn't sufficient. Instead, we should undo the 'rename' at the > end of 'g++.dg/modules/modules.exp'. OK to push the attached > "'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899]" > after proper testing? Ooh, nice, I didn't know how to drop the renaming after we were done with it, and hoped the end of the .exp would have accomplished that by ending a scope. Jakub had already pointed out this wasn't the case, but I didn't realize, when he did, that this would carry over onto other modules. If we're dropping the renaming, I suppose we could also revert Jakub's change. I suppose this patch will take care of it, pending testing... diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp index 80aa392bc7f3b..6fd5050cef79b 100644 --- a/gcc/testsuite/g++.dg/modules/modules.exp +++ b/gcc/testsuite/g++.dg/modules/modules.exp @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] # so that, after an unsupported result in dg-test, we can skip rather # than fail subsequent related tests. set module_do {"compile" "P"} -if { [info procs unsupported] != [list] \ - && [info procs saved-unsupported] == [list] } { - rename unsupported saved-unsupported - - proc unsupported { args } { - global module_do - lset module_do 1 "N" - return [saved-unsupported $args] - } +rename unsupported modules-saved-unsupported +proc unsupported { args } { + global module_do + lset module_do 1 "N" + return [eval modules-saved-unsupported $args] } # not grouped tests, sadly tcl doesn't have negated glob @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { } } +# Restore the original unsupported proc, lest it will affect +# subsequent test runs, or even fail renaming if we run modules.exp +# for multiple targets/multilibs/options. +rename unsupported {} +rename modules-saved-unsupported unsupported + dg-finish
Hi! On 2023-03-30T04:00:03-0300, Alexandre Oliva <oliva@adacore.com> wrote: > On Mar 29, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: >> But surely the curly braces in: > >> -UNSUPPORTED: g++.dg/modules/explicit-bool-1_a.H -std=c++17 > >> +UNSUPPORTED: {g++.dg/modules/explicit-bool-1_a.H -std=c++17} > >> ... are not intentional? (Alexandre?) > > Unintended indeed, will look, thanks for letting me know > > >> But worse, the latter also "bleeds into" all other testing > > Eeek > > Yeah, that's a much bigger problem indeed. > >> ..., this isn't sufficient. Instead, we should undo the 'rename' at the >> end of 'g++.dg/modules/modules.exp'. OK to push the attached >> "'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899]" >> after proper testing? > > Ooh, nice, I didn't know how to drop the renaming after we were done > with it, and hoped the end of the .exp would have accomplished that by > ending a scope. Jakub had already pointed out this wasn't the case, but > I didn't realize, when he did, that this would carry over onto other > modules. > > If we're dropping the renaming, I suppose we could also revert Jakub's > change. Yes, my plan was to push a 'git revert' of Jakub's change as a follow-up (clean-up) *after* my proposed "'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899]", see attached again. My testing has completed without issues; OK to push that one? > +# Restore the original unsupported proc, lest it will affect > +# subsequent test runs, or even fail renaming if we run modules.exp > +# for multiple targets/multilibs/options. > +rename unsupported {} > +rename modules-saved-unsupported unsupported Should I incorporate that comment instead of my simpler one? Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
On Mar 30, 2023, Alexandre Oliva <oliva@adacore.com> wrote: > If we're dropping the renaming, I suppose we could also revert Jakub's > change. I suppose this patch will take care of it, pending testing... Regstrapped on x86_64-linux-gnu and also tested on arm-vx7r2 (with gcc-12), where I used to get fails after an unsupported modules.exp test, but there are no curly braces in the log files after the patch. Ok to install? [PR108899] testsuite: fix proc unsupported overriding in modules.exp The overrider of proc unsupported in modules.exp had two problems reported by Thomas Schwinge, even after Jakub Jelínek's fix: - it remained in effect while running other dejagnu testsets - it didn't quote correctly the argument list passed to it, which caused test names to be surrounded by curly braces, as in: UNSUPPORTED: {...} This patch fixes both issues, obsoleting and reverting Jakub's change, by dropping the overrider and renaming the saved proc back, and by using uplevel's argument list splicing. for gcc/testsuite/ChangeLog PR testsuite/108899 * g++.dg/modules/modules.exp (unsupported): Drop renaming. Fix quoting. --- gcc/testsuite/g++.dg/modules/modules.exp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp index 80aa392bc7f3b..dc302d3d0af48 100644 --- a/gcc/testsuite/g++.dg/modules/modules.exp +++ b/gcc/testsuite/g++.dg/modules/modules.exp @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] # so that, after an unsupported result in dg-test, we can skip rather # than fail subsequent related tests. set module_do {"compile" "P"} -if { [info procs unsupported] != [list] \ - && [info procs saved-unsupported] == [list] } { - rename unsupported saved-unsupported - - proc unsupported { args } { - global module_do - lset module_do 1 "N" - return [saved-unsupported $args] - } +rename unsupported modules-saved-unsupported +proc unsupported { args } { + global module_do + lset module_do 1 "N" + return [uplevel 1 modules-saved-unsupported $args] } # not grouped tests, sadly tcl doesn't have negated glob @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { } } +# Restore the original unsupported proc, lest it will affect +# subsequent test runs, or even fail renaming if we run modules.exp +# for multiple targets/multilibs/options. +rename unsupported {} +rename modules-saved-unsupported unsupported + dg-finish
On 3/30/23 09:51, Alexandre Oliva wrote: > On Mar 30, 2023, Alexandre Oliva <oliva@adacore.com> wrote: > >> If we're dropping the renaming, I suppose we could also revert Jakub's >> change. I suppose this patch will take care of it, pending testing... > > Regstrapped on x86_64-linux-gnu and also tested on arm-vx7r2 (with > gcc-12), where I used to get fails after an unsupported modules.exp > test, but there are no curly braces in the log files after the patch. > Ok to install? > > > [PR108899] testsuite: fix proc unsupported overriding in modules.exp The [PR] tag should go at the end of the subject line, not the start. OK with that change. > The overrider of proc unsupported in modules.exp had two problems > reported by Thomas Schwinge, even after Jakub Jelínek's fix: > > - it remained in effect while running other dejagnu testsets > > - it didn't quote correctly the argument list passed to it, which > caused test names to be surrounded by curly braces, as in: > > UNSUPPORTED: {...} > > This patch fixes both issues, obsoleting and reverting Jakub's change, > by dropping the overrider and renaming the saved proc back, and by > using uplevel's argument list splicing. > > > for gcc/testsuite/ChangeLog > > PR testsuite/108899 > * g++.dg/modules/modules.exp (unsupported): Drop renaming. > Fix quoting. > --- > gcc/testsuite/g++.dg/modules/modules.exp | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp > index 80aa392bc7f3b..dc302d3d0af48 100644 > --- a/gcc/testsuite/g++.dg/modules/modules.exp > +++ b/gcc/testsuite/g++.dg/modules/modules.exp > @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] > # so that, after an unsupported result in dg-test, we can skip rather > # than fail subsequent related tests. > set module_do {"compile" "P"} > -if { [info procs unsupported] != [list] \ > - && [info procs saved-unsupported] == [list] } { > - rename unsupported saved-unsupported > - > - proc unsupported { args } { > - global module_do > - lset module_do 1 "N" > - return [saved-unsupported $args] > - } > +rename unsupported modules-saved-unsupported > +proc unsupported { args } { > + global module_do > + lset module_do 1 "N" > + return [uplevel 1 modules-saved-unsupported $args] > } > > # not grouped tests, sadly tcl doesn't have negated glob > @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { > } > } > > +# Restore the original unsupported proc, lest it will affect > +# subsequent test runs, or even fail renaming if we run modules.exp > +# for multiple targets/multilibs/options. > +rename unsupported {} > +rename modules-saved-unsupported unsupported > + > dg-finish > >
On Mar 30, 2023, at 6:51 AM, Alexandre Oliva <oliva@adacore.com> wrote: > > On Mar 30, 2023, Alexandre Oliva <oliva@adacore.com> wrote: > >> If we're dropping the renaming, I suppose we could also revert Jakub's >> change. I suppose this patch will take care of it, pending testing... > > Regstrapped on x86_64-linux-gnu and also tested on arm-vx7r2 (with > gcc-12), where I used to get fails after an unsupported modules.exp > test, but there are no curly braces in the log files after the patch. > Ok to install? Ok.
Hi Alexandre! On 2023-03-30T10:51:32-0300, Alexandre Oliva via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > On Mar 30, 2023, Alexandre Oliva <oliva@adacore.com> wrote: > >> If we're dropping the renaming, I suppose we could also revert Jakub's >> change. I suppose this patch will take care of it, pending testing... > > Regstrapped on x86_64-linux-gnu and also tested on arm-vx7r2 (with > gcc-12), where I used to get fails after an unsupported modules.exp > test, but there are no curly braces in the log files after the patch. > Ok to install? Given the two "OK"s that you got end of last week, are you going to push that anytime soon, please? With... Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> ... added, I suppose. Grüße Thomas > [PR108899] testsuite: fix proc unsupported overriding in modules.exp > > The overrider of proc unsupported in modules.exp had two problems > reported by Thomas Schwinge, even after Jakub Jelínek's fix: > > - it remained in effect while running other dejagnu testsets > > - it didn't quote correctly the argument list passed to it, which > caused test names to be surrounded by curly braces, as in: > > UNSUPPORTED: {...} > > This patch fixes both issues, obsoleting and reverting Jakub's change, > by dropping the overrider and renaming the saved proc back, and by > using uplevel's argument list splicing. > > > for gcc/testsuite/ChangeLog > > PR testsuite/108899 > * g++.dg/modules/modules.exp (unsupported): Drop renaming. > Fix quoting. > --- > gcc/testsuite/g++.dg/modules/modules.exp | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp > index 80aa392bc7f3b..dc302d3d0af48 100644 > --- a/gcc/testsuite/g++.dg/modules/modules.exp > +++ b/gcc/testsuite/g++.dg/modules/modules.exp > @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] > # so that, after an unsupported result in dg-test, we can skip rather > # than fail subsequent related tests. > set module_do {"compile" "P"} > -if { [info procs unsupported] != [list] \ > - && [info procs saved-unsupported] == [list] } { > - rename unsupported saved-unsupported > - > - proc unsupported { args } { > - global module_do > - lset module_do 1 "N" > - return [saved-unsupported $args] > - } > +rename unsupported modules-saved-unsupported > +proc unsupported { args } { > + global module_do > + lset module_do 1 "N" > + return [uplevel 1 modules-saved-unsupported $args] > } > > # not grouped tests, sadly tcl doesn't have negated glob > @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { > } > } > > +# Restore the original unsupported proc, lest it will affect > +# subsequent test runs, or even fail renaming if we run modules.exp > +# for multiple targets/multilibs/options. > +rename unsupported {} > +rename modules-saved-unsupported unsupported > + > dg-finish > > ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
On Apr 5, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: > Given the two "OK"s that you got end of last week, are you going to push > that anytime soon, please? Apologies for the delay. > With... > Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> > ... added, I suppose. I wrote the patch based on your report, before even seeing your patch, though I only posted mine later, so I tried to give you credit for the report in the commit message, but if you feel that the note is appropriate, sure :-) Thanks again! Here's what I'm checking in. testsuite: fix proc unsupported overriding in modules.exp [PR108899] The overrider of proc unsupported in modules.exp had two problems reported by Thomas Schwinge, even after Jakub Jelínek's fix: - it remained in effect while running other dejagnu testsets - it didn't quote correctly the argument list passed to it, which caused test names to be surrounded by curly braces, as in: UNSUPPORTED: {...} This patch fixes both issues, obsoleting and reverting Jakub's change, by dropping the overrider and renaming the saved proc back, and by using uplevel's argument list splicing. Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> for gcc/testsuite/ChangeLog PR testsuite/108899 * g++.dg/modules/modules.exp (unsupported): Drop renaming. Fix quoting. --- gcc/testsuite/g++.dg/modules/modules.exp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp index 80aa392bc7f3b..dc302d3d0af48 100644 --- a/gcc/testsuite/g++.dg/modules/modules.exp +++ b/gcc/testsuite/g++.dg/modules/modules.exp @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] # so that, after an unsupported result in dg-test, we can skip rather # than fail subsequent related tests. set module_do {"compile" "P"} -if { [info procs unsupported] != [list] \ - && [info procs saved-unsupported] == [list] } { - rename unsupported saved-unsupported - - proc unsupported { args } { - global module_do - lset module_do 1 "N" - return [saved-unsupported $args] - } +rename unsupported modules-saved-unsupported +proc unsupported { args } { + global module_do + lset module_do 1 "N" + return [uplevel 1 modules-saved-unsupported $args] } # not grouped tests, sadly tcl doesn't have negated glob @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { } } +# Restore the original unsupported proc, lest it will affect +# subsequent test runs, or even fail renaming if we run modules.exp +# for multiple targets/multilibs/options. +rename unsupported {} +rename modules-saved-unsupported unsupported + dg-finish
Hi Alexandre! On 2023-04-05T23:38:43-0300, Alexandre Oliva via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > On Apr 5, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: >> With... > >> Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> > >> ... added, I suppose. > > I wrote the patch based on your report, before even seeing your patch Eh, given your "Ooh, nice, I didn't know [...]" comment in <https://inbox.sourceware.org/gcc/orr0t6n2q4.fsf@lxoliva.fsfla.org>: On 2023-03-30T04:00:03-0300, Alexandre Oliva via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: | On Mar 29, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: |> ..., this isn't sufficient. Instead, we should undo the 'rename' at the |> end of 'g++.dg/modules/modules.exp'. OK to push the attached |> "'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899]" |> after proper testing? | | Ooh, nice, I didn't know how to drop the renaming after we were done | with it, [...] ..., I had certainly assumed that you'd learned "how to drop [...]" from looking at my patch. > though I only posted mine later, so I tried to give you credit for the > report in the commit message, but if you feel that the note is > appropriate, sure :-) Thanks again! Thanks. > Here's what I'm checking in. > > > testsuite: fix proc unsupported overriding in modules.exp [PR108899] > > The overrider of proc unsupported in modules.exp had two problems > reported by Thomas Schwinge, even after Jakub Jelínek's fix: > > - it remained in effect while running other dejagnu testsets > > - it didn't quote correctly the argument list passed to it, which > caused test names to be surrounded by curly braces, as in: > > UNSUPPORTED: {...} > > This patch fixes both issues Confirmed, thanks. Grüße Thomas > obsoleting and reverting Jakub's change, > by dropping the overrider and renaming the saved proc back, and by > using uplevel's argument list splicing. > > > Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> > > for gcc/testsuite/ChangeLog > > PR testsuite/108899 > * g++.dg/modules/modules.exp (unsupported): Drop renaming. > Fix quoting. > --- > gcc/testsuite/g++.dg/modules/modules.exp | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp > index 80aa392bc7f3b..dc302d3d0af48 100644 > --- a/gcc/testsuite/g++.dg/modules/modules.exp > +++ b/gcc/testsuite/g++.dg/modules/modules.exp > @@ -319,15 +319,11 @@ cleanup_module_files [find $DEFAULT_REPO *.gcm] > # so that, after an unsupported result in dg-test, we can skip rather > # than fail subsequent related tests. > set module_do {"compile" "P"} > -if { [info procs unsupported] != [list] \ > - && [info procs saved-unsupported] == [list] } { > - rename unsupported saved-unsupported > - > - proc unsupported { args } { > - global module_do > - lset module_do 1 "N" > - return [saved-unsupported $args] > - } > +rename unsupported modules-saved-unsupported > +proc unsupported { args } { > + global module_do > + lset module_do 1 "N" > + return [uplevel 1 modules-saved-unsupported $args] > } > > # not grouped tests, sadly tcl doesn't have negated glob > @@ -412,4 +408,10 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { > } > } > > +# Restore the original unsupported proc, lest it will affect > +# subsequent test runs, or even fail renaming if we run modules.exp > +# for multiple targets/multilibs/options. > +rename unsupported {} > +rename modules-saved-unsupported unsupported > + > dg-finish > > > ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
On Apr 6, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote: > Eh, given your "Ooh, nice, I didn't know [...]" comment in > <https://inbox.sourceware.org/gcc/orr0t6n2q4.fsf@lxoliva.fsfla.org>: Oh my, you're right, I apologize, I misremembered. When I wrote "before I saw your patch" yesterday, I meant the formal, already-tested patch submission, that I recall seeing while I tested the patchlet I'd posted. I forgot you had included that patch also in the initial report, but I see it there too. https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614884.html https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614880.html https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614857.html I learned that tcl trick from you indeed, and that much I remember clearly: I've long sought but failed to find a way to do that. Alas, for some reason, I had a misrecollection that you had merely recommended using that trick, instead of including an actual patch, in the report I claimed to have based the patch on. I suppose I may have drawn that wrong conclusion from my having set out to write a patch myself, instead of recommending the approval of yours. That, in turn, was presumably because there was an additional issue that needed fixing, and that you had asked me to look into. Anyhow, it's probably a safe bet that I based our patch on yours indeed, but I wouldn't be able to confirm or deny it either way: those details have unfortunately faded away from my memory. Anyway, it was based on the misrecollection that I stated "before even seeing your patch", and I acknowledge that I was wrong, and probably also overthinking the whole issue ;-) Please accept my embarrassed apologies. I think I had better memory when I was younger, but I'm not really sure, I can't recall ;-D
From b5c6fae2467cf4245f379269792559b8c00eca58 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <thomas@codesourcery.com> Date: Wed, 29 Mar 2023 21:11:19 +0200 Subject: [PATCH] 'g++.dg/modules/modules.exp': don't leak local 'unsupported' proc [PR108899] Fix-up for commit 5344482c4d3ae0618fa8f5ed38f8309db43fdb82 "testsuite: Skip module_cmi_p and related unsupported module test". PR testsuite/108899 gcc/testsuite/ * g++.dg/modules/modules.exp: Don't leak local 'unsupported' proc. --- gcc/testsuite/g++.dg/modules/modules.exp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp index e66b2082f20..23c4bac2e89 100644 --- a/gcc/testsuite/g++.dg/modules/modules.exp +++ b/gcc/testsuite/g++.dg/modules/modules.exp @@ -408,4 +408,8 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] { } } +# Restore the saved 'unsupported' proc. +rename unsupported {} +rename saved-unsupported unsupported + dg-finish -- 2.25.1