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)
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

index 135391d..7ec304c 100644 (file)
@@ -1,3 +1,10 @@
+2014-12-03  Joel Brobecker  <brobecker@adacore.com>
+
+       * callback.h (struct host_callback_struct) <to_stat>: Renamed
+       from "stat".
+       <to_fstat>: Renamed from "fstat".
+       <to_lstat>: Renamed from "lstat".
+
 2014-03-10  Mike Frysinger  <vapier@gentoo.org>
 
        * remote-sim.h (sim_do_command): Add const to cmd.
index bb1edac..d9ac263 100644 (file)
@@ -88,9 +88,9 @@ struct host_callback_struct
   void (*flush_stdout) (host_callback *);
   int (*write_stderr) (host_callback *, const char *, int);
   void (*flush_stderr) (host_callback *);
-  int (*stat) (host_callback *, const char *, struct stat *);
-  int (*fstat) (host_callback *, int, struct stat *);
-  int (*lstat) (host_callback *, const char *, struct stat *);
+  int (*to_stat) (host_callback *, const char *, struct stat *);
+  int (*to_fstat) (host_callback *, int, struct stat *);
+  int (*to_lstat) (host_callback *, const char *, struct stat *);
   int (*ftruncate) (host_callback *, int, long);
   int (*truncate) (host_callback *, const char *, long);
   int (*pipe) (host_callback *, int *);
index 64f2081..3c85626 100644 (file)
@@ -1,3 +1,11 @@
+2014-12-03  Joel Brobecker  <brobecker@adacore.com>
+
+       * 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
+
 2014-08-28  Gary Benson  <gbenson@redhat.com>
 
        * sim-trace.h (debug_printf): New define.
index 918137b..1114ec6 100644 (file)
@@ -391,11 +391,11 @@ sim_io_poll_read (SIM_DESC sd,
 int
 sim_io_stat (SIM_DESC sd, const char *path, struct stat *buf)
 {
-  return STATE_CALLBACK (sd)->stat (STATE_CALLBACK (sd), path, buf);
+  return STATE_CALLBACK (sd)->to_stat (STATE_CALLBACK (sd), path, buf);
 }
 
 int
 sim_io_fstat (SIM_DESC sd, int fd, struct stat *buf)
 {
-  return STATE_CALLBACK (sd)->fstat (STATE_CALLBACK (sd), fd, buf);
+  return STATE_CALLBACK (sd)->to_fstat (STATE_CALLBACK (sd), fd, buf);
 }
index 397cd80..b5cb1ca 100644 (file)
@@ -455,7 +455,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
            result = -1;
            goto FinishSyscall;
          }
-       result = (*cb->stat) (cb, path, &statbuf);
+       result = (*cb->to_stat) (cb, path, &statbuf);
        free (path);
        if (result < 0)
          goto ErrorFinish;
@@ -488,7 +488,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
        struct stat statbuf;
        TADDR addr = sc->arg2;
 
-       result = (*cb->fstat) (cb, sc->arg1, &statbuf);
+       result = (*cb->to_fstat) (cb, sc->arg1, &statbuf);
        if (result < 0)
          goto ErrorFinish;
        buflen = cb_host_to_target_stat (cb, NULL, NULL);
@@ -526,7 +526,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
            result = -1;
            goto FinishSyscall;
          }
-       result = (*cb->lstat) (cb, path, &statbuf);
+       result = (*cb->to_lstat) (cb, path, &statbuf);
        free (path);
        if (result < 0)
          goto ErrorFinish;
index 4801f14..ad903fb 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-03  Joel Brobecker  <brobecker@adacore.com>
+
+       * traps.c (cris_break_13_handler): Adjust call to "fstat" callback
+       by call to "to_fstat" following renaming in callback.h.
+
 2014-08-19  Alan Modra  <amodra@gmail.com>
 
        * configure: Regenerate.
index 35dce3c..c50f04f 100644 (file)
@@ -2204,7 +2204,7 @@ cris_break_13_handler (SIM_CPU *current_cpu, USI callnum, USI arg1,
                || ((events = sim_core_read_unaligned_2 (current_cpu, pc,
                                                         0, ufds + 4))
                    != TARGET_POLLIN)
-               || ((cb->fstat) (cb, fd, &buf) != 0
+               || ((cb->to_fstat) (cb, fd, &buf) != 0
                    || (buf.st_mode & S_IFIFO) == 0)
                || current_cpu->thread_data == NULL)
              {
index 62ef367..16489e6 100644 (file)
@@ -1,3 +1,9 @@
+2014-12-03  Joel Brobecker  <brobecker@adacore.com>
+
+       * 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.
+
 2014-08-19  Alan Modra  <amodra@gmail.com>
 
        * configure: Regenerate.
index 348cdbb..4deba82 100644 (file)
@@ -3062,7 +3062,8 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
            stat_ptr = (h8300hmode && !h8300_normal_mode) ? GET_L_REG (1) : GET_W_REG (1);
 
            /* Callback stat and return.  */
-           fstat_return = sim_callback->fstat (sim_callback, fd, &stat_rec);
+           fstat_return = sim_callback->to_fstat (sim_callback, fd,
+                                                  &stat_rec);
 
            /* Have stat_ptr point to starting of stat_rec.  */
            temp_stat_ptr = (char *) (&stat_rec);
@@ -3136,7 +3137,7 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
 
            /* Callback stat and return.  */
            stat_return =
-             sim_callback->stat (sim_callback, filename, &stat_rec);
+             sim_callback->to_stat (sim_callback, filename, &stat_rec);
 
            /* Have stat_ptr point to starting of stat_rec.  */
            temp_stat_ptr = (char *) (&stat_rec);