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

Jan Kratochvil
2012-06-12T20:48:11Z

Hi,

build fails on solaris in infrun.c because of empty inferior_suspend_state struct
http://sourceware.org/bugzilla/show_bug.cgi?id=14003

I do not think the struct should be completely removed as it may suggest where
is appropriate to put some possible new fields.

Tom suggested putting there 'char dummy;' but this degrade normal systems
because of some worse systems.

Providing autoconf check for it seems excessive for me.

Any style issues with this fix?

Thanks,
Jan

2012-06-12 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..c4ad434 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -395,11 +395,13 @@ struct inferior_control_state

/* Inferior process specific part of `struct infcall_suspend_state'.

- Inferior thread counterpart is `struct thread_suspend_state'. */
+ Inferior thread counterpart is `struct thread_suspend_state'.

struct inferior_suspend_state
{
+ Currently unused and some compilers do not accept empty structures.
};
+ */

/* GDB represents the state of each program execution with an object
called an inferior. An inferior typically corresponds to a process
@@ -430,8 +432,11 @@ struct inferior
struct inferior_control_state control;

/* State of inferior process to restore after GDB is done with an inferior
- call. See `struct inferior_suspend_state'. */
+ call. See `struct inferior_suspend_state'.
+
+ Currently unused and some compilers do not accept empty structures.
struct inferior_suspend_state suspend;
+ */

/* 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..81182c2 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -6639,7 +6639,10 @@ siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var,
struct infcall_suspend_state
{
struct thread_suspend_state thread_suspend;
+
+ /* Currently unused and some compilers do not accept empty structures.
struct inferior_suspend_state inferior_suspend;
+ */

/* Other fields: */
CORE_ADDR stop_pc;
@@ -6693,7 +6696,10 @@ save_infcall_suspend_state (void)
}

inf_state->thread_suspend = tp->suspend;
+
+ /* Currently unused and some compilers do not accept empty structures.
inf_state->inferior_suspend = inf->suspend;
+ */

/* run_inferior_call will not use the signal due to its `proceed' call with
GDB_SIGNAL_0 anyway. */
@@ -6717,7 +6723,10 @@ restore_infcall_suspend_state (struct infcall_suspend_state *inf_state)
struct gdbarch *gdbarch = get_regcache_arch (regcache);

tp->suspend = inf_state->thread_suspend;
+
+ /* Currently unused and some compilers do not accept empty structures.
inf->suspend = inf_state->inferior_suspend;
+ */

stop_pc = inf_state->stop_pc;