callback.h:struct host_callback_struct compilation error on Windows hosts.
authorJoel Brobecker <brobecker@adacore.com>
Wed, 3 Dec 2014 07:33:13 +0000 (02:33 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Wed, 3 Dec 2014 09:43:08 +0000 (13:43 +0400)
commit2d7bb7580ac174127f8ae127ebc4156a91035fc0
treeb2bda134fce35d42ba03bd5377f2f2138ae27dc1
parentfd9edc908915788839e7605e2fe4c00f4b3eb3db
callback.h:struct host_callback_struct compilation error on Windows hosts.

On Windows, a recent gnulib update imported the lstat module, and
this caused a remote-sim.c build failure in struct host_callback_struct:

    In file included from /[...]/gdb/remote-sim.c:34:0:
    /[...]/gdb/../include/gdb/callback.h:93:9: error: duplicate member '_stati64'
       int (*lstat) (host_callback *, const char *, struct stat *);
             ^
What happens it that gnulib's stat.h makes the following defines:

     /* Large File Support on native Windows.  */
     #if 1
     # define stat _stati64
     #endif

and then:

    #if 1
    # if ! 0
    /* mingw does not support symlinks, therefore it does not have lstat.  But
       without links, stat does just fine.  */
    #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    #   define lstat stat
    #  endif

So, the following fields in struct host_callback_struct...

      int (*stat) (host_callback *, const char *, struct stat *);
      int (*fstat) (host_callback *, int, struct stat *);
      int (*lstat) (host_callback *, const char *, struct stat *);

... get translated to...

      int (*_stati64) (host_callback *, const char *, struct _stati64 *);
      int (*_fstati64) (host_callback *, int, struct _stati64 *);
      int (*_stati64) (host_callback *, const char *, struct _stati64 *);

... which causes two fields to have the same name.

This patch fixes the issue by renaming the stat-related fields
by adding a "to_" prefix, similar to what is done in GDB's
target_ops vector.

include/gdb/ChangeLog:

* callback.h (struct host_callback_struct) <to_stat>: Renamed
from "stat".
<to_fstat>: Renamed from "fstat".
<to_lstat>: Renamed from "lstat".

sim/common/ChangeLog:

* sim-io.c (sim_io_stat, sim_io_fstat): Adjust calls to "stat"
and "fstat" callbacks by calls to "to_stat" and "to_fstat" (resp)
callbacks following renaming in callback.h.
* syscall.c (cb_syscall): Likewise.  Adjust calls to "lstat"
callback by call to "to_lstat" callback

sim/cris/ChangeLog:

* traps.c (cris_break_13_handler): Adjust call to "fstat" callback
by call to "to_fstat" following renaming in callback.h.

sim/h8300/ChangeLog:

* compile.c (sim_resume):  Adjust calls to "stat" and "fstat"
callbacks by calls to "to_stat" and "to_fstat" (resp) callbacks
following renaming in callback.h.
include/gdb/ChangeLog
include/gdb/callback.h
sim/common/ChangeLog
sim/common/sim-io.c
sim/common/syscall.c
sim/cris/ChangeLog
sim/cris/traps.c
sim/h8300/ChangeLog
sim/h8300/compile.c