On Thu, May 8, 2025 at 4:22 PM Jonathan Wakely <jwak...@redhat.com> wrote:
> As noted in the PR, some embedded targets do not support command-line > arguments, which means that the dg-require-namedlocale check always > fails. Use Sandra's suggestion of hardcoding the argument into the > executable instead of passing it as a command-line argument. > > Realistically, those embedded targets probably don't support the named > locales anyway, but at least now the tests will be UNSUPPORTED for the > right reason. > > libstdc++-v3/ChangeLog: > > PR libstdc++/65909 > * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): > Hardcode the locale name instead of passing it to the > executable. Do not hardcode buffer size for string. > --- > > Tested x86_64-linux. > LGTM. Learned some TCL today. > > libstdc++-v3/testsuite/lib/libstdc++.exp | 13 ++++--------- > 1 file changed, 4 insertions(+), 9 deletions(-) > > diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp > b/libstdc++-v3/testsuite/lib/libstdc++.exp > index 5e958d159de2..fbc9f7f13e64 100644 > --- a/libstdc++-v3/testsuite/lib/libstdc++.exp > +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp > @@ -1034,7 +1034,7 @@ proc check_v3_target_namedlocale { args } { > puts $f "using namespace std;" > puts $f "char *transform_locale(const char *name)" > puts $f "{" > - puts $f " char *result = new char\[50\];" > + puts $f " char *result = new char\[strlen(name)+6\];" > puts $f " strcpy(result, name);" > puts $f "#if defined __FreeBSD__ || defined __DragonFly__ || > defined __NetBSD__" > puts $f " /* fall-through */" > @@ -1045,14 +1045,9 @@ proc check_v3_target_namedlocale { args } { > puts $f "#endif" > puts $f " return result;" > puts $f "}" > - puts $f "int main (int argc, char** argv)" > + puts $f "int main ()" > puts $f "{" > - puts $f " if (argc < 2)" > - puts $f " {" > - puts $f " printf(\"locale support test not supported\\n\");" > - puts $f " return 1;" > - puts $f " }" > - puts $f " const char *namedloc = transform_locale(*(argv + 1));" > + puts $f " const char *namedloc = transform_locale(\"$args\");" > puts $f " try" > puts $f " {" > puts $f " locale((const char*)namedloc);" > @@ -1076,7 +1071,7 @@ proc check_v3_target_namedlocale { args } { > return 0 > } > > - set result [${tool}_load "./$exe" "$args" ""] > + set result [${tool}_load "./$exe" "" ""] > set status [lindex $result 0] > > verbose "check_v3_target_namedlocale <$args>: status is <$status>" > 2 > -- > 2.49.0 > >