From: Pedro Alves <palves@redhat.com>
To: John Baldwin <jhb@freebsd.org>, gdb@sourceware.org
Subject: Re: C++ conversion status update
Date: Sat, 16 Apr 2016 00:21:00 -0000 [thread overview]
Message-ID: <5711857D.8030708@redhat.com> (raw)
In-Reply-To: <3244238.TJBgqNL2lm@ralph.baldwin.cx>
Hi John,
Finally managed to get back to the ptrace prototype detection issue.
On 01/20/2016 11:33 PM, John Baldwin wrote:
> I see that you also have a patch (41bed896a) in that branch to fix ptrace()
> args detection (which also broke for me, though I just hacked config.h locally
> so I could work on the actual problems).
>
> Unfortunately, your patch doesn't fix FreeBSD/amd64 with GCC 4.8 (at least).
> The detection of the ptrace return type ('int' on FreeBSD) fails and falls
> back to long and I think that prevents it from subsequently matching on the
> correct types for the argument list.
>
> The error for the failing test for the return type (which should work instead
> I think) is:
>
> configure:12453: /usr/local/bin/g++48 -c -pipe -DRL_NO_COMPAT -Wno-unused-function -Wno-unused-variable -g -DLIBICONV_PLUG -g -fno-strict-aliasing -DLIBICONV_PLUG conftest.cpp >&5
> conftest.cpp:166:22: error: declaration of C function 'int ptrace()' conflicts with
> EXTERN_C int ptrace ();
> ^
> In file included from conftest.cpp:154:0:
> /usr/include/sys/ptrace.h:185:5: error: previous declaration 'int ptrace(int, pid_t, caddr_t, int)' here
> int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data);
> ^
> configure:12453: $? = 1
> configure: failed program was:
> ....
> | EXTERN_C int ptrace ();
> |
> | int
> | main ()
> | {
> |
> | ;
> | return 0;
> | }
> configure:12462: result: long
> configure:12470: checking types of arguments for ptrace
>
> I think the problem is that whereas in C "int foo()" means the args to foo()
> are undefined, "int foo()" in C++ is equivalent to "int foo(void)".
>
> I know that a comment in ptrace.ac4 mentions that C++ needs to be used to
> determine if the first argument to ptrace is an enum that needs a cast,
> but I wonder if we couldn't fall back to plain C for the return type
> check? (I'm not sure which of the tests in ptrace.ac4 needs C++ to make
> the enum determination such that we could possibly shuffle things around
> to do the one test needed while in C++ mode and the rest in C?)
>
> Another possibility would be to move the return type check into the big
> loop that currently checks the arguments as an outermost loop, something
> like:
>
> for gdb_ret in 'int' 'long'; do
> for gdb_arg1 in 'int' 'long'; do
> ...
>
> This would work in C++ mode I think.
Yes, agreed. I've sent a patch that does that to the
list now:
https://sourceware.org/ml/gdb-patches/2016-04/msg00374.html
If you could give it a try it'd be much appreciated. I've pushed
it to the users/palves/ptrace-detection branch (at sourceware.org)
as well, for convenience.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2016-04-16 0:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-24 13:07 Pedro Alves
2015-12-14 14:40 ` Yao Qi
2015-12-14 19:09 ` Pedro Alves
2015-12-15 11:39 ` Jose E. Marchesi
2015-12-15 20:03 ` Simon Marchi
2015-12-16 0:19 ` Pedro Alves
2015-12-16 0:21 ` Pedro Alves
2015-12-16 1:19 ` Simon Marchi
2015-12-16 20:11 ` Pedro Alves
2015-12-16 20:15 ` Pedro Alves
2015-12-16 20:30 ` Simon Marchi
2015-12-16 22:10 ` Pedro Alves
2015-12-16 22:59 ` Pedro Alves
2016-01-19 19:00 ` John Baldwin
2016-01-20 11:10 ` Pedro Alves
2016-01-20 23:33 ` John Baldwin
2016-01-21 11:38 ` Pedro Alves
2016-04-16 0:21 ` Pedro Alves [this message]
2016-04-18 16:51 ` Pedro Alves
2016-04-19 19:26 ` John Baldwin
2016-04-19 20:36 ` Pedro Alves
2016-04-19 21:40 ` John Baldwin
2016-04-19 22:20 ` Pedro Alves
2016-04-13 0:25 ` Pedro Alves
2016-04-13 11:07 ` Yao Qi
2016-04-13 14:13 ` Pedro Alves
2016-04-13 14:31 ` Sergio Durigan Junior
2016-04-13 12:41 ` Joel Brobecker
2016-04-13 14:04 ` Pedro Alves
2016-04-13 14:16 ` Joel Brobecker
2016-04-13 14:27 ` Luis Machado
2016-04-13 14:35 ` Marc Khouzam
2016-04-13 14:59 ` Joel Brobecker
2016-04-13 14:40 ` Pedro Alves
2016-04-18 17:29 ` Pedro Alves
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=5711857D.8030708@redhat.com \
--to=palves@redhat.com \
--cc=gdb@sourceware.org \
--cc=jhb@freebsd.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