From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Buettner To: Daniel Jacobowitz , gdb@sources.redhat.com Subject: Re: [RFC] Changes to *_*regset functions Date: Fri, 13 Jul 2001 12:21:00 -0000 Message-id: <1010713192049.ZM20362@ocotillo.lan> References: <20010713102605.A32410@nevyn.them.org> X-SW-Source: 2001-07/msg00134.html On Jul 13, 10:26am, Daniel Jacobowitz wrote: > Given that almost every call to or definition of these functions starts by > casting its arguments anyway, I'd like to change the prototypes to the > somewhat vaguer: > > extern void supply_gregset (char *gregs); > extern void supply_fpregset (char *fpregs); > extern void fill_gregset (char *gregs, int regno); > extern void fill_fpregset (char *fpregs, int regno); > > It'll add a couple of casts, and remove a couple, and end up with functions > that can be safely defined in a cross debugger. > > Any objection to this? For this type of thing, I'd prefer to see void * rather than char *. Of course, the problem with using void * is that we can now pass any pointer type at all and the compiler won't bat an eye. One of the things that I learned while doing the ptid_t conversions was that passing structs (and not pointers to structs) was incredibly useful for catching type errors. (Pointers to structs work okay too if your code compiles cleanly with -Werror.) Of course, your struct could be defined something like this: struct gdb_gregset { void *gregset_ptr; /* pointer to a chunk of memory with the registers. */ }; Then one of your prototypes could be: extern void supply_gregset (struct gdb_gregset gregs); Kevin