From: Pedro Alves <palves@redhat.com>
To: Doug Evans <dje@google.com>, gdb-patches@sourceware.org
Subject: Re: [RFC] delete gdb.cp/ambiguous.exp ?
Date: Tue, 19 Aug 2014 16:49:00 -0000 [thread overview]
Message-ID: <53F38030.1020406@redhat.com> (raw)
In-Reply-To: <yjt27g25tmac.fsf@ruffy.mtv.corp.google.com>
On 08/19/2014 12:23 AM, Doug Evans wrote:
> Along the lines of dead code removal ...
>
> What should we do with this testcase?
>
> The messages it is looking for from gdb do not exist,
Hmm. These are:
# X is derived from A1 and A2; both A1 and A2 have a member 'x'
send_gdb "print x.x\n"
gdb_expect {
-re "warning: x ambiguous; using X::A2::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
pass "print x.x"
}
-re "warning: x ambiguous; using X::A1::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
pass "print x.x"
}
-re ".*$gdb_prompt $" { fail "print x.x" }
timeout { fail "(timeout) print x.x" }
}
Actually enabling the test (removing the skip, and adding
nowarnings), we see that indeed GDB outputs no warning:
print x.x
$1 = 994109222
(gdb) FAIL: gdb.cp/ambiguous.exp: print x.x
but, GDB also silently picks an 'x'. If we try compiling 'x.x', we get:
ambiguous.cc: In function ‘int main()’:
ambiguous.cc:103:67: error: request for member ‘x’ is ambiguous
i += k.i + m.w + a1.x + a2.x + a3.x + x.z + l.z + n.r + j.j + x.x;
^
ambiguous.cc:15:7: note: candidates are: int A2::x
int x;
^
ambiguous.cc:9:7: note: int A1::x
And gdb.cp/inherit.exp has:
# Print all members of g_D.
#
# g_D.A::a and g_D.A::x are ambiguous member accesses.
gdb_test "print g_D.A::a" "base class 'A' is ambiguous in type 'D'"
So shouldn't GDB error out in the 'x.x' case too ? Or at
least warn, like the test suggests (I bet this came in with
the big HP merge years ago).
In this case below, GDB does error out, though the test
expects a warning:
print (A1)j
base class 'A1' is ambiguous in type 'J'
(gdb) FAIL: gdb.cp/ambiguous.exp: print (A1)j
Running /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.cp/ambiguous.exp ...
FAIL: gdb.cp/ambiguous.exp: print x.x
FAIL: gdb.cp/ambiguous.exp: print n.x
FAIL: gdb.cp/ambiguous.exp: print j.x
FAIL: gdb.cp/ambiguous.exp: print jva1.x
FAIL: gdb.cp/ambiguous.exp: print jva2.x
FAIL: gdb.cp/ambiguous.exp: print (A1)j
FAIL: gdb.cp/ambiguous.exp: print (A1)jva1
--
Thanks,
Pedro Alves
next prev parent reply other threads:[~2014-08-19 16:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-18 23:23 Doug Evans
2014-08-19 6:58 ` Joel Brobecker
2014-08-19 16:49 ` Pedro Alves [this message]
2014-08-19 17:25 ` Doug Evans
2014-08-19 17:50 ` Pedro Alves
2014-08-19 20:10 ` Doug Evans
2014-08-19 21:47 ` Pedro Alves
2014-08-22 20:07 ` Doug Evans
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53F38030.1020406@redhat.com \
--to=palves@redhat.com \
--cc=dje@google.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox