This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 00/36] Support building GDB as a C++ program
- From: Pedro Alves <palves at redhat dot com>
- To: Patrick Palka <patrick at parcs dot ath dot cx>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Sat, 28 Feb 2015 00:09:38 +0000
- Subject: Re: [PATCH 00/36] Support building GDB as a C++ program
- Authentication-results: sourceware.org; auth=none
- References: <1423524046-20605-1-git-send-email-palves at redhat dot com> <54F0B52F dot 1050909 at redhat dot com> <CA+C-WL_wrfDJL_y0aewjtnPtsksGxFMbKU2jSXxLDfsi-THnyQ at mail dot gmail dot com>
On 02/27/2015 11:51 PM, Patrick Palka wrote:
> On Fri, Feb 27, 2015 at 1:19 PM, Pedro Alves <palves@redhat.com> wrote:
>> I didn't push this one, as it introduces an aliasing violation:
>>
>> > [PATCH 20/36] gdbserver/tracepoint: Add cast sockaddr_un/sockaddr cast
>> These are still pending:
>>
>> > [PATCH 29/36] Normalize TRY_CATCH exception handling block
>> > [PATCH 30/36] quit_force: Replace TRY_CATCH wrapper macros
>> > [PATCH 31/36] Split TRY_CATCH into TRY + CATCH
>> > [PATCH 32/36] TRY_CATCH -> TRY+CATCH+END_CATCH everywhere
>> > [PATCH 33/36] TRY_CATCH -> TRY+CATCH+END_CATCH, the manual conversions
>> > [PATCH 34/36] more making TRY/CATCH callers look more like real C++ try/catch blocks
>> > [PATCH 35/36] kill volatile struct gdb_exception
>> > [PATCH 36/36] Make TRY/CATCH use real C++ try/catch in C++ mode
>>
>> I don't have time right now to rebase this part, but I'd like
>> to move ahead with it sometime soon. If anyone has comments on
>> this, now's the time to send them out.
> Is GDB supposed to build yet with --enable-build-with-cxx? I am
> currently getting a slew of errors and warnings when building GDB with
> G++ 4.9.1.
No, not until all the pending patches above are pushed. Patch 20 needs
to be rewritten using the union trick instead of the invalid cast (strict
aliasing violation) -- help with that much appreciated! :-) Googling for
strict aliasing and sockaddr should find a ton of examples.
Even when this series is fully pushed, you'll still get a slew of
warnings due to invalid C++ code that G++ is allowing anyway due
to the -fpermissive shortcut. Things like 'char *str = xmalloc (size);'
need a cast in C++, but -fpermissive downgrades that error to a warning.
As there's no way to suppress those warnings, for now C++ mode doesn't
enable -Werror. The follow up part 2 series that I mentioned fixes
all those warnings.
Thanks,
Pedro Alves