fix gettid() clash with new glibc

-----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJcq6KmAAoJEPMMOL0/L748fAkP/1YcBpk93iLN3/IBNby0LhGZ
 V0TVUEN6cDeGb409ejqszRaJYg83gwNpBFbZnpkP57DbcRf200Iyvi2hwCYGAckh
 otGSSQP/fj/FNZkj7D/TkzitYj3sM1aOA3w9G6fKd6Z3htrY9R2Xitv9/vsDAoDN
 QUh0U6ysjuRmLKPPM63yJQjvMnTWSAy6tvWmbLwcJ6Uf8BKOnxZsPQPWiT/pJRjb
 smCjTa4pJ6tcpQnjd/Uxmbxa9TO8aqkqnLm3WXSXtMEx0TG+XwoX6Y67bUG9Fjll
 wPhxashHp+b0jL2jqFE26ac5siKUwlRXNqeJKTy6d9pP9bcMskbCFgL18hPj549s
 SQDz5zKMnbxoIQaK744cbBN2pikhxG2VNMahyDn+nOsBmqO9we8eiD8cmNLpDIi+
 lGtnYY3imLVBeCxb1kGM/iiDiKKq6cY0W8nwIyYNYbWy+3CuSYYGfxTjs2tI0Rvx
 iOgaqtpGdNB1gme+P8U/I85EhIMTarEdKWJ900T2NdbKUr9Z/3sj8lBBq/aTHJxH
 ARYCm5G9G5WdO3ELiKj1ys4hgyHsrhad6sn1dOyahz/IDP008TJ3YsFTxZyji5Nq
 3Ajgs865L7mne630Gg06oWjk/BreeT6r4uIKKv936LNy8N6NE+QLPlBHYxDfc7Qa
 ZeeXPN2yqTP0fuoc+z4l
 =EX4I
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-4.0-pull-request' into staging

fix gettid() clash with new glibc

# gpg: Signature made Mon 08 Apr 2019 20:36:06 BST
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/linux-user-for-4.0-pull-request:
  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc
  linux-user: assume __NR_gettid always exists

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2019-04-09 10:02:30 +01:00
commit 248987f92c
1 changed files with 6 additions and 13 deletions

View File

@ -249,15 +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
#ifdef __NR_gettid #define __NR_sys_gettid __NR_gettid
_syscall0(int, gettid) _syscall0(int, sys_gettid)
#else
/* This is a replacement for the host gettid() and must return a host
errno. */
static int gettid(void) {
return -ENOSYS;
}
#endif
/* 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
@ -5442,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);
@ -5587,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);
@ -10629,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