Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Yao Qi <yao@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 3/7] Import lstat
Date: Tue, 02 Dec 2014 17:01:00 -0000	[thread overview]
Message-ID: <20141202170144.GA9407@adacore.com> (raw)
In-Reply-To: <1416980800-21408-4-git-send-email-yao@codesourcery.com>

> This patch is to import lstat gnulib module.
> 
> gdb:
> 
> 2014-11-26  Yao Qi  <yao@codesourcery.com>
> 
> 	* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
> 	lstat.
> 	* gnulib/aclocal.m4: Re-generated.
> 	* gnulib/config.in: Re-generated.
> 	* gnulib/configure: Re-generated.
> 	* gnulib/import/Makefile.am: Re-generated.
> 	* gnulib/import/Makefile.in: Re-generated.
> 	* gnulib/import/m4/gnulib-cache.m4: Re-generated.
> 	* gnulib/import/m4/gnulib-comp.m4: Re-generated.
> 	* gnulib/import/lstat.c: New file.
> 	* gnulib/import/m4/lstat.m4: New file.

For the record, I think this patch causes a build failure in
remote-sim.c on Windows hosts:

    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.

I think the only reasonable way out to avoid this sort of issue,
short of reverting the patch, is to do the same as in struct target_ops,
where the names of the fields start with "to_...". I'll work on the
immediate problem, which is to rename those 3 fields, but I think
we'll want to be consistent and rename them all. For instance
"ftruncate" also got translated:

        int (*ftruncate64) (host_callback *, int, long);

Same for lseek (->lseek64), rename (->rpl_rename).
No actual harm in those cases, but it shows that those translations
do happen.

-- 
Joel


  reply	other threads:[~2014-12-02 17:01 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-26  5:46 [PATCH 0/7 V2] Import the rename gnulib module Yao Qi
2014-11-26  5:46 ` [PATCH 2/7] Use readlink unconditionally Yao Qi
2014-11-26  5:46 ` [PATCH 1/7] Import readlink Yao Qi
2014-12-03 10:48   ` Joel Brobecker
2014-12-03 12:08     ` [RFA] configure gdb/gnulib with --disable-largefile if largefile support disabled Joel Brobecker
2014-12-03 17:59       ` Eli Zaretskii
2014-12-04  3:18         ` Joel Brobecker
2014-12-04  6:47           ` Eli Zaretskii
2014-12-13 16:29             ` Joel Brobecker
2014-12-04  2:17       ` Yao Qi
2014-12-13 14:46         ` pushed: " Joel Brobecker
2014-11-26  5:47 ` [PATCH 6/7] Use canonicalize_file_name unconditionally Yao Qi
2014-11-27  7:36   ` Joel Brobecker
2014-11-28  3:07     ` Yao Qi
2014-11-28  3:43       ` Joel Brobecker
2014-11-28 10:43         ` Yao Qi
2014-11-28 14:46           ` Joel Brobecker
2014-11-26  5:47 ` [PATCH 5/7] Import canonicalize-lgpl Yao Qi
2014-11-26  5:47 ` [PATCH 3/7] Import lstat Yao Qi
2014-12-02 17:01   ` Joel Brobecker [this message]
2014-12-03  9:48     ` [pushed] callback.h:struct host_callback_struct compilation error on Windows hosts Joel Brobecker
2014-12-04  1:09       ` Yao Qi
2014-12-04  5:42         ` Joel Brobecker
2014-11-26  5:47 ` [PATCH 4/7] Use lstat unconditionally Yao Qi
2014-11-26  5:47 ` [PATCH 7/7] Import rename module Yao Qi
2014-11-26 15:40 ` [PATCH 0/7 V2] Import the rename gnulib module Eli Zaretskii
2014-11-27  3:48   ` Yao Qi
2014-11-27  7:41 ` Joel Brobecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141202170144.GA9407@adacore.com \
    --to=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=yao@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox