linux-user: rename gettid() to sys_gettid() to avoid clash with glibc

The glibc-2.29.9000-6.fc31.x86_64 package finally includes the gettid()
function as part of unistd.h when __USE_GNU is defined. This clashes
with linux-user code which unconditionally defines this function name
itself.

/home/berrange/src/virt/qemu/linux-user/syscall.c:253:16: error: static declaration of ‘gettid’ follows non-static declaration
  253 | _syscall0(int, gettid)
      |                ^~~~~~
/home/berrange/src/virt/qemu/linux-user/syscall.c:184:13: note: in definition of macro ‘_syscall0’
  184 | static type name (void)   \
      |             ^~~~
In file included from /usr/include/unistd.h:1170,
                 from /home/berrange/src/virt/qemu/include/qemu/osdep.h:107,
                 from /home/berrange/src/virt/qemu/linux-user/syscall.c:20:
/usr/include/bits/unistd_ext.h:34:16: note: previous declaration of ‘gettid’ was here
   34 | extern __pid_t gettid (void) __THROW;
      |                ^~~~~~
  CC      aarch64-linux-user/linux-user/signal.o
make[1]: *** [/home/berrange/src/virt/qemu/rules.mak:69: linux-user/syscall.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:449: subdir-aarch64-linux-user] Error 2

While we could make our definition conditional and rely on glibc's impl,
this patch simply renames our definition to sys_gettid() which is a
common pattern in this file.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20190320161842.13908-3-berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Daniel P. Berrangé 2019-03-20 16:18:42 +00:00 committed by queueRAM
parent d233430274
commit 939acda8af
1 changed files with 6 additions and 5 deletions

View File

@ -259,7 +259,8 @@ static inline type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,
#define TARGET_NR__llseek TARGET_NR_llseek #define TARGET_NR__llseek TARGET_NR_llseek
#endif #endif
_syscall0(int, gettid) #define __NR_sys_gettid __NR_gettid
_syscall0(int, sys_gettid)
#if defined(TARGET_NR_getdents) && defined(__NR_getdents) #if defined(TARGET_NR_getdents) && defined(__NR_getdents)
_syscall3(int, sys_getdents, uint, fd, struct linux_dirent *, dirp, uint, count); _syscall3(int, sys_getdents, uint, fd, struct linux_dirent *, dirp, uint, count);
@ -6441,7 +6442,7 @@ static void *clone_func(void *arg)
cpu = ENV_GET_CPU(env); cpu = ENV_GET_CPU(env);
thread_cpu = cpu; thread_cpu = cpu;
ts = (TaskState *)cpu->opaque; ts = (TaskState *)cpu->opaque;
info->tid = gettid(); info->tid = sys_gettid();
task_settid(ts); task_settid(ts);
#ifdef TARGET_ABI_IRIX #ifdef TARGET_ABI_IRIX
/* TODO: which fields in the PRDA are filled in by the IRIX kernel? */ /* TODO: which fields in the PRDA are filled in by the IRIX kernel? */
@ -6603,9 +6604,9 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
mapping. We can't repeat the spinlock hack used above because mapping. We can't repeat the spinlock hack used above because
the child process gets its own copy of the lock. */ the child process gets its own copy of the lock. */
if (flags & CLONE_CHILD_SETTID) if (flags & CLONE_CHILD_SETTID)
put_user_u32(gettid(), child_tidptr); put_user_u32(sys_gettid(), child_tidptr);
if (flags & CLONE_PARENT_SETTID) if (flags & CLONE_PARENT_SETTID)
put_user_u32(gettid(), parent_tidptr); put_user_u32(sys_gettid(), parent_tidptr);
if (flags & CLONE_SETTLS) if (flags & CLONE_SETTLS)
cpu_set_tls (env, newtls); cpu_set_tls (env, newtls);
if (flags & CLONE_CHILD_CLEARTID) if (flags & CLONE_CHILD_CLEARTID)
@ -12582,7 +12583,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
#endif #endif
#ifdef TARGET_NR_gettid #ifdef TARGET_NR_gettid
case TARGET_NR_gettid: case TARGET_NR_gettid:
ret = get_errno(gettid()); ret = get_errno(sys_gettid());
break; break;
#endif #endif
#ifdef TARGET_NR_readahead #ifdef TARGET_NR_readahead