From 2d7bb7580ac174127f8ae127ebc4156a91035fc0 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Wed, 3 Dec 2014 02:33:13 -0500 Subject: 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) : Renamed from "stat". : Renamed from "fstat". : 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. --- sim/common/ChangeLog | 8 ++++++++ sim/common/sim-io.c | 4 ++-- sim/common/syscall.c | 6 +++--- sim/cris/ChangeLog | 5 +++++ sim/cris/traps.c | 2 +- sim/h8300/ChangeLog | 6 ++++++ sim/h8300/compile.c | 5 +++-- 7 files changed, 28 insertions(+), 8 deletions(-) (limited to 'sim') diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 64f2081..3c85626 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,11 @@ +2014-12-03 Joel Brobecker + + * 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 * sim-trace.h (debug_printf): New define. diff --git a/sim/common/sim-io.c b/sim/common/sim-io.c index 918137b..1114ec6 100644 --- a/sim/common/sim-io.c +++ b/sim/common/sim-io.c @@ -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); } diff --git a/sim/common/syscall.c b/sim/common/syscall.c index 397cd80..b5cb1ca 100644 --- a/sim/common/syscall.c +++ b/sim/common/syscall.c @@ -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; diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog index 4801f14..ad903fb 100644 --- a/sim/cris/ChangeLog +++ b/sim/cris/ChangeLog @@ -1,3 +1,8 @@ +2014-12-03 Joel Brobecker + + * 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 * configure: Regenerate. diff --git a/sim/cris/traps.c b/sim/cris/traps.c index 35dce3c..c50f04f 100644 --- a/sim/cris/traps.c +++ b/sim/cris/traps.c @@ -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) { diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog index 62ef367..16489e6 100644 --- a/sim/h8300/ChangeLog +++ b/sim/h8300/ChangeLog @@ -1,3 +1,9 @@ +2014-12-03 Joel Brobecker + + * 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 * configure: Regenerate. diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c index 348cdbb..4deba82 100644 --- a/sim/h8300/compile.c +++ b/sim/h8300/compile.c @@ -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); -- cgit v1.1