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 Laurent Vivier
parent 184943d827
commit 71ba74f67e
1 changed files with 6 additions and 5 deletions

View File

@ -249,7 +249,8 @@ static 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)
/* For the 64-bit guest on 32-bit host case we must emulate /* For the 64-bit guest on 32-bit host case we must emulate
* getdents using getdents64, because otherwise the host * getdents using getdents64, because otherwise the host
@ -5434,7 +5435,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);
if (info->child_tidptr) if (info->child_tidptr)
put_user_u32(info->tid, info->child_tidptr); put_user_u32(info->tid, info->child_tidptr);
@ -5579,9 +5580,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);
ts = (TaskState *)cpu->opaque; ts = (TaskState *)cpu->opaque;
if (flags & CLONE_SETTLS) if (flags & CLONE_SETTLS)
cpu_set_tls (env, newtls); cpu_set_tls (env, newtls);
@ -10621,7 +10622,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
return TARGET_PAGE_SIZE; return TARGET_PAGE_SIZE;
#endif #endif
case TARGET_NR_gettid: case TARGET_NR_gettid:
return get_errno(gettid()); return get_errno(sys_gettid());
#ifdef TARGET_NR_readahead #ifdef TARGET_NR_readahead
case TARGET_NR_readahead: case TARGET_NR_readahead:
#if TARGET_ABI_BITS == 32 #if TARGET_ABI_BITS == 32