This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [committed, PATCH] Update PR ld/21903 tests for dejagnu 1.4.4
- From: "Maciej W. Rozycki" <macro at imgtec dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: <binutils at sourceware dot org>
- Date: Fri, 25 Aug 2017 01:15:41 +0100
- Subject: Re: [committed, PATCH] Update PR ld/21903 tests for dejagnu 1.4.4
- Authentication-results: sourceware.org; auth=none
- References: <20170823230437.GA31051@gmail.com> <20170824153756.GA23971@gmail.com>
On Thu, 24 Aug 2017, H.J. Lu wrote:
> > Add '\' before -- to workaround dejagnu 1.4.4 which complains:
> >
> > ERROR: bad switch "--no-define-common may not be used without -shared":...
> >
> > * testsuite/ld-elf/pr21903c.d: Add '\' before --.
> > * testsuite/ld-elf/pr21903d.d: Likewise.
> > * testsuite/ld-elf/pr21903e.d: Likewise.
>
> I checked in this patch to workaround another dejagnu 1.4.4 issue.
>
>
> H.J.
> ---
> Subject: [PATCH] ld: Replace regexp with string match
>
> Replace regexp with string match to workaround dejagnu 1.4.4 which
> complains:
>
> ERROR: bad switch "-fPIE": must be -all, -about, -indices, -inline, -expanded, -line, -linestop, -lineanchor, -nocase, -start, or --
Hmm, isn't `--' the usual way to signify any further strings are not
options even if they start with `-'? It's even quoted in the error
message. Have you tried it instead?
If that indeed works as documented[1], then similarly I think the earlier
problem ought to be addressed by fixing the invocation of `regexp' used to
handle `#error' (and any similar tags) in the test framework rather than
applying hacks like yours to individual test cases.
> diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
> index c91a8611f3..c813a80551 100644
> --- a/ld/testsuite/ld-i386/i386.exp
> +++ b/ld/testsuite/ld-i386/i386.exp
> @@ -468,8 +468,8 @@ proc undefined_weak {cflags ldflags} {
> set testname "$testname ($cflags $ldflags)"
> }
>
> - if { [ regexp "\-fPIE" $cflags]
> - && ![ regexp "\-z nodynamic-undefined-weak" $ldflags] } {
> + if { [string match "*-fPIE*" $cflags]
> + && ![string match "*-z nodynamic-undefined-weak*" $ldflags] } {
So this would then become:
if { [ regexp -- "\-fPIE" $cflags]
&& ![ regexp -- "\-z nodynamic-undefined-weak" $ldflags] } {
(the backslashes can also be removed as there is no special meaning
assigned to a `\-' sequence in the regular expression syntax defined by
TCL AFAIK, so this is equivalent to plain `-' I believe).
References:
[1] <http://tmml.sourceforge.net/doc/tcl/regexp.html>
Maciej