Re: [patchv2] Fix Sun compiler compat. for empty structs (PR build/14003)

Mark Kettenis
2012-06-13T08:30:56Z

> Date: Wed, 13 Jun 2012 08:50:59 +0200
> From: Jan Kratochvil <jan.kratochvil@redhat.com>
>
> On Tue, 12 Jun 2012 23:51:16 +0200, Jan Kratochvil wrote:
> > On Tue, 12 Jun 2012 23:24:13 +0200, Joel Brobecker wrote:
> > > A structure type describes a sequentially allocated nonempty
> > > set of member objects [...]
> >
> > oops, OK.
>
> emptystruct.c:1:8: warning: struct has no members [-pedantic]
>
>
> > > Perhaps using #if 0 instead might make it looks like a little less unusual,
> > > not sure...
> >
> > While #if 0 is IIRC forbidden in general it would at least permit ctags to
> > work.
>
>
> Jan
>
>
> 2012-06-13 Jan Kratochvil <jan.kratochvil@redhat.com>
>
> PR build/14003
> * inferior.h (struct inferior_suspend_state): Comment out.
> (struct inferior): Comment out the field suspend.
> * infrun.c (struct infcall_suspend_state): Comment out the field
> inferior_suspend.
> (save_infcall_suspend_state, restore_infcall_suspend_state): Comment
> out its assignment.
>
> diff --git a/gdb/inferior.h b/gdb/inferior.h
> index dfcbda4..3945962 100644
> --- a/gdb/inferior.h
> +++ b/gdb/inferior.h
> @@ -397,9 +397,11 @@ struct inferior_control_state
>
> Inferior thread counterpart is `struct thread_suspend_state'. */
>
> +#if 0 /* Currently unused and empty structures are not valid C. */
> struct inferior_suspend_state
> {
> };
> +#endif

At the risk of turning this into a bikeshed:

Isn't it simpler to just put a dummy member inside that struct, and forget about the #if 0 stuff?

struct inferior_suspend_state
{
/* Empty structures are not valid C. */
int unused;
};

> /* GDB represents the state of each program execution with an object
> called an inferior. An inferior typically corresponds to a process
> @@ -431,7 +433,9 @@ struct inferior
>
> /* State of inferior process to restore after GDB is done with an inferior
> call. See `struct inferior_suspend_state'. */
> +#if 0 /* Currently unused and empty structures are not valid C. */
> struct inferior_suspend_state suspend;
> +#endif
>
> /* True if this was an auto-created inferior, e.g. created from
> following a fork; false, if this inferior was manually added by
> diff --git a/gdb/infrun.c b/gdb/infrun.c
> index b98e379..e6b7a5e 100644
> --- a/gdb/infrun.c
> +++ b/gdb/infrun.c
> @@ -6639,7 +6639,9 @@ siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var,
> struct infcall_suspend_state
> {
> struct thread_suspend_state thread_suspend;
> +#if 0 /* Currently unused and empty structures are not valid C. */
> struct inferior_suspend_state inferior_suspend;
> +#endif
>
> /* Other fields: */
> CORE_ADDR stop_pc;
> @@ -6693,7 +6695,9 @@ save_infcall_suspend_state (void)
> }
>
> inf_state->thread_suspend = tp->suspend;
> +#if 0 /* Currently unused and empty structures are not valid C. */
> inf_state->inferior_suspend = inf->suspend;
> +#endif
>
> /* run_inferior_call will not use the signal due to its `proceed' call with
> GDB_SIGNAL_0 anyway. */
> @@ -6717,7 +6721,9 @@ restore_infcall_suspend_state (struct infcall_suspend_state *inf_state)
> struct gdbarch *gdbarch = get_regcache_arch (regcache);
>
> tp->suspend = inf_state->thread_suspend;
> +#if 0 /* Currently unused and empty structures are not valid C. */
> inf->suspend = inf_state->inferior_suspend;
> +#endif
>
> stop_pc = inf_state->stop_pc;
>
>