This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gdb/ctf.c: Get rid of mkdir redefinition


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7c2683c40f745397e80b6df4edf8265ecb6fd194

commit 7c2683c40f745397e80b6df4edf8265ecb6fd194
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Nov 17 14:43:02 2016 +0000

    gdb/ctf.c: Get rid of mkdir redefinition
    
    Making GDB use gnulib's C++ namespace support shows this build error
    on mingw:
    
     ../../src/gdb/ctf.c: In function 'void ctf_start(trace_file_writer*, const char*)':
     ../../src/gdb/ctf.c:309:46: error: no match for call to '(const gnulib::_gl_mkdir_wrapper) (const char*&)'
      #define mkdir(pathname, mode) mkdir (pathname)
    					       ^
     ../../src/gdb/ctf.c:327:15: note: in expansion of macro 'mkdir'
        if (gnulib::mkdir (dirname, hmode) && errno != EEXIST)
    		^
     ../../src/gdb/ctf.c:309:46: note: candidate: gnulib::_gl_mkdir_wrapper::type {aka int (*)(const char*, short unsigned int)} <conversion>
      #define mkdir(pathname, mode) mkdir (pathname)
    					       ^
     ../../src/gdb/ctf.c:327:15: note: in expansion of macro 'mkdir'
        if (gnulib::mkdir (dirname, hmode) && errno != EEXIST)
    		^
     ../../src/gdb/ctf.c:309:46: note:   candidate expects 3 arguments, 2 provided
      #define mkdir(pathname, mode) mkdir (pathname)
    					       ^
     ../../src/gdb/ctf.c:327:15: note: in expansion of macro 'mkdir'
        if (gnulib::mkdir (dirname, hmode) && errno != EEXIST)
    		^
    
    The problem is the '#define mkdir ...'
    
    Fortunately, we can just remove it, since gnulib's sys/stat.h
    replacement already takes care of the Windows mkdir prototype quirk:
    
    ~~~
     /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
        Additionally, it declares _mkdir (and depending on compile flags, an
        alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
        which are included above.  */
     # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
    
     #  if !GNULIB_defined_rpl_mkdir
     static int
     rpl_mkdir (char const *name, mode_t mode)
     {
       return _mkdir (name);
     }
    ~~~
    
    That's sys_stat.in.h, part of the sys_stat module, which we explictly
    pull in nowadays.  It wasn't being pulled when this macro was added:
    
      https://sourceware.org/ml/gdb-patches/2013-03/msg00736.html
    
    That patch was partially reverted meanwhile here:
    
      https://sourceware.org/ml/gdb-patches/2013-12/msg00023.html
    
    But the mkdir macro had been left behind unnoticed.
    
    gdb/ChangeLog:
    2016-11-17  Pedro Alves  <palves@redhat.com>
    
    	* ctf.c [USE_WIN32API] (mkdir): Delete.

Diff:
---
 gdb/ChangeLog | 4 ++++
 gdb/ctf.c     | 5 -----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c4dccb8..aa454b8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2016-11-17  Pedro Alves  <palves@redhat.com>
+
+	* ctf.c [USE_WIN32API] (mkdir): Delete.
+
 2016-11-16  Pedro Alves  <palves@redhat.com>
 
 	* ada-lang.c (ada_value_primitive_packed_val): Use unique_ptr and
diff --git a/gdb/ctf.c b/gdb/ctf.c
index 7daa47e..2091b8d 100644
--- a/gdb/ctf.c
+++ b/gdb/ctf.c
@@ -304,11 +304,6 @@ ctf_target_save (struct trace_file_writer *self,
   return 0;
 }
 
-#ifdef USE_WIN32API
-#undef mkdir
-#define mkdir(pathname, mode) mkdir (pathname)
-#endif
-
 /* This is the implementation of trace_file_write_ops method
    start.  It creates the directory DIRNAME, metadata and datastream
    in the directory.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]