Re: C++ conversion status update
John Baldwin <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
On Tuesday, April 19, 2016 09:36:33 PM Pedro Alves wrote: > On 04/19/2016 07:22 PM, John Baldwin wrote: > > Thanks, I was able to test it and it works great on FreeBSD/amd64. > > Great, thanks for confirming. > > > The only remaining issue is that FreeBSD's stack_t defines ss_sp as char * > > instead of void *. Apparently 4.4BSD had this and the other BSD's fixed this > > long ago. When I first ran into this in January I fixed FreeBSD's trunk, so > > 11.0 will ship with a proper ss_sp of void *, but older releases will not. > > > > > The affected code is in setup_alternate_signal_stack() in gdb/main.c where > > ss_sp is assigned to the void * returned from xmalloc(). > > > > I was torn between just supporting C++ builds on FreeBSD 11 and later, or > > adding autoconf glue for just this part. However, given that it seems like > > the recent discussion is to deprecate C mode in the near future, it seems > > like I should do the latter. Do you have any better suggestions? > > > > C++ allows conversion to 'void *' without a cast. So I think > we just need to do: > > - ss.ss_sp = xmalloc (SIGSTKSZ); > + ss.ss_sp = (char *) xmalloc (SIGSTKSZ); > > and it'll work on both char * and void * hosts. I tried it > here on GNU/Linux, where ss_sp is void *, and it works. > > Would you like to send that as a patch (with a comment)? > > We can leave adding an autoconf check if some other host uses > a type different than void * and char *. Ok, I will include that in my current patchset. -- John Baldwin