This is the mail archive of the gdb-patches@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]

Re: [PATCH] Fix build issue due to Introduce nat/linux-namespaces.[ch] patch


Hi Peter,

Peter Bergner wrote:
> I have a toolchain that dies building gdb with the following error:
> 
> /home/bergner/binutils/binutils-gdb/gdb/nat/linux-namespaces.c:39:1: error: static declaration of âsetnsâ follows non-static declaration
>  setns (int fd, int nstype)
>  ^
> In file included from /opt/at7.0/include/sched.h:41:0,
>                  from /home/bergner/binutils/binutils-gdb/gdb/nat/linux-namespaces.c:30:
> /opt/at7.0/include/bits/sched.h:91:12: note: previous declaration of âsetnsâ was here
>  extern int setns (int __fd, int __nstype) __THROW;
>             ^
> make[2]: *** [linux-namespaces.o] Error 1
> 
> My configure doesn't define HAVE_SETNS because my glibc defines
> __stub_setns, so nat/linux-namespaces.c defines its own setns
> routine.  However, my glibc also has its sched.h with a extern
> prototype for setns, which conflicts with this static version
> linux-namespaces.c is creating, so we get the error above.  How
> about the following patch to work around the error?  I can confirm
> that it fixes the problem on my multiple systems that do and do not
> have setns.
> 
> Ok for trunk?

I'd prefer it without the nested conditionals:

  #ifdef HAVE_SETNS
    return setns (fd, nstype);
  #elif defined __NR_setns
    return syscall (__NR_setns, fd, nstype);
  #else
    errno = ENOSYS;
    return -1;
  #endif

Otherwise ok.  Thanks for doing this work!

Cheers,
Gary

-- 
http://gbenson.net/


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