Re: [PATCH 0/1] Build GDB as a C++ program by default

Pedro Alves
2016-04-20T19:56:08Z

On 04/19/2016 04:20 PM, Walfred Tedeschi wrote:
> Am 4/19/2016 um 4:39 PM schrieb Pedro Alves:
>> On 04/19/2016 03:36 PM, Walfred Tedeschi wrote:
>>
>>> Pedro,
>>>
>>> Do you have some data about building GDB on OsX with
>>> --enable-build-with-cxx?
>>>
>>> If not I could give it a try!
>>
>> Please do give it a try. Thanks!
>>
>
> There is some issues, i will investigating a bit further.
> By now i was compiling with Clang, will also try to compile with gcc.

I managed to build a linux x darwin cross compiler here, using the
osxcross tool.

Indeed, clang++ stumbles on a bunch of issues. But then again, so
does clang in C-mode.

With gcc/g++ (5.3.0), and I see a few warnings/errors. Configuring gdb with:

/home/pedro/gdb/mygit/cxx-convertion/src/configure --host=x86_64-apple-darwin15 CFLAGS="-g3 -O0" CXXFLAGS="-g3 -O0" --enable-build-with-cxx=no --enable-targets=all --disable-ld --disable-binutils --disable-gas

First off, I see a set of:

/home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:486:27: warning: 'void* sbrk(int)' is deprecated [-Wdeprecated-declarations]
lim_at_start = (char *) sbrk (0);
^

but I get that in C-mode too, so I'll ignore.

So, compiling with:

$ make -k WERROR_CFLAGS="-Wno-deprecated-declarations" 2>diagnostics.txt 1>/dev/null

I see just a few warnings / errors, and they all look easily fixable:

/home/pedro/gdb/mygit/cxx-convertion/src/gdb/aarch64-tdep.c: In function 'unsigned int aarch64_record_load_store(insn_decode_record*)':
/home/pedro/gdb/mygit/cxx-convertion/src/gdb/aarch64-tdep.c:3479:78: error: invalid conversion from 'uint64_t* {aka long long unsigned int*}' to 'ULONGEST* {aka long unsigned int*}' [-fpermissive]
bits (aarch64_insn_r->aarch64_insn, 16, 20), &reg_rm_val);

/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c: In function 'void darwin_resume_thread(inferior*, darwin_thread_t*, int, int)':
/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c:731:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
(caddr_t)thread->gdb_port, nsignal);
^

/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c: In function 'ptid_t darwin_decode_message(mach_msg_header_t*, darwin_thread_t**, inferior**, target_waitstatus*)':
/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c:1016:25: error: invalid conversion from 'int' to 'gdb_signal' [-fpermissive]
status->value.sig = WTERMSIG (wstatus);

/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c: In function 'void darwin_resume_thread(inferior*, darwin_thread_t*, int, int)':
/home/pedro/gdb/mygit/cxx-convertion/src/gdb/darwin-nat.c:731:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
(caddr_t)thread->gdb_port, nsignal);
^

I'll send patches later.

Thanks,
Pedro Alves