From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30141 invoked by alias); 12 Jul 2012 23:40:49 -0000 Received: (qmail 29650 invoked by uid 22791); 12 Jul 2012 23:40:31 -0000 X-SWARE-Spam-Status: No, hits=-3.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,TW_FC,TW_FN,TW_LR,TW_MK,TW_TM X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Jul 2012 23:40:04 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1SpSzL-0004Eb-Lt from joseph_myers@mentor.com ; Thu, 12 Jul 2012 16:40:03 -0700 Received: from SVR-IES-FEM-01.mgc.mentorg.com ([137.202.0.104]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Thu, 12 Jul 2012 16:40:03 -0700 Received: from digraph.polyomino.org.uk (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.1.289.1; Fri, 13 Jul 2012 00:39:59 +0100 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.76) (envelope-from ) id 1SpSzG-0004Ko-Mf; Thu, 12 Jul 2012 23:39:58 +0000 Date: Thu, 12 Jul 2012 23:40:00 -0000 From: "Joseph S. Myers" To: CC: , Subject: Remove pre-2.4.21 Linux kernel support Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-1152306461-1545214434-1342136398=:30566" Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org X-SW-Source: 2012-07/txt/msg00033.txt.bz2 ---1152306461-1545214434-1342136398=:30566 Content-Type: text/plain; charset="US-ASCII" Content-length: 40104 Continuing the removal of compatibility code for old Linux kernel versions, this patch increases the minimum kernel version from 2.4.1 to 2.4.21. This allows removal of all conditions on specific 2.4 kernel versions except for __ASSUME_TMPFS_NAME (where the comment says 2.4.20 but the code is actually testing against 2.4.26; I'll deal with that when moving the required version to 2.6.0 rather than working out whether actually 2.4.21 is enough there). A fair amount of the patch deals with some macros defined and used only for powerpc; could a powerpc maintainer review / test these changes? (There are also ports changes to m68k/kernel-features.h, but those are trivial.) There was a single __ASSUME_NETLINK_SUPPORT test outside of sysdeps/unix/sysv/linux, but it was only testing whether to define the __no_netlink_support variable, previously used by some code that may be built into nscd. Since the patch eliminates all uses of that variable, the definition in nscd is no longer needed, so in fact all __ASSUME_NETLINK_SUPPORT tests can go (there was no substantive use relevant to non-Linux kernels) and so this patch removes them all and the definition. Tested x86 and x86_64. A version of the patch diffed with -w is attached for convenience of reviewing those changes that involve reindentation. 2012-07-12 Joseph Myers [BZ #13717] * sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel): Change to 2.4.21 where previously 2.4.1. * sysdeps/unix/sysv/linux/configure: Regenerated. * sysdeps/unix/sysv/linux/kernel-features.h [(__powerpc__ || __sh__) && !__powerpc64__] (__ASSUME_FCNTL64): Do not condition on Linux kernel version. (__ASSUME_STD_AUXV): Remove. [__powerpc__] (__ASSUME_VFORK_SYSCALL): Do not condition on Linux kernel version. [__powerpc__ && !__powerpc64] (__ASSUME_MMAP2_SYSCALL): Likewise. (__ASSUME_NEW_PRCTL_SYSCALL): Remove. (__ASSUME_FIXED_CLONE_SYSCALL): Likewise. (__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Likewise. (__ASSUME_NETLINK_SUPPORT): Likewise. * nscd/gai.c [NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0] (__no_netlink_support): Remove conditional definition. * sysdeps/unix/sysv/linux/check_pf.c (__no_netlink_support): Remove. (__check_pf) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. [__ASSUME_NETLINK_SUPPORT]: Make code unconditional. * sysdeps/unix/sysv/linux/if_index.c [!__ASSUME_NETLINK_SUPPORT] (if_nameindex_ioctl): Remove. (if_nameindex_netlink): Do not handle __no_netlink_support. (if_nameindex) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. * sysdeps/unix/sysv/linux/ifaddrs.c [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. (__netlink_open) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. (getifaddrs_internal) [__ASSUME_NETLINK_SUPPORT]: Make code unconditional. [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. [__ASSUME_NETLINK_SUPPORT] (freeifaddrs): Make code unconditional. * sysdeps/unix/sysv/linux/netlinkaccess.h (__no_netlink_support): Remove. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c [!__ASSUME_STD_AUXV]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S (__clone) [!__ASSUME_FIXED_CLONE_SYSCALL]: Remove conditional code. [__ASSUME_FIXED_CLONE_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c [!__ASSUME_NEW_PRCTL_SYSCALL] (fe_mask_handler): Remove. (__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. [__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c [!__ASSUME_NEW_PRCTL_SYSCALL] (fe_nomask_handler): Remove. (__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. [__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c (__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c (__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S (__novec_getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S (__makecontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__makecontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S (__novec_setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S (__novec_swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. ports/ChangeLog.arm: 2012-07-12 Joseph Myers * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_FCNTL64): Define unconditionally. ports/ChangeLog.m68k: 2012-07-12 Joseph Myers * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_MMAP2_SYSCALL): Define unconditionally. (__ASSUME_STAT64_SYSCALL): Likewise. (__ASSUME_FCNTL64): Likewise. (__ASSUME_VFORK_SYSCALL): Likewise. diff --git a/nscd/gai.c b/nscd/gai.c index 2df7ea7..1c6527c 100644 --- a/nscd/gai.c +++ b/nscd/gai.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2004-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2004. @@ -43,7 +43,3 @@ /* Some variables normally defined in libc. */ service_user *__nss_hosts_database; - -#if defined NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0 -int __no_netlink_support attribute_hidden; -#endif diff --git a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h index 90c59ef..9092df7 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -28,9 +28,7 @@ #define __ASSUME_STAT64_SYSCALL 1 /* Arm got fcntl64 in 2.4.4. */ -#if __LINUX_KERNEL_VERSION >= 132100 -# define __ASSUME_FCNTL64 1 -#endif +#define __ASSUME_FCNTL64 1 /* The vfork syscall on arm was definitely available in 2.4. */ #define __ASSUME_VFORK_SYSCALL 1 diff --git a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h index c12be9e..3b0b441 100644 --- a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -18,12 +18,10 @@ . */ /* These features were surely available with 2.4.12. */ -#if __LINUX_KERNEL_VERSION >= 132108 -# define __ASSUME_MMAP2_SYSCALL 1 -# define __ASSUME_STAT64_SYSCALL 1 -# define __ASSUME_FCNTL64 1 -# define __ASSUME_VFORK_SYSCALL 1 -#endif +#define __ASSUME_MMAP2_SYSCALL 1 +#define __ASSUME_STAT64_SYSCALL 1 +#define __ASSUME_FCNTL64 1 +#define __ASSUME_VFORK_SYSCALL 1 /* Many syscalls were added in 2.6.10 for m68k. */ #if __LINUX_KERNEL_VERSION >= 132618 diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index 793d27d..950498a 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -1,5 +1,5 @@ /* Determine protocol families for which interfaces exist. Linux version. - Copyright (C) 2003, 2006-2008, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2003-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -289,16 +289,6 @@ out_fail: } -/* We don't know if we have NETLINK support compiled into our - Kernel. */ -#if __ASSUME_NETLINK_SUPPORT == 0 -/* Define in ifaddrs.h. */ -extern int __no_netlink_support attribute_hidden; -#else -# define __no_netlink_support 0 -#endif - - void attribute_hidden __check_pf (bool *seen_ipv4, bool *seen_ipv6, @@ -307,12 +297,10 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, *in6ai = NULL; *in6ailen = 0; - if (! __no_netlink_support) - { - struct cached_data *olddata = NULL; - struct cached_data *data = NULL; + struct cached_data *olddata = NULL; + struct cached_data *data = NULL; - __libc_lock_lock (lock); + __libc_lock_lock (lock); #ifdef IS_IN_nscd # define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp @@ -321,90 +309,59 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, ({ uint32_t val = __nscd_get_nl_timestamp (); \ val != 0 && cache->timestamp == val; }) #endif - if (cache != NULL && cache_valid ()) - { - data = cache; - atomic_increment (&cache->usecnt); - } - else - { - int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - - if (__builtin_expect (fd >= 0, 1)) - { - struct sockaddr_nl nladdr; - memset (&nladdr, '\0', sizeof (nladdr)); - nladdr.nl_family = AF_NETLINK; + if (cache != NULL && cache_valid ()) + { + data = cache; + atomic_increment (&cache->usecnt); + } + else + { + int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - socklen_t addr_len = sizeof (nladdr); + if (__builtin_expect (fd >= 0, 1)) + { + struct sockaddr_nl nladdr; + memset (&nladdr, '\0', sizeof (nladdr)); + nladdr.nl_family = AF_NETLINK; - if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 - && __getsockname (fd, (struct sockaddr *) &nladdr, - &addr_len) == 0) - data = make_request (fd, nladdr.nl_pid); + socklen_t addr_len = sizeof (nladdr); - close_not_cancel_no_status (fd); - } + if (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 + && __getsockname (fd, (struct sockaddr *) &nladdr, + &addr_len) == 0) + data = make_request (fd, nladdr.nl_pid); - if (data != NULL) - { - olddata = cache; - cache = data; - } + close_not_cancel_no_status (fd); } - __libc_lock_unlock (lock); - if (data != NULL) { - /* It worked. */ - *seen_ipv4 = data->seen_ipv4; - *seen_ipv6 = data->seen_ipv6; - *in6ailen = data->in6ailen; - *in6ai = data->in6ai; - - if (olddata != NULL && olddata->usecnt > 0 - && atomic_add_zero (&olddata->usecnt, -1)) - free (olddata); - - return; + olddata = cache; + cache = data; } - -#if __ASSUME_NETLINK_SUPPORT == 0 - /* Remember that there is no netlink support. */ - __no_netlink_support = 1; -#else - /* We cannot determine what interfaces are available. Be - pessimistic. */ - *seen_ipv4 = true; - *seen_ipv6 = true; -#endif } -#if __ASSUME_NETLINK_SUPPORT == 0 - /* No netlink. Get the interface list via getifaddrs. */ - struct ifaddrs *ifa = NULL; - if (getifaddrs (&ifa) != 0) + __libc_lock_unlock (lock); + + if (data != NULL) { - /* We cannot determine what interfaces are available. Be - pessimistic. */ - *seen_ipv4 = true; - *seen_ipv6 = true; + /* It worked. */ + *seen_ipv4 = data->seen_ipv4; + *seen_ipv6 = data->seen_ipv6; + *in6ailen = data->in6ailen; + *in6ai = data->in6ai; + + if (olddata != NULL && olddata->usecnt > 0 + && atomic_add_zero (&olddata->usecnt, -1)) + free (olddata); + return; } - struct ifaddrs *runp; - for (runp = ifa; runp != NULL; runp = runp->ifa_next) - if (runp->ifa_addr != NULL) - { - if (runp->ifa_addr->sa_family == PF_INET) - *seen_ipv4 = true; - else if (runp->ifa_addr->sa_family == PF_INET6) - *seen_ipv6 = true; - } - - (void) freeifaddrs (ifa); -#endif + /* We cannot determine what interfaces are available. Be + pessimistic. */ + *seen_ipv4 = true; + *seen_ipv6 = true; } diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure index b86b763..0650067 100644 --- a/sysdeps/unix/sysv/linux/configure +++ b/sysdeps/unix/sysv/linux/configure @@ -284,25 +284,22 @@ test -n "$arch_minimum_kernel" || case "$machine" in i386*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; powerpc/powerpc32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 - ;; - powerpc/powerpc64) arch_minimum_kernel=2.4.21 ;; s390/s390-32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; s390/s390-64) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; sh*) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 libc_cv_gcc_unwind_find_fde=yes ;; sparc/sparc64*) @@ -311,10 +308,10 @@ case "$machine" in ;; sparc*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; *) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; esac if test -n "$minimum_kernel"; then diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in index 05cf3bc..fc514fb 100644 --- a/sysdeps/unix/sysv/linux/configure.in +++ b/sysdeps/unix/sysv/linux/configure.in @@ -41,25 +41,22 @@ test -n "$arch_minimum_kernel" || case "$machine" in i386*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; powerpc/powerpc32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 - ;; - powerpc/powerpc64) arch_minimum_kernel=2.4.21 ;; s390/s390-32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; s390/s390-64) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; sh*) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 libc_cv_gcc_unwind_find_fde=yes ;; sparc/sparc64*) @@ -68,10 +65,10 @@ case "$machine" in ;; sparc*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; *) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; esac if test -n "$minimum_kernel"; then diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c index 3c86bb8..cf33683 100644 --- a/sysdeps/unix/sysv/linux/if_index.c +++ b/sysdeps/unix/sysv/linux/if_index.c @@ -74,90 +74,13 @@ if_freenameindex (struct if_nameindex *ifn) libc_hidden_def (if_freenameindex) -#if __ASSUME_NETLINK_SUPPORT == 0 -static struct if_nameindex * -if_nameindex_ioctl (void) -{ - int fd = __opensock (); - struct ifconf ifc; - unsigned int nifs, i; - int rq_len; - struct if_nameindex *idx = NULL; -# define RQ_IFS 4 - - if (fd < 0) - return NULL; - - ifc.ifc_buf = NULL; - - /* We may be able to get the needed buffer size directly, rather than - guessing. */ - ifc.ifc_buf = NULL; - ifc.ifc_len = 0; - if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0) - rq_len = RQ_IFS * sizeof (struct ifreq); - else - rq_len = ifc.ifc_len; - - /* Read all the interfaces out of the kernel. */ - ifc.ifc_buf = alloca (rq_len); - ifc.ifc_len = rq_len; - if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0) - { - close_not_cancel_no_status (fd); - return NULL; - } - - nifs = ifc.ifc_len / sizeof (struct ifreq); - - idx = malloc ((nifs + 1) * sizeof (struct if_nameindex)); - if (idx == NULL) - { - close_not_cancel_no_status (fd); - __set_errno (ENOBUFS); - return NULL; - } - - for (i = 0; i < nifs; ++i) - { - struct ifreq *ifr = &ifc.ifc_req[i]; - idx[i].if_name = __strdup (ifr->ifr_name); - if (idx[i].if_name == NULL - || __ioctl (fd, SIOCGIFINDEX, ifr) < 0) - { - int saved_errno = errno; - unsigned int j; - - for (j = 0; j < i; ++j) - free (idx[j].if_name); - free (idx); - close_not_cancel_no_status (fd); - if (saved_errno == EINVAL) - saved_errno = ENOSYS; - else if (saved_errno == ENOMEM) - saved_errno = ENOBUFS; - __set_errno (saved_errno); - return NULL; - } - idx[i].if_index = ifr->ifr_ifindex; - } - - idx[i].if_index = 0; - idx[i].if_name = NULL; - - close_not_cancel_no_status (fd); - return idx; -} -#endif - - static struct if_nameindex * if_nameindex_netlink (void) { struct netlink_handle nh = { 0, 0, 0, NULL, NULL }; struct if_nameindex *idx = NULL; - if (__no_netlink_support || __netlink_open (&nh) < 0) + if (__netlink_open (&nh) < 0) return NULL; @@ -274,10 +197,6 @@ if_nameindex (void) return NULL; #else struct if_nameindex *result = if_nameindex_netlink (); -# if __ASSUME_NETLINK_SUPPORT == 0 - if (__no_netlink_support) - result = if_nameindex_ioctl (); -# endif return result; #endif } diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c index 51836b0..1796531 100644 --- a/sysdeps/unix/sysv/linux/ifaddrs.c +++ b/sysdeps/unix/sysv/linux/ifaddrs.c @@ -1,5 +1,5 @@ /* getifaddrs -- get names and addresses of all network interfaces - Copyright (C) 2003-2008, 2009, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2003-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,17 +37,6 @@ #include "netlinkaccess.h" -/* We don't know if we have NETLINK support compiled into our - Kernel, so include the old implementation as fallback. */ -#if __ASSUME_NETLINK_SUPPORT == 0 -int __no_netlink_support attribute_hidden; - -# define getifaddrs fallback_getifaddrs -# include "sysdeps/gnu/ifaddrs.c" -# undef getifaddrs -#endif - - /* There is a problem with this type. The address length for Infiniband sockets is much longer than the 8 bytes allocated in the sockaddr_ll definition. Hence we use here a special @@ -274,9 +263,6 @@ __netlink_open (struct netlink_handle *h) close_and_out: __netlink_close (h); out: -#if __ASSUME_NETLINK_SUPPORT == 0 - __no_netlink_support = 1; -#endif return -1; } /* Determine the ID the kernel assigned for this netlink connection. @@ -340,17 +326,8 @@ getifaddrs_internal (struct ifaddrs **ifap) *ifap = NULL; - if (! __no_netlink_support && __netlink_open (&nh) < 0) - { -#if __ASSUME_NETLINK_SUPPORT != 0 - return -1; -#endif - } - -#if __ASSUME_NETLINK_SUPPORT == 0 - if (__no_netlink_support) - return fallback_getifaddrs (ifap); -#endif + if (__netlink_open (&nh) < 0) + return -1; /* Tell the kernel that we wish to get a list of all active interfaces, collect all data for every interface. */ @@ -859,11 +836,9 @@ getifaddrs (struct ifaddrs **ifap) libc_hidden_def (getifaddrs) -#if __ASSUME_NETLINK_SUPPORT != 0 void freeifaddrs (struct ifaddrs *ifa) { free (ifa); } libc_hidden_def (freeifaddrs) -#endif diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 6e64def..cfe335d 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -91,8 +91,7 @@ /* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I don't know when it got introduced). But PowerPC64 does not support separate FCNTL64 call, FCNTL is already 64-bit */ -#if __LINUX_KERNEL_VERSION >= 132100 \ - && (defined __powerpc__ || defined __sh__) \ +#if (defined __powerpc__ || defined __sh__) \ && !defined __powerpc64__ # define __ASSUME_FCNTL64 1 #endif @@ -101,39 +100,18 @@ MIPS n32). */ #define __ASSUME_GETDENTS64_SYSCALL 1 -/* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way - and the vfork syscall made it into the official kernel. */ -#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ -# define __ASSUME_STD_AUXV 1 +/* Starting with 2.4.5 kernels the vfork syscall made it into the + official kernel for PPC. */ +#ifdef __powerpc__ # define __ASSUME_VFORK_SYSCALL 1 #endif /* Starting with 2.4.5 kernels the mmap2 syscall made it into the official kernel. But PowerPC64 does not support a separate MMAP2 call. */ -#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ \ - && !defined __powerpc64__ +#if defined __powerpc__ && !defined __powerpc64__ # define __ASSUME_MMAP2_SYSCALL 1 #endif -/* Starting with 2.4.21 PowerPC implements the new prctl syscall. - This allows applications to get/set the Floating Point Exception Mode. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ -# define __ASSUME_NEW_PRCTL_SYSCALL 1 -#endif - -/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \ - && !defined __powerpc64__ -# define __ASSUME_FIXED_CLONE_SYSCALL 1 -#endif - -/* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall. - The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn - to be used in the set/swapcontext implementation. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc64__ -# define __ASSUME_NEW_RT_SIGRETURN_SYSCALL 1 -#endif - /* On x86, the set_thread_area syscall was introduced in 2.5.29, but its semantics was changed in 2.5.30, and again after 2.5.31. */ #if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__ @@ -169,11 +147,6 @@ # define __ASSUME_POSIX_CPU_TIMERS 1 #endif -/* With kernel 2.4.17 we always have netlink support. */ -#if __LINUX_KERNEL_VERSION >= (132096+17) -# define __ASSUME_NETLINK_SUPPORT 1 -#endif - /* The requeue futex functionality was introduced in 2.5.70. */ #if __LINUX_KERNEL_VERSION >= 132422 # define __ASSUME_FUTEX_REQUEUE 1 diff --git a/sysdeps/unix/sysv/linux/netlinkaccess.h b/sysdeps/unix/sysv/linux/netlinkaccess.h index cb190c0..6cd8a88 100644 --- a/sysdeps/unix/sysv/linux/netlinkaccess.h +++ b/sysdeps/unix/sysv/linux/netlinkaccess.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. +/* Copyright (C) 2004-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,13 +44,6 @@ struct netlink_handle }; -#if __ASSUME_NETLINK_SUPPORT == 0 -extern int __no_netlink_support attribute_hidden; -#else -# define __no_netlink_support 0 -#endif - - extern int __netlink_open (struct netlink_handle *h); extern void __netlink_close (struct netlink_handle *h); extern void __netlink_free_handle (struct netlink_handle *h); diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 00595f9..0ff8faa 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -1,6 +1,5 @@ /* Operating system support for run-time dynamic linker. Linux/PPC version. - Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1997-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,35 +31,4 @@ int __cache_line_size attribute_hidden; __cache_line_size = av->a_un.a_val; \ break; -#ifndef __ASSUME_STD_AUXV - -/* The PowerPC's auxiliary argument block gets aligned to a 16-byte - boundary. This is history and impossible to change compatibly. */ - -#define DL_FIND_ARG_COMPONENTS(cookie, argc, argv, envp, auxp) \ - do { \ - char **_tmp; \ - size_t _test; \ - (argc) = *(long int *) cookie; \ - (argv) = (char **) cookie + 1; \ - (envp) = (argv) + (argc) + 1; \ - for (_tmp = (envp); *_tmp; ++_tmp) \ - continue; \ - /* The following '++' is important! */ \ - ++_tmp; \ - \ - _test = (size_t)_tmp; \ - _test = (_test + 0xf) & ~0xf; \ - /* Under some circumstances, MkLinux (up to at least DR3a5) \ - omits the padding. To work around this, we make a \ - basic sanity check of the argument vector. Of \ - course, this means that in future, the argument \ - vector will have to be laid out to allow for this \ - test :-(. */ \ - if (((ElfW(auxv_t) *)_test)->a_type <= 0x10) \ - _tmp = (char **)_test; \ - (auxp) = (ElfW(auxv_t) *) _tmp; \ - } while (0) -#endif - #include diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S index 57640aa..fb16519 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. - Copyright (C) 1997,98,99,2000,02,04,2006 Free Software Foundation, Inc. + Copyright (C) 1997-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -52,11 +52,7 @@ ENTRY (BP_SYM (__clone)) #ifdef RESET_PID stmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - stmw r29,16(r1) -# else stmw r30,16(r1) -# endif #endif /* Set up stack frame for child. */ @@ -66,9 +62,6 @@ ENTRY (BP_SYM (__clone)) /* Save fn, args, stack across syscall. */ mr r30,r3 /* Function in r30. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - mr r29,r4 /* Stack pointer in r29. */ -#endif #ifdef RESET_PID mr r28,r5 #endif @@ -95,14 +88,6 @@ ENTRY (BP_SYM (__clone)) crandc cr1*4+eq,cr1*4+eq,cr0*4+so bne- cr1,L(parent) /* The '-' is to minimise the race. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - /* On at least mklinux DR3a5, clone() doesn't actually change - the stack pointer. I'm pretty sure this is a bug, because - it adds a race condition if a signal is sent to a thread - just after it is created (in the previous three instructions). */ - mr r1,r29 -#endif - #ifdef RESET_PID andis. r0,r28,CLONE_THREAD>>16 bne+ r0,L(oldpid) @@ -128,11 +113,7 @@ L(parent): #ifdef RESET_PID lmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - lmw r29,16(r1) -# else lmw r30,16(r1) -# endif #endif addi r1,r1,32 bnslr+ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c index 0642e0b..366c5fe 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -24,44 +24,11 @@ #include #include -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -/* This is rather fiddly under Linux. We don't have direct access, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_mask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr &= ~0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_mask_env (void) { -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -# if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED - int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_mask_handler; - sigemptyset (&act.sa_mask); - act.sa_flags = 0; - - sigaction (SIGUSR1, &act, &oact); - raise (SIGUSR1); - } -#else INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); -#endif return FE_DFL_ENV; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c index 2097af6..86738fd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc. - Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2000-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -24,44 +24,11 @@ #include #include -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -/* This is rather fiddly under Linux. We don't have direct access, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_nomask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr |= 0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_nomask_env (void) { -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -# if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE - int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_nomask_handler; - sigemptyset (&act.sa_mask); - act.sa_flags = 0; - - sigaction (SIGUSR1, &act, &oact); - raise (SIGUSR1); - } -#else INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); -#endif return FE_ENABLED_ENV; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c index 9d41ae7..e4bcd98 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc64. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,11 +30,6 @@ __fe_mask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c index 14cf14d..46b9478 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64. - Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2003-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,11 +30,6 @@ __fe_nomask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S index 533d98b..472b785 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,7 +30,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -137,18 +136,6 @@ ENTRY(__novec_getcontext) li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 @@ -172,7 +159,6 @@ compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3) .machine "altivec" ENTRY(__getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -388,18 +374,6 @@ L(has_no_vec): li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S index 9d5898c..ded2a35 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,7 +26,6 @@ ENTRY(__makecontext) CALL_MCOUNT 3 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL /* Save parameters into the parameter save area of callers frame. */ std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */ std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */ @@ -166,22 +165,6 @@ L(gotexitcodeaddr): addi r1,r1,128 mtlr r0 blr -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif END(__makecontext) weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S index 988ea3a..a7192a6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S @@ -1,6 +1,5 @@ /* Switch to context. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,7 +38,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -200,22 +198,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_setcontext) @@ -227,7 +209,6 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3) .machine "altivec" ENTRY(__setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -491,22 +472,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__setcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S index 6b007a5..f20e9a9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S @@ -1,6 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,7 +38,6 @@ .section ".text" ENTRY(__novec_swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -294,21 +292,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_swapcontext) @@ -320,7 +303,6 @@ compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3) .machine "altivec" ENTRY(__swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -789,22 +771,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__swapcontext) -- Joseph S. Myers joseph@codesourcery.com ---1152306461-1545214434-1342136398=:30566 Content-Type: text/plain; charset="US-ASCII"; name="glibc-2421-w" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="glibc-2421-w" Content-length: 44002 ZGlmZiAtLWdpdCBhL25zY2QvZ2FpLmMgYi9uc2NkL2dhaS5jDQppbmRleCAy ZGY3ZWE3Li4xYzY1MjdjIDEwMDY0NA0KLS0tIGEvbnNjZC9nYWkuYw0KKysr IGIvbnNjZC9nYWkuYw0KQEAgLTEsNCArMSw0IEBADQotLyogQ29weXJpZ2h0 IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLg0KKy8qIENvcHlyaWdodCAoQykgMjAwNC0yMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KICAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5Lg0KICAgIENvbnRyaWJ1dGVk IGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAyMDA0 Lg0KIA0KQEAgLTQzLDcgKzQzLDMgQEANCiANCiAvKiBTb21lIHZhcmlhYmxl cyBub3JtYWxseSBkZWZpbmVkIGluIGxpYmMuICAqLw0KIHNlcnZpY2VfdXNl ciAqX19uc3NfaG9zdHNfZGF0YWJhc2U7DQotDQotI2lmIGRlZmluZWQgTkVF RF9ORVRMSU5LICYmIF9fQVNTVU1FX05FVExJTktfU1VQUE9SVCA9PSAwDQot aW50IF9fbm9fbmV0bGlua19zdXBwb3J0IGF0dHJpYnV0ZV9oaWRkZW47DQot I2VuZGlmDQpkaWZmIC0tZ2l0IGEvcG9ydHMvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvYXJtL2tlcm5lbC1mZWF0dXJlcy5oIGIvcG9ydHMvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvYXJtL2tlcm5lbC1mZWF0dXJlcy5oDQppbmRleCA5 MGM1OWVmLi45MDkyZGY3IDEwMDY0NA0KLS0tIGEvcG9ydHMvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvYXJtL2tlcm5lbC1mZWF0dXJlcy5oDQorKysgYi9w b3J0cy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0va2VybmVsLWZlYXR1 cmVzLmgNCkBAIC0yOCw5ICsyOCw3IEBADQogI2RlZmluZSBfX0FTU1VNRV9T VEFUNjRfU1lTQ0FMTAkxDQogDQogLyogQXJtIGdvdCBmY250bDY0IGluIDIu NC40LiAgKi8NCi0jaWYgX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAxMzIx MDANCiAjIGRlZmluZSBfX0FTU1VNRV9GQ05UTDY0CQkxDQotI2VuZGlmDQog DQogLyogVGhlIHZmb3JrIHN5c2NhbGwgb24gYXJtIHdhcyBkZWZpbml0ZWx5 IGF2YWlsYWJsZSBpbiAyLjQuICAqLw0KICNkZWZpbmUgX19BU1NVTUVfVkZP UktfU1lTQ0FMTAkJMQ0KZGlmZiAtLWdpdCBhL3BvcnRzL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L202OGsva2VybmVsLWZlYXR1cmVzLmggYi9wb3J0cy9z eXNkZXBzL3VuaXgvc3lzdi9saW51eC9tNjhrL2tlcm5lbC1mZWF0dXJlcy5o DQppbmRleCBjMTJiZTllLi4zYjBiNDQxIDEwMDY0NA0KLS0tIGEvcG9ydHMv c3lzZGVwcy91bml4L3N5c3YvbGludXgvbTY4ay9rZXJuZWwtZmVhdHVyZXMu aA0KKysrIGIvcG9ydHMvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbTY4ay9r ZXJuZWwtZmVhdHVyZXMuaA0KQEAgLTE4LDEyICsxOCwxMCBAQA0KICAgIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovDQogDQogLyogVGhl c2UgZmVhdHVyZXMgd2VyZSBzdXJlbHkgYXZhaWxhYmxlIHdpdGggMi40LjEy LiAgKi8NCi0jaWYgX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAxMzIxMDgN CiAjIGRlZmluZSBfX0FTU1VNRV9NTUFQMl9TWVNDQUxMCQkxDQogIyBkZWZp bmUgX19BU1NVTUVfU1RBVDY0X1NZU0NBTEwJMQ0KICMgZGVmaW5lIF9fQVNT VU1FX0ZDTlRMNjQJCTENCiAjIGRlZmluZSBfX0FTU1VNRV9WRk9SS19TWVND QUxMCQkxDQotI2VuZGlmDQogDQogLyogTWFueSBzeXNjYWxscyB3ZXJlIGFk ZGVkIGluIDIuNi4xMCBmb3IgbTY4ay4gICovDQogI2lmIF9fTElOVVhfS0VS TkVMX1ZFUlNJT04gPj0gMTMyNjE4DQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvY2hlY2tfcGYuYyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L2NoZWNrX3BmLmMNCmluZGV4IDc5M2QyN2QuLjk1MDQ5OGEgMTAw NjQ0DQotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jaGVja19wZi5j DQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jaGVja19wZi5jDQpA QCAtMSw1ICsxLDUgQEANCiAvKiBEZXRlcm1pbmUgcHJvdG9jb2wgZmFtaWxp ZXMgZm9yIHdoaWNoIGludGVyZmFjZXMgZXhpc3QuICBMaW51eCB2ZXJzaW9u Lg0KLSAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNi0yMDA4LCAyMDEwLCAy MDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyAgIENvcHly aWdodCAoQykgMjAwMy0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLg0KICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJy YXJ5Lg0KIA0KICAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KQEAgLTI4OSwx NiArMjg5LDYgQEAgb3V0X2ZhaWw6DQogfQ0KIA0KIA0KLS8qIFdlIGRvbid0 IGtub3cgaWYgd2UgaGF2ZSBORVRMSU5LIHN1cHBvcnQgY29tcGlsZWQgaW50 byBvdXINCi0gICBLZXJuZWwuICAqLw0KLSNpZiBfX0FTU1VNRV9ORVRMSU5L X1NVUFBPUlQgPT0gMA0KLS8qIERlZmluZSBpbiBpZmFkZHJzLmguICAqLw0K LWV4dGVybiBpbnQgX19ub19uZXRsaW5rX3N1cHBvcnQgYXR0cmlidXRlX2hp ZGRlbjsNCi0jZWxzZQ0KLSMgZGVmaW5lIF9fbm9fbmV0bGlua19zdXBwb3J0 IDANCi0jZW5kaWYNCi0NCi0NCiB2b2lkDQogYXR0cmlidXRlX2hpZGRlbg0K IF9fY2hlY2tfcGYgKGJvb2wgKnNlZW5faXB2NCwgYm9vbCAqc2Vlbl9pcHY2 LA0KQEAgLTMwNyw4ICsyOTcsNiBAQCBfX2NoZWNrX3BmIChib29sICpzZWVu X2lwdjQsIGJvb2wgKnNlZW5faXB2NiwNCiAgICppbjZhaSA9IE5VTEw7DQog ICAqaW42YWlsZW4gPSAwOw0KIA0KLSAgaWYgKCEgX19ub19uZXRsaW5rX3N1 cHBvcnQpDQotICAgIHsNCiAgICAgICBzdHJ1Y3QgY2FjaGVkX2RhdGEgKm9s ZGRhdGEgPSBOVUxMOw0KICAgICAgIHN0cnVjdCBjYWNoZWRfZGF0YSAqZGF0 YSA9IE5VTEw7DQogDQpAQCAtMzcwLDQxICszNTgsMTAgQEAgX19jaGVja19w ZiAoYm9vbCAqc2Vlbl9pcHY0LCBib29sICpzZWVuX2lwdjYsDQogCSAgcmV0 dXJuOw0KIAl9DQogDQotI2lmIF9fQVNTVU1FX05FVExJTktfU1VQUE9SVCA9 PSAwDQotICAgICAgLyogUmVtZW1iZXIgdGhhdCB0aGVyZSBpcyBubyBuZXRs aW5rIHN1cHBvcnQuICAqLw0KLSAgICAgIF9fbm9fbmV0bGlua19zdXBwb3J0 ID0gMTsNCi0jZWxzZQ0KICAgICAgIC8qIFdlIGNhbm5vdCBkZXRlcm1pbmUg d2hhdCBpbnRlcmZhY2VzIGFyZSBhdmFpbGFibGUuICBCZQ0KIAkgcGVzc2lt aXN0aWMuICAqLw0KICAgICAgICpzZWVuX2lwdjQgPSB0cnVlOw0KICAgICAg ICpzZWVuX2lwdjYgPSB0cnVlOw0KLSNlbmRpZg0KLSAgICB9DQotDQotI2lm IF9fQVNTVU1FX05FVExJTktfU1VQUE9SVCA9PSAwDQotICAvKiBObyBuZXRs aW5rLiAgR2V0IHRoZSBpbnRlcmZhY2UgbGlzdCB2aWEgZ2V0aWZhZGRycy4g ICovDQotICBzdHJ1Y3QgaWZhZGRycyAqaWZhID0gTlVMTDsNCi0gIGlmIChn ZXRpZmFkZHJzICgmaWZhKSAhPSAwKQ0KLSAgICB7DQotICAgICAgLyogV2Ug Y2Fubm90IGRldGVybWluZSB3aGF0IGludGVyZmFjZXMgYXJlIGF2YWlsYWJs ZS4gIEJlDQotCSBwZXNzaW1pc3RpYy4gICovDQotICAgICAgKnNlZW5faXB2 NCA9IHRydWU7DQotICAgICAgKnNlZW5faXB2NiA9IHRydWU7DQotICAgICAg cmV0dXJuOw0KLSAgICB9DQotDQotICBzdHJ1Y3QgaWZhZGRycyAqcnVucDsN Ci0gIGZvciAocnVucCA9IGlmYTsgcnVucCAhPSBOVUxMOyBydW5wID0gcnVu cC0+aWZhX25leHQpDQotICAgIGlmIChydW5wLT5pZmFfYWRkciAhPSBOVUxM KQ0KLSAgICAgIHsNCi0JaWYgKHJ1bnAtPmlmYV9hZGRyLT5zYV9mYW1pbHkg PT0gUEZfSU5FVCkNCi0JICAqc2Vlbl9pcHY0ID0gdHJ1ZTsNCi0JZWxzZSBp ZiAocnVucC0+aWZhX2FkZHItPnNhX2ZhbWlseSA9PSBQRl9JTkVUNikNCi0J ICAqc2Vlbl9pcHY2ID0gdHJ1ZTsNCi0gICAgICB9DQotDQotICAodm9pZCkg ZnJlZWlmYWRkcnMgKGlmYSk7DQotI2VuZGlmDQogfQ0KIA0KIA0KZGlmZiAt LWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NvbmZpZ3VyZSBiL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NvbmZpZ3VyZQ0KaW5kZXggYjg2Yjc2 My4uMDY1MDA2NyAxMDA2NDQNCi0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2NvbmZpZ3VyZQ0KKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv Y29uZmlndXJlDQpAQCAtMjg0LDI1ICsyODQsMjIgQEAgdGVzdCAtbiAiJGFy Y2hfbWluaW11bV9rZXJuZWwiIHx8DQogY2FzZSAiJG1hY2hpbmUiIGluDQog ICBpMzg2KikNCiAgICAgbGliY19jdl9nY2NfdW53aW5kX2ZpbmRfZmRlPXll cw0KLSAgICBhcmNoX21pbmltdW1fa2VybmVsPTIuNC4xDQorICAgIGFyY2hf bWluaW11bV9rZXJuZWw9Mi40LjIxDQogICAgIDs7DQogICBwb3dlcnBjL3Bv d2VycGMzMikNCiAgICAgbGliY19jdl9nY2NfdW53aW5kX2ZpbmRfZmRlPXll cw0KLSAgICBhcmNoX21pbmltdW1fa2VybmVsPTIuNC4xDQotICAgIDs7DQot ICBwb3dlcnBjL3Bvd2VycGM2NCkNCiAgICAgYXJjaF9taW5pbXVtX2tlcm5l bD0yLjQuMjENCiAgICAgOzsNCiAgIHMzOTAvczM5MC0zMikNCiAgICAgbGli Y19jdl9nY2NfdW53aW5kX2ZpbmRfZmRlPXllcw0KLSAgICBhcmNoX21pbmlt dW1fa2VybmVsPTIuNC4xDQorICAgIGFyY2hfbWluaW11bV9rZXJuZWw9Mi40 LjIxDQogICAgIDs7DQogICBzMzkwL3MzOTAtNjQpDQogICAgIGxpYmNfY3Zf Z2NjX3Vud2luZF9maW5kX2ZkZT15ZXMNCi0gICAgYXJjaF9taW5pbXVtX2tl cm5lbD0yLjQuMQ0KKyAgICBhcmNoX21pbmltdW1fa2VybmVsPTIuNC4yMQ0K ICAgICA7Ow0KICAgc2gqKQ0KLSAgICBhcmNoX21pbmltdW1fa2VybmVsPTIu NC4xDQorICAgIGFyY2hfbWluaW11bV9rZXJuZWw9Mi40LjIxDQogICAgIGxp YmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMNCiAgICAgOzsNCiAgIHNw YXJjL3NwYXJjNjQqKQ0KQEAgLTMxMSwxMCArMzA4LDEwIEBAIGNhc2UgIiRt YWNoaW5lIiBpbg0KICAgICA7Ow0KICAgc3BhcmMqKQ0KICAgICBsaWJjX2N2 X2djY191bndpbmRfZmluZF9mZGU9eWVzDQotICAgIGFyY2hfbWluaW11bV9r ZXJuZWw9Mi40LjENCisgICAgYXJjaF9taW5pbXVtX2tlcm5lbD0yLjQuMjEN CiAgICAgOzsNCiAgICopDQotICAgIGFyY2hfbWluaW11bV9rZXJuZWw9Mi40 LjENCisgICAgYXJjaF9taW5pbXVtX2tlcm5lbD0yLjQuMjENCiAgICAgOzsN CiBlc2FjDQogaWYgdGVzdCAtbiAiJG1pbmltdW1fa2VybmVsIjsgdGhlbg0K ZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NvbmZpZ3Vy ZS5pbiBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NvbmZpZ3VyZS5pbg0K aW5kZXggMDVjZjNiYy4uZmM1MTRmYiAxMDA2NDQNCi0tLSBhL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L2NvbmZpZ3VyZS5pbg0KKysrIGIvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvY29uZmlndXJlLmluDQpAQCAtNDEsMjUgKzQxLDIy IEBAIHRlc3QgLW4gIiRhcmNoX21pbmltdW1fa2VybmVsIiB8fA0KIGNhc2Ug IiRtYWNoaW5lIiBpbg0KICAgaTM4NiopDQogICAgIGxpYmNfY3ZfZ2NjX3Vu d2luZF9maW5kX2ZkZT15ZXMNCi0gICAgYXJjaF9taW5pbXVtX2tlcm5lbD0y LjQuMQ0KKyAgICBhcmNoX21pbmltdW1fa2VybmVsPTIuNC4yMQ0KICAgICA7 Ow0KICAgcG93ZXJwYy9wb3dlcnBjMzIpDQogICAgIGxpYmNfY3ZfZ2NjX3Vu d2luZF9maW5kX2ZkZT15ZXMNCi0gICAgYXJjaF9taW5pbXVtX2tlcm5lbD0y LjQuMQ0KLSAgICA7Ow0KLSAgcG93ZXJwYy9wb3dlcnBjNjQpDQogICAgIGFy Y2hfbWluaW11bV9rZXJuZWw9Mi40LjIxDQogICAgIDs7DQogICBzMzkwL3Mz OTAtMzIpDQogICAgIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMN Ci0gICAgYXJjaF9taW5pbXVtX2tlcm5lbD0yLjQuMQ0KKyAgICBhcmNoX21p bmltdW1fa2VybmVsPTIuNC4yMQ0KICAgICA7Ow0KICAgczM5MC9zMzkwLTY0 KQ0KICAgICBsaWJjX2N2X2djY191bndpbmRfZmluZF9mZGU9eWVzDQotICAg IGFyY2hfbWluaW11bV9rZXJuZWw9Mi40LjENCisgICAgYXJjaF9taW5pbXVt X2tlcm5lbD0yLjQuMjENCiAgICAgOzsNCiAgIHNoKikNCi0gICAgYXJjaF9t aW5pbXVtX2tlcm5lbD0yLjQuMQ0KKyAgICBhcmNoX21pbmltdW1fa2VybmVs PTIuNC4yMQ0KICAgICBsaWJjX2N2X2djY191bndpbmRfZmluZF9mZGU9eWVz DQogICAgIDs7DQogICBzcGFyYy9zcGFyYzY0KikNCkBAIC02OCwxMCArNjUs MTAgQEAgY2FzZSAiJG1hY2hpbmUiIGluDQogICAgIDs7DQogICBzcGFyYyop DQogICAgIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMNCi0gICAg YXJjaF9taW5pbXVtX2tlcm5lbD0yLjQuMQ0KKyAgICBhcmNoX21pbmltdW1f a2VybmVsPTIuNC4yMQ0KICAgICA7Ow0KICAgKikNCi0gICAgYXJjaF9taW5p bXVtX2tlcm5lbD0yLjQuMQ0KKyAgICBhcmNoX21pbmltdW1fa2VybmVsPTIu NC4yMQ0KICAgICA7Ow0KIGVzYWMNCiBpZiB0ZXN0IC1uICIkbWluaW11bV9r ZXJuZWwiOyB0aGVuDQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvaWZfaW5kZXguYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2lm X2luZGV4LmMNCmluZGV4IDNjODZiYjguLmNmMzM2ODMgMTAwNjQ0DQotLS0g YS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pZl9pbmRleC5jDQorKysgYi9z eXNkZXBzL3VuaXgvc3lzdi9saW51eC9pZl9pbmRleC5jDQpAQCAtNzQsOTAg Kzc0LDEzIEBAIGlmX2ZyZWVuYW1laW5kZXggKHN0cnVjdCBpZl9uYW1laW5k ZXggKmlmbikNCiBsaWJjX2hpZGRlbl9kZWYgKGlmX2ZyZWVuYW1laW5kZXgp DQogDQogDQotI2lmIF9fQVNTVU1FX05FVExJTktfU1VQUE9SVCA9PSAwDQot c3RhdGljIHN0cnVjdCBpZl9uYW1laW5kZXggKg0KLWlmX25hbWVpbmRleF9p b2N0bCAodm9pZCkNCi17DQotICBpbnQgZmQgPSBfX29wZW5zb2NrICgpOw0K LSAgc3RydWN0IGlmY29uZiBpZmM7DQotICB1bnNpZ25lZCBpbnQgbmlmcywg aTsNCi0gIGludCBycV9sZW47DQotICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICpp ZHggPSBOVUxMOw0KLSMgZGVmaW5lIFJRX0lGUwk0DQotDQotICBpZiAoZmQg PCAwKQ0KLSAgICByZXR1cm4gTlVMTDsNCi0NCi0gIGlmYy5pZmNfYnVmID0g TlVMTDsNCi0NCi0gIC8qIFdlIG1heSBiZSBhYmxlIHRvIGdldCB0aGUgbmVl ZGVkIGJ1ZmZlciBzaXplIGRpcmVjdGx5LCByYXRoZXIgdGhhbg0KLSAgICAg Z3Vlc3NpbmcuICAqLw0KLSAgaWZjLmlmY19idWYgPSBOVUxMOw0KLSAgaWZj LmlmY19sZW4gPSAwOw0KLSAgaWYgKF9faW9jdGwgKGZkLCBTSU9DR0lGQ09O RiwgJmlmYykgPCAwIHx8IGlmYy5pZmNfbGVuID09IDApDQotICAgIHJxX2xl biA9IFJRX0lGUyAqIHNpemVvZiAoc3RydWN0IGlmcmVxKTsNCi0gIGVsc2UN Ci0gICAgcnFfbGVuID0gaWZjLmlmY19sZW47DQotDQotICAvKiBSZWFkIGFs bCB0aGUgaW50ZXJmYWNlcyBvdXQgb2YgdGhlIGtlcm5lbC4gICovDQotICBp ZmMuaWZjX2J1ZiA9IGFsbG9jYSAocnFfbGVuKTsNCi0gIGlmYy5pZmNfbGVu ID0gcnFfbGVuOw0KLSAgaWYgKF9faW9jdGwgKGZkLCBTSU9DR0lGQ09ORiwg JmlmYykgPCAwKQ0KLSAgICB7DQotICAgICAgY2xvc2Vfbm90X2NhbmNlbF9u b19zdGF0dXMgKGZkKTsNCi0gICAgICByZXR1cm4gTlVMTDsNCi0gICAgfQ0K LQ0KLSAgbmlmcyA9IGlmYy5pZmNfbGVuIC8gc2l6ZW9mIChzdHJ1Y3QgaWZy ZXEpOw0KLQ0KLSAgaWR4ID0gbWFsbG9jICgobmlmcyArIDEpICogc2l6ZW9m IChzdHJ1Y3QgaWZfbmFtZWluZGV4KSk7DQotICBpZiAoaWR4ID09IE5VTEwp DQotICAgIHsNCi0gICAgICBjbG9zZV9ub3RfY2FuY2VsX25vX3N0YXR1cyAo ZmQpOw0KLSAgICAgIF9fc2V0X2Vycm5vIChFTk9CVUZTKTsNCi0gICAgICBy ZXR1cm4gTlVMTDsNCi0gICAgfQ0KLQ0KLSAgZm9yIChpID0gMDsgaSA8IG5p ZnM7ICsraSkNCi0gICAgew0KLSAgICAgIHN0cnVjdCBpZnJlcSAqaWZyID0g JmlmYy5pZmNfcmVxW2ldOw0KLSAgICAgIGlkeFtpXS5pZl9uYW1lID0gX19z dHJkdXAgKGlmci0+aWZyX25hbWUpOw0KLSAgICAgIGlmIChpZHhbaV0uaWZf bmFtZSA9PSBOVUxMDQotCSAgfHwgX19pb2N0bCAoZmQsIFNJT0NHSUZJTkRF WCwgaWZyKSA8IDApDQotCXsNCi0JICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJu bzsNCi0JICB1bnNpZ25lZCBpbnQgajsNCi0NCi0JICBmb3IgKGogPSAgMDsg aiA8IGk7ICsraikNCi0JICAgIGZyZWUgKGlkeFtqXS5pZl9uYW1lKTsNCi0J ICBmcmVlIChpZHgpOw0KLQkgIGNsb3NlX25vdF9jYW5jZWxfbm9fc3RhdHVz IChmZCk7DQotCSAgaWYgKHNhdmVkX2Vycm5vID09IEVJTlZBTCkNCi0JICAg IHNhdmVkX2Vycm5vID0gRU5PU1lTOw0KLQkgIGVsc2UgaWYgKHNhdmVkX2Vy cm5vID09IEVOT01FTSkNCi0JICAgIHNhdmVkX2Vycm5vID0gRU5PQlVGUzsN Ci0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOw0KLQkgIHJldHVybiBO VUxMOw0KLQl9DQotICAgICAgaWR4W2ldLmlmX2luZGV4ID0gaWZyLT5pZnJf aWZpbmRleDsNCi0gICAgfQ0KLQ0KLSAgaWR4W2ldLmlmX2luZGV4ID0gMDsN Ci0gIGlkeFtpXS5pZl9uYW1lID0gTlVMTDsNCi0NCi0gIGNsb3NlX25vdF9j YW5jZWxfbm9fc3RhdHVzIChmZCk7DQotICByZXR1cm4gaWR4Ow0KLX0NCi0j ZW5kaWYNCi0NCi0NCiBzdGF0aWMgc3RydWN0IGlmX25hbWVpbmRleCAqDQog aWZfbmFtZWluZGV4X25ldGxpbmsgKHZvaWQpDQogew0KICAgc3RydWN0IG5l dGxpbmtfaGFuZGxlIG5oID0geyAwLCAwLCAwLCBOVUxMLCBOVUxMIH07DQog ICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICppZHggPSBOVUxMOw0KIA0KLSAgaWYg KF9fbm9fbmV0bGlua19zdXBwb3J0IHx8IF9fbmV0bGlua19vcGVuICgmbmgp IDwgMCkNCisgIGlmIChfX25ldGxpbmtfb3BlbiAoJm5oKSA8IDApDQogICAg IHJldHVybiBOVUxMOw0KIA0KIA0KQEAgLTI3NCwxMCArMTk3LDYgQEAgaWZf bmFtZWluZGV4ICh2b2lkKQ0KICAgcmV0dXJuIE5VTEw7DQogI2Vsc2UNCiAg IHN0cnVjdCBpZl9uYW1laW5kZXggKnJlc3VsdCA9IGlmX25hbWVpbmRleF9u ZXRsaW5rICgpOw0KLSMgaWYgX19BU1NVTUVfTkVUTElOS19TVVBQT1JUID09 IDANCi0gIGlmIChfX25vX25ldGxpbmtfc3VwcG9ydCkNCi0gICAgcmVzdWx0 ID0gaWZfbmFtZWluZGV4X2lvY3RsICgpOw0KLSMgZW5kaWYNCiAgIHJldHVy biByZXN1bHQ7DQogI2VuZGlmDQogfQ0KZGlmZiAtLWdpdCBhL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L2lmYWRkcnMuYyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L2lmYWRkcnMuYw0KaW5kZXggNTE4MzZiMC4uMTc5NjUzMSAxMDA2 NDQNCi0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2lmYWRkcnMuYw0K KysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaWZhZGRycy5jDQpAQCAt MSw1ICsxLDUgQEANCiAvKiBnZXRpZmFkZHJzIC0tIGdldCBuYW1lcyBhbmQg YWRkcmVzc2VzIG9mIGFsbCBuZXR3b3JrIGludGVyZmFjZXMNCi0gICBDb3B5 cmlnaHQgKEMpIDIwMDMtMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisgICBDb3B5cmlnaHQgKEMpIDIw MDMtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4NCiANCiAg ICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCkBAIC0zNywxNyArMzcsNiBAQA0K ICNpbmNsdWRlICJuZXRsaW5rYWNjZXNzLmgiDQogDQogDQotLyogV2UgZG9u J3Qga25vdyBpZiB3ZSBoYXZlIE5FVExJTksgc3VwcG9ydCBjb21waWxlZCBp bnRvIG91cg0KLSAgIEtlcm5lbCwgc28gaW5jbHVkZSB0aGUgb2xkIGltcGxl bWVudGF0aW9uIGFzIGZhbGxiYWNrLiAgKi8NCi0jaWYgX19BU1NVTUVfTkVU TElOS19TVVBQT1JUID09IDANCi1pbnQgX19ub19uZXRsaW5rX3N1cHBvcnQg YXR0cmlidXRlX2hpZGRlbjsNCi0NCi0jIGRlZmluZSBnZXRpZmFkZHJzIGZh bGxiYWNrX2dldGlmYWRkcnMNCi0jIGluY2x1ZGUgInN5c2RlcHMvZ251L2lm YWRkcnMuYyINCi0jIHVuZGVmIGdldGlmYWRkcnMNCi0jZW5kaWYNCi0NCi0N CiAvKiBUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIHR5cGUuICBUaGUg YWRkcmVzcyBsZW5ndGggZm9yDQogICAgSW5maW5pYmFuZCBzb2NrZXRzIGlz IG11Y2ggbG9uZ2VyIHRoYW4gdGhlIDggYnl0ZXMgYWxsb2NhdGVkIGluIHRo ZQ0KICAgIHNvY2thZGRyX2xsIGRlZmluaXRpb24uICBIZW5jZSB3ZSB1c2Ug aGVyZSBhIHNwZWNpYWwNCkBAIC0yNzQsOSArMjYzLDYgQEAgX19uZXRsaW5r X29wZW4gKHN0cnVjdCBuZXRsaW5rX2hhbmRsZSAqaCkNCiAgICAgY2xvc2Vf YW5kX291dDoNCiAgICAgICBfX25ldGxpbmtfY2xvc2UgKGgpOw0KICAgICBv dXQ6DQotI2lmIF9fQVNTVU1FX05FVExJTktfU1VQUE9SVCA9PSAwDQotICAg ICAgX19ub19uZXRsaW5rX3N1cHBvcnQgPSAxOw0KLSNlbmRpZg0KICAgICAg IHJldHVybiAtMTsNCiAgICAgfQ0KICAgLyogRGV0ZXJtaW5lIHRoZSBJRCB0 aGUga2VybmVsIGFzc2lnbmVkIGZvciB0aGlzIG5ldGxpbmsgY29ubmVjdGlv bi4NCkBAIC0zNDAsMTcgKzMyNiw4IEBAIGdldGlmYWRkcnNfaW50ZXJuYWwg KHN0cnVjdCBpZmFkZHJzICoqaWZhcCkNCiANCiAgICppZmFwID0gTlVMTDsN CiANCi0gIGlmICghIF9fbm9fbmV0bGlua19zdXBwb3J0ICYmIF9fbmV0bGlu a19vcGVuICgmbmgpIDwgMCkNCi0gICAgew0KLSNpZiBfX0FTU1VNRV9ORVRM SU5LX1NVUFBPUlQgIT0gMA0KKyAgaWYgKF9fbmV0bGlua19vcGVuICgmbmgp IDwgMCkNCiAgICAgICByZXR1cm4gLTE7DQotI2VuZGlmDQotICAgIH0NCi0N Ci0jaWYgX19BU1NVTUVfTkVUTElOS19TVVBQT1JUID09IDANCi0gIGlmIChf X25vX25ldGxpbmtfc3VwcG9ydCkNCi0gICAgcmV0dXJuIGZhbGxiYWNrX2dl dGlmYWRkcnMgKGlmYXApOw0KLSNlbmRpZg0KIA0KICAgLyogVGVsbCB0aGUg a2VybmVsIHRoYXQgd2Ugd2lzaCB0byBnZXQgYSBsaXN0IG9mIGFsbA0KICAg ICAgYWN0aXZlIGludGVyZmFjZXMsIGNvbGxlY3QgYWxsIGRhdGEgZm9yIGV2 ZXJ5IGludGVyZmFjZS4gICovDQpAQCAtODU5LDExICs4MzYsOSBAQCBnZXRp ZmFkZHJzIChzdHJ1Y3QgaWZhZGRycyAqKmlmYXApDQogbGliY19oaWRkZW5f ZGVmIChnZXRpZmFkZHJzKQ0KIA0KIA0KLSNpZiBfX0FTU1VNRV9ORVRMSU5L X1NVUFBPUlQgIT0gMA0KIHZvaWQNCiBmcmVlaWZhZGRycyAoc3RydWN0IGlm YWRkcnMgKmlmYSkNCiB7DQogICBmcmVlIChpZmEpOw0KIH0NCiBsaWJjX2hp ZGRlbl9kZWYgKGZyZWVpZmFkZHJzKQ0KLSNlbmRpZg0KZGlmZiAtLWdpdCBh L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2tlcm5lbC1mZWF0dXJlcy5oIGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgva2VybmVsLWZlYXR1cmVzLmgNCmlu ZGV4IDZlNjRkZWYuLmNmZTMzNWQgMTAwNjQ0DQotLS0gYS9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9rZXJuZWwtZmVhdHVyZXMuaA0KKysrIGIvc3lzZGVw cy91bml4L3N5c3YvbGludXgva2VybmVsLWZlYXR1cmVzLmgNCkBAIC05MSw4 ICs5MSw3IEBADQogLyogQXJtIGdvdCBmY250bDY0IGluIDIuNC40LCBQb3dl clBDIGFuZCBTSCBoYXZlIGl0IGFsc28gaW4gMi40LjQgKEkNCiAgICBkb24n dCBrbm93IHdoZW4gaXQgZ290IGludHJvZHVjZWQpLiAgQnV0IFBvd2VyUEM2 NCBkb2VzIG5vdCBzdXBwb3J0DQogICAgc2VwYXJhdGUgRkNOVEw2NCBjYWxs LCBGQ05UTCBpcyBhbHJlYWR5IDY0LWJpdCAqLw0KLSNpZiBfX0xJTlVYX0tF Uk5FTF9WRVJTSU9OID49IDEzMjEwMCBcDQotICAgICYmIChkZWZpbmVkIF9f cG93ZXJwY19fIHx8IGRlZmluZWQgX19zaF9fKSBcDQorI2lmIChkZWZpbmVk IF9fcG93ZXJwY19fIHx8IGRlZmluZWQgX19zaF9fKSBcDQogICAgICYmICFk ZWZpbmVkIF9fcG93ZXJwYzY0X18NCiAjIGRlZmluZSBfX0FTU1VNRV9GQ05U TDY0CQkxDQogI2VuZGlmDQpAQCAtMTAxLDM5ICsxMDAsMTggQEANCiAgICBN SVBTIG4zMikuICAqLw0KICNkZWZpbmUgX19BU1NVTUVfR0VUREVOVFM2NF9T WVNDQUxMCTENCiANCi0vKiBTdGFydGluZyB3aXRoIDIuNC41IGtlcm5lbHMg UFBDIHBhc3NlcyB0aGUgQVVYViBpbiB0aGUgc3RhbmRhcmQgd2F5DQotICAg YW5kIHRoZSB2Zm9yayBzeXNjYWxsIG1hZGUgaXQgaW50byB0aGUgb2ZmaWNp YWwga2VybmVsLiAgKi8NCi0jaWYgX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+ PSAoMTMyMDk2KzUpICYmIGRlZmluZWQgX19wb3dlcnBjX18NCi0jIGRlZmlu ZSBfX0FTU1VNRV9TVERfQVVYVgkJMQ0KKy8qIFN0YXJ0aW5nIHdpdGggMi40 LjUga2VybmVscyB0aGUgdmZvcmsgc3lzY2FsbCBtYWRlIGl0IGludG8gdGhl DQorICAgb2ZmaWNpYWwga2VybmVsIGZvciBQUEMuICAqLw0KKyNpZmRlZiBf X3Bvd2VycGNfXw0KICMgZGVmaW5lIF9fQVNTVU1FX1ZGT1JLX1NZU0NBTEwJ CTENCiAjZW5kaWYNCiANCiAvKiBTdGFydGluZyB3aXRoIDIuNC41IGtlcm5l bHMgdGhlIG1tYXAyIHN5c2NhbGwgbWFkZSBpdCBpbnRvIHRoZSBvZmZpY2lh bA0KICAgIGtlcm5lbC4gIEJ1dCBQb3dlclBDNjQgZG9lcyBub3Qgc3VwcG9y dCBhIHNlcGFyYXRlIE1NQVAyIGNhbGwuICAqLw0KLSNpZiBfX0xJTlVYX0tF Uk5FTF9WRVJTSU9OID49ICgxMzIwOTYrNSkgJiYgZGVmaW5lZCBfX3Bvd2Vy cGNfXyBcDQotICAgICYmICFkZWZpbmVkIF9fcG93ZXJwYzY0X18NCisjaWYg ZGVmaW5lZCBfX3Bvd2VycGNfXyAmJiAhZGVmaW5lZCBfX3Bvd2VycGM2NF9f DQogIyBkZWZpbmUgX19BU1NVTUVfTU1BUDJfU1lTQ0FMTAkJMQ0KICNlbmRp Zg0KIA0KLS8qIFN0YXJ0aW5nIHdpdGggMi40LjIxIFBvd2VyUEMgaW1wbGVt ZW50cyB0aGUgbmV3IHByY3RsIHN5c2NhbGwuDQotICAgVGhpcyBhbGxvd3Mg YXBwbGljYXRpb25zIHRvIGdldC9zZXQgdGhlIEZsb2F0aW5nIFBvaW50IEV4 Y2VwdGlvbiBNb2RlLiAgKi8NCi0jaWYgX19MSU5VWF9LRVJORUxfVkVSU0lP TiA+PSAoMTMyMDk2KzIxKSAmJiBkZWZpbmVkIF9fcG93ZXJwY19fDQotIyBk ZWZpbmUgX19BU1NVTUVfTkVXX1BSQ1RMX1NZU0NBTEwJCTENCi0jZW5kaWYN Ci0NCi0vKiBTdGFydGluZyB3aXRoIDIuNC4yMSB0aGUgUG93ZXJQQzMyIGNs b25lIHN5c2NhbGwgd29ya3MgYXMgZXhwZWN0ZWQuICAqLw0KLSNpZiBfX0xJ TlVYX0tFUk5FTF9WRVJTSU9OID49ICgxMzIwOTYrMjEpICYmIGRlZmluZWQg X19wb3dlcnBjX18gXA0KLSAgICAmJiAhZGVmaW5lZCBfX3Bvd2VycGM2NF9f DQotIyBkZWZpbmUgX19BU1NVTUVfRklYRURfQ0xPTkVfU1lTQ0FMTAkJMQ0K LSNlbmRpZg0KLQ0KLS8qIFN0YXJ0aW5nIHdpdGggMi40LjIxIFBvd2VyUEM2 NCBpbXBsZW1lbnRzIHRoZSBuZXcgcnRfc2lncmV0dXJuIHN5c2NhbGwuDQot ICAgVGhlIG5ldyBydF9zaWdyZXR1cm4gdGFrZXMgYW4gdWNvbnRleHQgcG9p bnRlciBhbGxvd2luZyBydF9zaWdyZXR1cm4NCi0gICB0byBiZSB1c2VkIGlu IHRoZSBzZXQvc3dhcGNvbnRleHQgaW1wbGVtZW50YXRpb24uICAqLw0KLSNp ZiBfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49ICgxMzIwOTYrMjEpICYmIGRl ZmluZWQgX19wb3dlcnBjNjRfXw0KLSMgZGVmaW5lIF9fQVNTVU1FX05FV19S VF9TSUdSRVRVUk5fU1lTQ0FMTAkJMQ0KLSNlbmRpZg0KLQ0KIC8qIE9uIHg4 NiwgdGhlIHNldF90aHJlYWRfYXJlYSBzeXNjYWxsIHdhcyBpbnRyb2R1Y2Vk IGluIDIuNS4yOSwgYnV0IGl0cw0KICAgIHNlbWFudGljcyB3YXMgY2hhbmdl ZCBpbiAyLjUuMzAsIGFuZCBhZ2FpbiBhZnRlciAyLjUuMzEuICAqLw0KICNp ZiBfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDEzMjM4NCAmJiBkZWZpbmVk IF9faTM4Nl9fDQpAQCAtMTY5LDExICsxNDcsNiBAQA0KICMgZGVmaW5lIF9f QVNTVU1FX1BPU0lYX0NQVV9USU1FUlMJMQ0KICNlbmRpZg0KIA0KLS8qIFdp dGgga2VybmVsIDIuNC4xNyB3ZSBhbHdheXMgaGF2ZSBuZXRsaW5rIHN1cHBv cnQuICAqLw0KLSNpZiBfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49ICgxMzIw OTYrMTcpDQotIyBkZWZpbmUgX19BU1NVTUVfTkVUTElOS19TVVBQT1JUCTEN Ci0jZW5kaWYNCi0NCiAvKiBUaGUgcmVxdWV1ZSBmdXRleCBmdW5jdGlvbmFs aXR5IHdhcyBpbnRyb2R1Y2VkIGluIDIuNS43MC4gICovDQogI2lmIF9fTElO VVhfS0VSTkVMX1ZFUlNJT04gPj0gMTMyNDIyDQogIyBkZWZpbmUgX19BU1NV TUVfRlVURVhfUkVRVUVVRQkxDQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvbmV0bGlua2FjY2Vzcy5oIGIvc3lzZGVwcy91bml4L3N5 c3YvbGludXgvbmV0bGlua2FjY2Vzcy5oDQppbmRleCBjYjE5MGMwLi42Y2Q4 YTg4IDEwMDY0NA0KLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbmV0 bGlua2FjY2Vzcy5oDQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9u ZXRsaW5rYWNjZXNzLmgNCkBAIC0xLDQgKzEsNCBAQA0KLS8qIENvcHlyaWdo dCAoQykgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4NCisvKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIEMgTGlicmFyeS4NCiANCiAgICBUaGUgR05VIEMgTGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3INCkBAIC00NCwxMyArNDQsNiBAQCBzdHJ1Y3QgbmV0bGlua19o YW5kbGUNCiB9Ow0KIA0KIA0KLSNpZiBfX0FTU1VNRV9ORVRMSU5LX1NVUFBP UlQgPT0gMA0KLWV4dGVybiBpbnQgX19ub19uZXRsaW5rX3N1cHBvcnQgYXR0 cmlidXRlX2hpZGRlbjsNCi0jZWxzZQ0KLSMgZGVmaW5lIF9fbm9fbmV0bGlu a19zdXBwb3J0IDANCi0jZW5kaWYNCi0NCi0NCiBleHRlcm4gaW50IF9fbmV0 bGlua19vcGVuIChzdHJ1Y3QgbmV0bGlua19oYW5kbGUgKmgpOw0KIGV4dGVy biB2b2lkIF9fbmV0bGlua19jbG9zZSAoc3RydWN0IG5ldGxpbmtfaGFuZGxl ICpoKTsNCiBleHRlcm4gdm9pZCBfX25ldGxpbmtfZnJlZV9oYW5kbGUgKHN0 cnVjdCBuZXRsaW5rX2hhbmRsZSAqaCk7DQpkaWZmIC0tZ2l0IGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2Rl cHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMNCmluZGV4 IDAwNTk1ZjkuLjBmZjhmYWEgMTAwNjQ0DQotLS0gYS9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jDQorKysgYi9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jDQpAQCAtMSw2 ICsxLDUgQEANCiAvKiBPcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnQgZm9yIHJ1 bi10aW1lIGR5bmFtaWMgbGlua2VyLiAgTGludXgvUFBDIHZlcnNpb24uDQot ICAgQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4LCAyMDAxLCAyMDAzLCAyMDA2 LCAyMDA3DQotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQor ICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBDIExpYnJhcnkuDQogDQogICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQpA QCAtMzIsMzUgKzMxLDQgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJp YnV0ZV9oaWRkZW47DQogCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4u YV92YWw7CQkJCSAgICAgIFwNCiAJYnJlYWs7DQogDQotI2lmbmRlZiBfX0FT U1VNRV9TVERfQVVYVg0KLQ0KLS8qIFRoZSBQb3dlclBDJ3MgYXV4aWxpYXJ5 IGFyZ3VtZW50IGJsb2NrIGdldHMgYWxpZ25lZCB0byBhIDE2LWJ5dGUNCi0g ICBib3VuZGFyeS4gIFRoaXMgaXMgaGlzdG9yeSBhbmQgaW1wb3NzaWJsZSB0 byBjaGFuZ2UgY29tcGF0aWJseS4gICovDQotDQotI2RlZmluZSBETF9GSU5E X0FSR19DT01QT05FTlRTKGNvb2tpZSwgYXJnYywgYXJndiwgZW52cCwgYXV4 cCkgXA0KLSAgZG8gewkJCQkJCQkJCSAgICAgIFwNCi0gICAgY2hhciAqKl90 bXA7CQkJCQkJCSAgICAgIFwNCi0gICAgc2l6ZV90IF90ZXN0OwkJCQkJCQkg ICAgICBcDQotICAgIChhcmdjKSA9ICoobG9uZyBpbnQgKikgY29va2llOwkJ CQkJICAgICAgXA0KLSAgICAoYXJndikgPSAoY2hhciAqKikgY29va2llICsg MTsJCQkJCSAgICAgIFwNCi0gICAgKGVudnApID0gKGFyZ3YpICsgKGFyZ2Mp ICsgMTsJCQkJCSAgICAgIFwNCi0gICAgZm9yIChfdG1wID0gKGVudnApOyAq X3RtcDsgKytfdG1wKQkJCQkJICAgICAgXA0KLSAgICAgIGNvbnRpbnVlOwkJ CQkJCQkJICAgICAgXA0KLSAgICAvKiBUaGUgZm9sbG93aW5nICcrKycgaXMg aW1wb3J0YW50ISAgKi8JCQkJICAgICAgXA0KLSAgICArK190bXA7CQkJCQkJ CQkgICAgICBcDQotCQkJCQkJCQkJICAgICAgXA0KLSAgICBfdGVzdCA9IChz aXplX3QpX3RtcDsJCQkJCQkgICAgICBcDQotICAgIF90ZXN0ID0gKF90ZXN0 ICsgMHhmKSAmIH4weGY7CQkJCQkgICAgICBcDQotICAgIC8qIFVuZGVyIHNv bWUgY2lyY3Vtc3RhbmNlcywgTWtMaW51eCAodXAgdG8gYXQgbGVhc3QgRFIz YTUpCQkgICAgICBcDQotICAgICAgIG9taXRzIHRoZSBwYWRkaW5nLiAgVG8g d29yayBhcm91bmQgdGhpcywgd2UgbWFrZSBhCQkgICAgICBcDQotICAgICAg IGJhc2ljIHNhbml0eSBjaGVjayBvZiB0aGUgYXJndW1lbnQgdmVjdG9yLiAg T2YJCQkgICAgICBcDQotICAgICAgIGNvdXJzZSwgdGhpcyBtZWFucyB0aGF0 IGluIGZ1dHVyZSwgdGhlIGFyZ3VtZW50CQkJICAgICAgXA0KLSAgICAgICB2 ZWN0b3Igd2lsbCBoYXZlIHRvIGJlIGxhaWQgb3V0IHRvIGFsbG93IGZvciB0 aGlzCQkgICAgICBcDQotICAgICAgIHRlc3QgOi0oLiAgKi8JCQkJCQkJICAg ICAgXA0KLSAgICAgaWYgKCgoRWxmVyhhdXh2X3QpICopX3Rlc3QpLT5hX3R5 cGUgPD0gMHgxMCkJCQkgICAgICBcDQotICAgICAgIF90bXAgPSAoY2hhciAq KilfdGVzdDsJCQkJCQkgICAgICBcDQotICAgIChhdXhwKSA9IChFbGZXKGF1 eHZfdCkgKikgX3RtcDsJCQkJCSAgICAgIFwNCi0gIH0gd2hpbGUgKDApDQot I2VuZGlmDQotDQogI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2RsLXN5c2RlcC5jPg0KZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2Nsb25lLlMgYi9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9jbG9uZS5TDQppbmRl eCA1NzY0MGFhLi5mYjE2NTE5IDEwMDY0NA0KLS0tIGEvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvY2xvbmUuUw0KKysrIGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvY2xv bmUuUw0KQEAgLTEsNSArMSw1IEBADQogLyogV3JhcHBlciBhcm91bmQgY2xv bmUgc3lzdGVtIGNhbGwuDQotICAgQ29weXJpZ2h0IChDKSAxOTk3LDk4LDk5 LDIwMDAsMDIsMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4NCisgICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4NCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIEMgTGlicmFyeS4NCiANCiAgICBUaGUgR05VIEMgTGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3INCkBAIC01MiwxMiArNTIsOCBAQCBFTlRSWSAoQlBfU1lNIChfX2Nsb25l KSkNCiAjaWZkZWYgUkVTRVRfUElEDQogCXN0bXcJcjI4LDE2KHIxKQ0KICNl bHNlDQotIyBpZm5kZWYgX19BU1NVTUVfRklYRURfQ0xPTkVfU1lTQ0FMTA0K LQlzdG13CXIyOSwxNihyMSkNCi0jIGVsc2UNCiAJc3RtdwlyMzAsMTYocjEp DQogIyBlbmRpZg0KLSNlbmRpZg0KIA0KIAkvKiBTZXQgdXAgc3RhY2sgZnJh bWUgZm9yIGNoaWxkLiAgKi8NCiAJY2xycndpCXI0LHI0LDQNCkBAIC02Niw5 ICs2Miw2IEBAIEVOVFJZIChCUF9TWU0gKF9fY2xvbmUpKQ0KIA0KIAkvKiBT YXZlIGZuLCBhcmdzLCBzdGFjayBhY3Jvc3Mgc3lzY2FsbC4gICovDQogCW1y CXIzMCxyMwkJCS8qIEZ1bmN0aW9uIGluIHIzMC4gICovDQotI2lmbmRlZiBf X0FTU1VNRV9GSVhFRF9DTE9ORV9TWVNDQUxMDQotCW1yCXIyOSxyNAkJCS8q IFN0YWNrIHBvaW50ZXIgaW4gcjI5LiAgKi8NCi0jZW5kaWYNCiAjaWZkZWYg UkVTRVRfUElEDQogCW1yCXIyOCxyNQ0KICNlbmRpZg0KQEAgLTk1LDE0ICs4 OCw2IEBAIEVOVFJZIChCUF9TWU0gKF9fY2xvbmUpKQ0KIAljcmFuZGMJY3Ix KjQrZXEsY3IxKjQrZXEsY3IwKjQrc28NCiAJYm5lLQljcjEsTChwYXJlbnQp CQkvKiBUaGUgJy0nIGlzIHRvIG1pbmltaXNlIHRoZSByYWNlLiAgKi8NCiAN Ci0jaWZuZGVmIF9fQVNTVU1FX0ZJWEVEX0NMT05FX1NZU0NBTEwNCi0JLyog T24gYXQgbGVhc3QgbWtsaW51eCBEUjNhNSwgY2xvbmUoKSBkb2Vzbid0IGFj dHVhbGx5IGNoYW5nZQ0KLQkgICB0aGUgc3RhY2sgcG9pbnRlci4gIEknbSBw cmV0dHkgc3VyZSB0aGlzIGlzIGEgYnVnLCBiZWNhdXNlDQotCSAgIGl0IGFk ZHMgYSByYWNlIGNvbmRpdGlvbiBpZiBhIHNpZ25hbCBpcyBzZW50IHRvIGEg dGhyZWFkDQotCSAgIGp1c3QgYWZ0ZXIgaXQgaXMgY3JlYXRlZCAoaW4gdGhl IHByZXZpb3VzIHRocmVlIGluc3RydWN0aW9ucykuICAqLw0KLQltcglyMSxy MjkNCi0jZW5kaWYNCi0NCiAjaWZkZWYgUkVTRVRfUElEDQogCWFuZGlzLgly MCxyMjgsQ0xPTkVfVEhSRUFEPj4xNg0KIAlibmUrCXIwLEwob2xkcGlkKQ0K QEAgLTEyOCwxMiArMTEzLDggQEAgTChwYXJlbnQpOg0KICNpZmRlZiBSRVNF VF9QSUQNCiAJbG13CXIyOCwxNihyMSkNCiAjZWxzZQ0KLSMgaWZuZGVmIF9f QVNTVU1FX0ZJWEVEX0NMT05FX1NZU0NBTEwNCi0JbG13CXIyOSwxNihyMSkN Ci0jIGVsc2UNCiAJbG13CXIzMCwxNihyMSkNCiAjIGVuZGlmDQotI2VuZGlm DQogCWFkZGkJcjEscjEsMzINCiAJYm5zbHIrDQogCWIJX19zeXNjYWxsX2Vy cm9yQGxvY2FsDQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGlu dXgvcG93ZXJwYy9wb3dlcnBjMzIvZnB1L2ZlX21hc2suYyBiL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2ZwdS9mZV9tYXNr LmMNCmluZGV4IDA2NDJlMGIuLjM2NmM1ZmUgMTAwNjQ0DQotLS0gYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9mcHUvZmVf bWFzay5jDQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBj L3Bvd2VycGMzMi9mcHUvZmVfbWFzay5jDQpAQCAtMSw1ICsxLDUgQEANCiAv KiBQcm9jZWR1cmUgZGVmaW5pdGlvbiBmb3IgRkVfTUFTS19FTlYgZm9yIExp bnV4L3BwYy4NCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorICAgQ29weXJpZ2h0IChDKSAyMDA3LTIw MTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQogICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuDQogDQogICAgVGhl IEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yDQpAQCAtMjQsNDQgKzI0LDExIEBADQogI2lu Y2x1ZGUgPHN5cy9wcmN0bC5oPg0KICNpbmNsdWRlIDxrZXJuZWwtZmVhdHVy ZXMuaD4NCiANCi0jaWYgX19BU1NVTUVfTkVXX1BSQ1RMX1NZU0NBTEwgPT0g MA0KLS8qIFRoaXMgaXMgcmF0aGVyIGZpZGRseSB1bmRlciBMaW51eC4gIFdl IGRvbid0IGhhdmUgZGlyZWN0IGFjY2VzcywNCi0gICBhbmQgdGhlcmUgaXMg bm8gc3lzdGVtIGNhbGwsIGJ1dCB3ZSBjYW4gY2hhbmdlIHRoZSBiaXRzDQot ICAgaW4gYSBzaWduYWwgaGFuZGxlcidzIGNvbnRleHQuLi4gICovDQotDQot c3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gb2FjdDsNCi0NCi1zdGF0aWMgdm9p ZA0KLWZlX21hc2tfaGFuZGxlciAoaW50IHNpZ251bSwgc3RydWN0IHNpZ2Nv bnRleHQgKnNjKQ0KLXsNCi0gIHNjLT5yZWdzLT5tc3IgJj0gfjB4OTAwdWw7 ICAvKiBGRTAgfCBGRTEgKi8NCi0gIHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9h Y3QsIE5VTEwpOw0KLX0NCi0jZW5kaWYNCi0NCiBjb25zdCBmZW52X3QgKg0K IF9fZmVfbWFza19lbnYgKHZvaWQpDQogew0KLSNpZiBfX0FTU1VNRV9ORVdf UFJDVExfU1lTQ0FMTCA9PSAwDQotIyBpZiBkZWZpbmVkIFBSX1NFVF9GUEVY QyAmJiBkZWZpbmVkIFBSX0ZQX0VYQ19ESVNBQkxFRA0KLSAgaW50IHJlc3Vs dCA9IElOTElORV9TWVNDQUxMIChwcmN0bCwgMiwgUFJfU0VUX0ZQRVhDLCBQ Ul9GUF9FWENfRElTQUJMRUQpOw0KLQ0KLSAgaWYgKHJlc3VsdCA9PSAtMSAm JiBlcnJubyA9PSBFSU5WQUwpDQotIyBlbmRpZg0KLSAgICB7DQotICAgICAg c3RydWN0IHNpZ2FjdGlvbiBhY3Q7DQotDQotICAgICAgYWN0LnNhX2hhbmRs ZXIgPSAoc2lnaGFuZGxlcl90KSBmZV9tYXNrX2hhbmRsZXI7DQotICAgICAg c2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFzayk7DQotICAgICAgYWN0LnNhX2Zs YWdzID0gMDsNCi0NCi0gICAgICBzaWdhY3Rpb24gKFNJR1VTUjEsICZhY3Qs ICZvYWN0KTsNCi0gICAgICByYWlzZSAoU0lHVVNSMSk7DQotICAgIH0NCi0j ZWxzZQ0KICAgSU5URVJOQUxfU1lTQ0FMTF9ERUNMIChlcnIpOw0KICAgSU5U RVJOQUxfU1lTQ0FMTCAocHJjdGwsIGVyciwgMiwgUFJfU0VUX0ZQRVhDLCBQ Ul9GUF9FWENfRElTQUJMRUQpOw0KLSNlbmRpZg0KIA0KICAgcmV0dXJuIEZF X0RGTF9FTlY7DQogfQ0KZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2ZwdS9mZV9ub21hc2suYyBiL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2ZwdS9m ZV9ub21hc2suYw0KaW5kZXggMjA5N2FmNi4uODY3MzhmZCAxMDA2NDQNCi0t LSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMy L2ZwdS9mZV9ub21hc2suYw0KKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGlu dXgvcG93ZXJwYy9wb3dlcnBjMzIvZnB1L2ZlX25vbWFzay5jDQpAQCAtMSw1 ICsxLDUgQEANCiAvKiBQcm9jZWR1cmUgZGVmaW5pdGlvbiBmb3IgRkVfTk9N QVNLX0VOViBmb3IgTGludXgvcHBjLg0KLSAgIENvcHlyaWdodCAoQykgMjAw MCwgMjAwNiwgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4N CisgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAxMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4NCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIEMgTGlicmFyeS4NCiANCiAgICBUaGUgR05VIEMgTGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IN CkBAIC0yNCw0NCArMjQsMTEgQEANCiAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+ DQogI2luY2x1ZGUgPGtlcm5lbC1mZWF0dXJlcy5oPg0KIA0KLSNpZiBfX0FT U1VNRV9ORVdfUFJDVExfU1lTQ0FMTCA9PSAwDQotLyogVGhpcyBpcyByYXRo ZXIgZmlkZGx5IHVuZGVyIExpbnV4LiAgV2UgZG9uJ3QgaGF2ZSBkaXJlY3Qg YWNjZXNzLA0KLSAgIGFuZCB0aGVyZSBpcyBubyBzeXN0ZW0gY2FsbCwgYnV0 IHdlIGNhbiBjaGFuZ2UgdGhlIGJpdHMNCi0gICBpbiBhIHNpZ25hbCBoYW5k bGVyJ3MgY29udGV4dC4uLiAgKi8NCi0NCi1zdGF0aWMgc3RydWN0IHNpZ2Fj dGlvbiBvYWN0Ow0KLQ0KLXN0YXRpYyB2b2lkDQotZmVfbm9tYXNrX2hhbmRs ZXIgKGludCBzaWdudW0sIHN0cnVjdCBzaWdjb250ZXh0ICpzYykNCi17DQot ICBzYy0+cmVncy0+bXNyIHw9IDB4OTAwdWw7ICAvKiBGRTAgfCBGRTEgKi8N Ci0gIHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9hY3QsIE5VTEwpOw0KLX0NCi0j ZW5kaWYNCi0NCiBjb25zdCBmZW52X3QgKg0KIF9fZmVfbm9tYXNrX2VudiAo dm9pZCkNCiB7DQotI2lmIF9fQVNTVU1FX05FV19QUkNUTF9TWVNDQUxMID09 IDANCi0jIGlmIGRlZmluZWQgUFJfU0VUX0ZQRVhDICYmIGRlZmluZWQgUFJf RlBfRVhDX1BSRUNJU0UNCi0gIGludCByZXN1bHQgPSBJTkxJTkVfU1lTQ0FM TCAocHJjdGwsIDIsIFBSX1NFVF9GUEVYQywgUFJfRlBfRVhDX1BSRUNJU0Up Ow0KLQ0KLSAgaWYgKHJlc3VsdCA9PSAtMSAmJiBlcnJubyA9PSBFSU5WQUwp DQotIyBlbmRpZg0KLSAgICB7DQotICAgICAgc3RydWN0IHNpZ2FjdGlvbiBh Y3Q7DQotDQotICAgICAgYWN0LnNhX2hhbmRsZXIgPSAoc2lnaGFuZGxlcl90 KSBmZV9ub21hc2tfaGFuZGxlcjsNCi0gICAgICBzaWdlbXB0eXNldCAoJmFj dC5zYV9tYXNrKTsNCi0gICAgICBhY3Quc2FfZmxhZ3MgPSAwOw0KLQ0KLSAg ICAgIHNpZ2FjdGlvbiAoU0lHVVNSMSwgJmFjdCwgJm9hY3QpOw0KLSAgICAg IHJhaXNlIChTSUdVU1IxKTsNCi0gICAgfQ0KLSNlbHNlDQogICBJTlRFUk5B TF9TWVNDQUxMX0RFQ0wgKGVycik7DQogICBJTlRFUk5BTF9TWVNDQUxMIChw cmN0bCwgZXJyLCAyLCBQUl9TRVRfRlBFWEMsIFBSX0ZQX0VYQ19QUkVDSVNF KTsNCi0jZW5kaWYNCiANCiAgIHJldHVybiBGRV9FTkFCTEVEX0VOVjsNCiB9 DQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJw Yy9wb3dlcnBjNjQvZnB1L2ZlX21hc2suYyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2ZwdS9mZV9tYXNrLmMNCmluZGV4 IDlkNDFhZTcuLmU0YmNkOTggMTAwNjQ0DQotLS0gYS9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9mcHUvZmVfbWFzay5jDQor KysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2 NC9mcHUvZmVfbWFzay5jDQpAQCAtMSw1ICsxLDUgQEANCiAvKiBQcm9jZWR1 cmUgZGVmaW5pdGlvbiBmb3IgRkVfTUFTS19FTlYgZm9yIExpbnV4L3BwYzY0 Lg0KLSAgIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4NCisgICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4NCiANCiAgICBUaGUgR05VIEMg TGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3INCkBAIC0zMCwxMSArMzAsNiBAQCBfX2ZlX21hc2tfZW52 ICh2b2lkKQ0KICAgaW50IHJlc3VsdDsNCiAgIElOVEVSTkFMX1NZU0NBTExf REVDTCAoZXJyKTsNCiAgIHJlc3VsdCA9IElOVEVSTkFMX1NZU0NBTEwgKHBy Y3RsLCBlcnIsIDIsIFBSX1NFVF9GUEVYQywgUFJfRlBfRVhDX0RJU0FCTEVE KTsNCi0jIGlmbmRlZiBfX0FTU1VNRV9ORVdfUFJDVExfU1lTQ0FMTA0KLSAg aWYgKElOVEVSTkFMX1NZU0NBTExfRVJST1JfUCAocmVzdWx0LCBlcnIpDQot ICAgICAgJiYgSU5URVJOQUxfU1lTQ0FMTF9FUlJOTyAocmVzdWx0LCBlcnIp ID09IEVJTlZBTCkNCi0gICAgX19zZXRfZXJybm8gKEVOT1NZUyk7DQotIyBl bmRpZg0KICNlbHNlDQogICBfX3NldF9lcnJubyAoRU5PU1lTKTsNCiAjZW5k aWYNCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dl cnBjL3Bvd2VycGM2NC9mcHUvZmVfbm9tYXNrLmMgYi9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9mcHUvZmVfbm9tYXNrLmMN CmluZGV4IDE0Y2YxNGQuLjQ2Yjk0NzggMTAwNjQ0DQotLS0gYS9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9mcHUvZmVfbm9t YXNrLmMNCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMv cG93ZXJwYzY0L2ZwdS9mZV9ub21hc2suYw0KQEAgLTEsNSArMSw1IEBADQog LyogUHJvY2VkdXJlIGRlZmluaXRpb24gZm9yIEZFX05PTUFTS19FTlYgZm9y IExpbnV4L3BwYzY0Lg0KLSAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwg MjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisgICBDb3B5 cmlnaHQgKEMpIDIwMDMtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4NCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGli cmFyeS4NCiANCiAgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCkBAIC0zMCwx MSArMzAsNiBAQCBfX2ZlX25vbWFza19lbnYgKHZvaWQpDQogICBpbnQgcmVz dWx0Ow0KICAgSU5URVJOQUxfU1lTQ0FMTF9ERUNMIChlcnIpOw0KICAgcmVz dWx0ID0gSU5URVJOQUxfU1lTQ0FMTCAocHJjdGwsIGVyciwgMiwgUFJfU0VU X0ZQRVhDLCBQUl9GUF9FWENfUFJFQ0lTRSk7DQotIyBpZm5kZWYgX19BU1NV TUVfTkVXX1BSQ1RMX1NZU0NBTEwNCi0gIGlmIChJTlRFUk5BTF9TWVNDQUxM X0VSUk9SX1AgKHJlc3VsdCwgZXJyKQ0KLSAgICAgICYmIElOVEVSTkFMX1NZ U0NBTExfRVJSTk8gKHJlc3VsdCwgZXJyKSA9PSBFSU5WQUwpDQotICAgIF9f c2V0X2Vycm5vIChFTk9TWVMpOw0KLSMgZW5kaWYNCiAjZWxzZQ0KICAgX19z ZXRfZXJybm8gKEVOT1NZUyk7DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZ2V0Y29u dGV4dC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dl cnBjNjQvZ2V0Y29udGV4dC5TDQppbmRleCA1MzNkOThiLi40NzJiNzg1IDEw MDY0NA0KLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9w b3dlcnBjNjQvZ2V0Y29udGV4dC5TDQorKysgYi9zeXNkZXBzL3VuaXgvc3lz di9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9nZXRjb250ZXh0LlMNCkBAIC0x LDUgKzEsNSBAQA0KIC8qIFNhdmUgY3VycmVudCBjb250ZXh0Lg0KLSAgIENv cHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4NCisgICBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAgICBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4NCiANCiAgICBUaGUgR05V IEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3INCkBAIC0zMCw3ICszMCw2IEBADQogI2lmIFNITElC X0NPTVBBVCAobGliYywgR0xJQkNfMl8zLCBHTElCQ18yXzNfNCkNCiBFTlRS WShfX25vdmVjX2dldGNvbnRleHQpDQogCUNBTExfTUNPVU5UIDENCi0jaWZk ZWYgX19BU1NVTUVfTkVXX1JUX1NJR1JFVFVSTl9TWVNDQUxMDQogICBzdGQg IHIwLChTSUdDT05URVhUX0dQX1JFR1MrKFBUX1IwKjgpKShyMykNCiAgIHN0 ZCAgcjEsKFNJR0NPTlRFWFRfR1BfUkVHUysoUFRfUjEqOCkpKHIzKQ0KICAg bWZsciAgcjANCkBAIC0xMzcsMTggKzEzNiw2IEBAIEVOVFJZKF9fbm92ZWNf Z2V0Y29udGV4dCkNCiAgIGxpICByMyxTSUdfQkxPQ0sNCiAgIGJsICBKVU1Q VEFSR0VUKF9fc2lncHJvY21hc2spDQogICBub3ANCi0jZWxzZQ0KLSAgLyog SWYgdGhlIGtlcm5lbCBpcyBub3QgYXQgbGVhc3QgMi40LjIxIHRoZW4gZ2Vu ZXJhdGUgYSBFTk9TWVMgc3R1Yi4gICovDQotICBtZmxyIHIwDQotICBzdGQg IHIwLEZSQU1FX0xSX1NBVkUocjEpDQotICBjZmlfb2Zmc2V0IChsciwgRlJB TUVfTFJfU0FWRSkNCi0gIHN0ZHUgcjEsLTEyOChyMSkNCi0gIGNmaV9hZGp1 c3RfY2ZhX29mZnNldCgxMjgpDQotICBsaSAgIHIzLEVOT1NZUw0KLSAgYmwg ICBKVU1QVEFSR0VUKF9fc3lzY2FsbF9lcnJvcikNCi0gIG5vcA0KLSAgbGkg ICByMywtMQ0KLSNlbmRpZg0KIA0KICAgbGQgICAgcjAsMTI4K0ZSQU1FX0xS X1NBVkUocjEpDQogICBhZGRpICByMSxyMSwxMjgNCkBAIC0xNzIsNyArMTU5 LDYgQEAgY29tcGF0X3N5bWJvbCAobGliYywgX19ub3ZlY19nZXRjb250ZXh0 LCBnZXRjb250ZXh0LCBHTElCQ18yXzMpDQogCS5tYWNoaW5lCSJhbHRpdmVj Ig0KIEVOVFJZKF9fZ2V0Y29udGV4dCkNCiAJQ0FMTF9NQ09VTlQgMQ0KLSNp ZmRlZiBfX0FTU1VNRV9ORVdfUlRfU0lHUkVUVVJOX1NZU0NBTEwNCiAgIHN0 ZCAgcjAsKFNJR0NPTlRFWFRfR1BfUkVHUysoUFRfUjAqOCkpKHIzKQ0KICAg c3RkICByMSwoU0lHQ09OVEVYVF9HUF9SRUdTKyhQVF9SMSo4KSkocjMpDQog ICBtZmxyICByMA0KQEAgLTM4OCwxOCArMzc0LDYgQEAgTChoYXNfbm9fdmVj KToNCiAgIGxpICByMyxTSUdfQkxPQ0sNCiAgIGJsICBKVU1QVEFSR0VUKF9f c2lncHJvY21hc2spDQogICBub3ANCi0jZWxzZQ0KLSAgLyogSWYgdGhlIGtl cm5lbCBpcyBub3QgYXQgbGVhc3QgMi40LjIxIHRoZW4gZ2VuZXJhdGUgYSBF Tk9TWVMgc3R1Yi4gICovDQotICBtZmxyIHIwDQotICBzdGQgIHIwLEZSQU1F X0xSX1NBVkUocjEpDQotICBjZmlfb2Zmc2V0IChsciwgRlJBTUVfTFJfU0FW RSkNCi0gIHN0ZHUgcjEsLTEyOChyMSkNCi0gIGNmaV9hZGp1c3RfY2ZhX29m ZnNldCAoMTI4KQ0KLSAgbGkgICByMyxFTk9TWVMNCi0gIGJsICAgSlVNUFRB UkdFVChfX3N5c2NhbGxfZXJyb3IpDQotICBub3ANCi0gIGxpICAgcjMsLTEN Ci0jZW5kaWYNCiANCiAgIGxkICAgIHIwLDEyOCtGUkFNRV9MUl9TQVZFKHIx KQ0KICAgYWRkaSAgcjEscjEsMTI4DQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvbWFrZWNvbnRleHQu UyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0 L21ha2Vjb250ZXh0LlMNCmluZGV4IDlkNTg5OGMuLmRlZDJhMzUgMTAwNjQ0 DQotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2Vy cGM2NC9tYWtlY29udGV4dC5TDQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9wb3dlcnBjL3Bvd2VycGM2NC9tYWtlY29udGV4dC5TDQpAQCAtMSw1 ICsxLDUgQEANCiAvKiBDcmVhdGUgbmV3IGNvbnRleHQuDQotICAgQ29weXJp Z2h0IChDKSAyMDAyLCAyMDA0LCAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KICAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5Lg0KIA0KICAgIFRoZSBHTlUgQyBM aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcg0KQEAgLTI2LDcgKzI2LDYgQEANCiANCiBFTlRSWShfX21h a2Vjb250ZXh0KQ0KIAlDQUxMX01DT1VOVCAzDQotI2lmZGVmIF9fQVNTVU1F X05FV19SVF9TSUdSRVRVUk5fU1lTQ0FMTA0KICAgLyogU2F2ZSBwYXJhbWV0 ZXJzIGludG8gdGhlIHBhcmFtZXRlciBzYXZlIGFyZWEgb2YgY2FsbGVycyBm cmFtZS4gICovDQogICBzdGQgIHIzLEZSQU1FX1BBUk0xX1NBVkUocjEpIC8q IHVjb250ZXh0X3QgKnVjcCAgKi8NCiAgIHN0ZCAgcjQsRlJBTUVfUEFSTTJf U0FWRShyMSkgLyogdm9pZCAoKmZ1bmMpKHZvaWQpICAqLw0KQEAgLTE2Niwy MiArMTY1LDYgQEAgTChnb3RleGl0Y29kZWFkZHIpOg0KICAgYWRkaSAgcjEs cjEsMTI4DQogICBtdGxyICByMA0KICAgYmxyDQotI2Vsc2UNCi0gIC8qIElm IHRoZSBrZXJuZWwgaXMgbm90IGF0IGxlYXN0IDIuNC4yMSB0aGVuIGdlbmVy YXRlIGEgRU5PU1lTIHN0dWIuICAqLw0KLSAgbWZsciByMA0KLSAgc3RkICBy MCxGUkFNRV9MUl9TQVZFKHIxKQ0KLSAgY2ZpX29mZnNldCAobHIsIEZSQU1F X0xSX1NBVkUpDQotICBzdGR1IHIxLC0xMjgocjEpDQotICBjZmlfYWRqdXN0 X2NmYV9vZmZzZXQgKDEyOCkNCi0gIGxpICAgcjMsRU5PU1lTDQotICBibCAg IEpVTVBUQVJHRVQoX19zeXNjYWxsX2Vycm9yKQ0KLSAgbm9wDQotICBsaSAg IHIzLC0xDQotICBsZCAgIHIwLDEyOCtGUkFNRV9MUl9TQVZFKHIxKQ0KLSAg YWRkaSByMSxyMSwxMjgNCi0gIG10bHIgcjANCi0gIGJscg0KLSNlbmRpZg0K IEVORChfX21ha2Vjb250ZXh0KQ0KIA0KIHdlYWtfYWxpYXMgKF9fbWFrZWNv bnRleHQsIG1ha2Vjb250ZXh0KQ0KZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L3NldGNvbnRleHQuUyBi L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L3Nl dGNvbnRleHQuUw0KaW5kZXggOTg4ZWEzYS4uYTcxOTJhNiAxMDA2NDQNCi0t LSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0 L3NldGNvbnRleHQuUw0KKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv cG93ZXJwYy9wb3dlcnBjNjQvc2V0Y29udGV4dC5TDQpAQCAtMSw2ICsxLDUg QEANCiAvKiBTd2l0Y2ggdG8gY29udGV4dC4NCi0gICBDb3B5cmlnaHQgKEMp IDIwMDIsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkNCi0gICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCisgICBDb3B5cmlnaHQgKEMp IDIwMDItMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4NCiAN CiAgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCkBAIC0zOSw3ICszOCw2IEBA DQogI2lmIFNITElCX0NPTVBBVCAobGliYywgR0xJQkNfMl8zLCBHTElCQ18y XzNfNCkNCiBFTlRSWShfX25vdmVjX3NldGNvbnRleHQpDQogCUNBTExfTUNP VU5UIDENCi0jaWZkZWYgX19BU1NVTUVfTkVXX1JUX1NJR1JFVFVSTl9TWVND QUxMDQogICBtZmxyICByMA0KICAgc3RkICAgcjMxLC04KDEpDQogICBjZmlf b2Zmc2V0KHIzMSwtOCkNCkBAIC0yMDAsMjIgKzE5OCw2IEBAIEwobnZfZG9f c2lncmV0KToNCiAgIGxpICAgcjAsU1lTX2lmeShydF9zaWdyZXR1cm4pDQog ICBzYw0KICAgLyogTm8gcmV0dXJuLiAgKi8NCi0jZWxzZQ0KLSAgLyogSWYg dGhlIGtlcm5lbCBpcyBub3QgYXQgbGVhc3QgMi40LjIxIHRoZW4gZ2VuZXJh dGUgYSBFTk9TWVMgc3R1Yi4gICovDQotICBtZmxyIHIwDQotICBzdGQgIHIw LEZSQU1FX0xSX1NBVkUocjEpDQotICBjZmlfb2Zmc2V0KGxyLEZSQU1FX0xS X1NBVkUpDQotICBzdGR1IHIxLC0xMjgocjEpDQotICBjZmlfYWRqdXN0X2Nm YV9vZmZzZXQoMTI4KQ0KLSAgbGkgICByMyxFTk9TWVMNCi0gIGJsICAgSlVN UFRBUkdFVChfX3N5c2NhbGxfZXJyb3IpDQotICBub3ANCi0gIGxpICAgcjMs LTENCi0gIGxkICAgcjAsMTI4K0ZSQU1FX0xSX1NBVkUocjEpDQotICBhZGRp IHIxLHIxLDEyOA0KLSAgbXRsciByMA0KLSAgYmxyDQotI2VuZGlmDQogDQog UFNFVURPX0VORChfX25vdmVjX3NldGNvbnRleHQpDQogDQpAQCAtMjI3LDcg KzIwOSw2IEBAIGNvbXBhdF9zeW1ib2wgKGxpYmMsIF9fbm92ZWNfc2V0Y29u dGV4dCwgc2V0Y29udGV4dCwgR0xJQkNfMl8zKQ0KIAkubWFjaGluZQkiYWx0 aXZlYyINCiBFTlRSWShfX3NldGNvbnRleHQpDQogCUNBTExfTUNPVU5UIDEN Ci0jaWZkZWYgX19BU1NVTUVfTkVXX1JUX1NJR1JFVFVSTl9TWVNDQUxMDQog ICBtZmxyICByMA0KICAgc3RkICAgcjMxLC04KDEpDQogICBjZmlfb2Zmc2V0 KHIzMSwtOCkNCkBAIC00OTEsMjIgKzQ3Miw2IEBAIEwoZG9fc2lncmV0KToN CiAgIGxpICAgcjAsU1lTX2lmeShydF9zaWdyZXR1cm4pDQogICBzYw0KICAg LyogTm8gcmV0dXJuLiAgKi8NCi0jZWxzZQ0KLSAgLyogSWYgdGhlIGtlcm5l bCBpcyBub3QgYXQgbGVhc3QgMi40LjIxIHRoZW4gZ2VuZXJhdGUgYSBFTk9T WVMgc3R1Yi4gICovDQotICBtZmxyIHIwDQotICBzdGQgIHIwLEZSQU1FX0xS X1NBVkUocjEpDQotICBjZmlfb2Zmc2V0IChsciwgRlJBTUVfTFJfU0FWRSkN Ci0gIHN0ZHUgcjEsLTEyOChyMSkNCi0gIGNmaV9hZGp1c3RfY2ZhX29mZnNl dCAoMTI4KQ0KLSAgbGkgICByMyxFTk9TWVMNCi0gIGJsICAgSlVNUFRBUkdF VChfX3N5c2NhbGxfZXJyb3IpDQotICBub3ANCi0gIGxpICAgcjMsLTENCi0g IGxkICAgcjAsMTI4K0ZSQU1FX0xSX1NBVkUocjEpDQotICBhZGRpIHIxLHIx LDEyOA0KLSAgbXRsciByMA0KLSAgYmxyDQotI2VuZGlmDQogDQogUFNFVURP X0VORChfX3NldGNvbnRleHQpDQogDQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvc3dhcGNvbnRleHQu UyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0 L3N3YXBjb250ZXh0LlMNCmluZGV4IDZiMDA3YTUuLmYyMGU5YTkgMTAwNjQ0 DQotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2Vy cGM2NC9zd2FwY29udGV4dC5TDQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9wb3dlcnBjL3Bvd2VycGM2NC9zd2FwY29udGV4dC5TDQpAQCAtMSw2 ICsxLDUgQEANCiAvKiBTYXZlIGN1cnJlbnQgY29udGV4dCBhbmQgaW5zdGFs bCB0aGUgZ2l2ZW4gb25lLg0KLSAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAw NCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOQ0KLSAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDEy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KICAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5Lg0KIA0KICAgIFRoZSBH TlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcg0KQEAgLTM5LDcgKzM4LDYgQEANCiAJLnNlY3Rp b24JIi50ZXh0Ig0KIEVOVFJZKF9fbm92ZWNfc3dhcGNvbnRleHQpDQogCUNB TExfTUNPVU5UIDINCi0jaWZkZWYgX19BU1NVTUVfTkVXX1JUX1NJR1JFVFVS Tl9TWVNDQUxMDQogICBzdGQgIHIwLChTSUdDT05URVhUX0dQX1JFR1MrKFBU X1IwKjgpKShyMykNCiAgIHN0ZCAgcjEsKFNJR0NPTlRFWFRfR1BfUkVHUyso UFRfUjEqOCkpKHIzKQ0KICAgbWZsciAgcjANCkBAIC0yOTQsMjEgKzI5Miw2 IEBAIEwobnZfZG9fc2lncmV0KToNCiAgIGxpICAgcjAsU1lTX2lmeShydF9z aWdyZXR1cm4pDQogICBzYw0KICAgLyogTm8gcmV0dXJuLiAgKi8NCi0jZWxz ZQ0KLSAgLyogSWYgdGhlIGtlcm5lbCBpcyBub3QgYXQgbGVhc3QgMi40LjIx IHRoZW4gZ2VuZXJhdGUgYSBFTk9TWVMgc3R1Yi4gICovDQotICBtZmxyIHIw DQotICBzdGQgIHIwLEZSQU1FX0xSX1NBVkUocjEpDQotICBjZmlfb2Zmc2V0 KGxyLEZSQU1FX0xSX1NBVkUpDQotICBzdGR1IHIxLC0xMjgocjEpDQotICBs aSAgIHIzLEVOT1NZUw0KLSAgYmwgICBKVU1QVEFSR0VUKF9fc3lzY2FsbF9l cnJvcikNCi0gIG5vcA0KLSAgbGkgICByMywtMQ0KLSAgbGQgICByMCwxMjgr RlJBTUVfTFJfU0FWRShyMSkNCi0gIGFkZGkgcjEscjEsMTI4DQotICBtdGxy IHIwDQotICBibHINCi0jZW5kaWYNCiANCiBQU0VVRE9fRU5EKF9fbm92ZWNf c3dhcGNvbnRleHQpDQogDQpAQCAtMzIwLDcgKzMwMyw2IEBAIGNvbXBhdF9z eW1ib2wgKGxpYmMsIF9fbm92ZWNfc3dhcGNvbnRleHQsIHN3YXBjb250ZXh0 LCBHTElCQ18yXzMpDQogCS5tYWNoaW5lCSJhbHRpdmVjIg0KIEVOVFJZKF9f c3dhcGNvbnRleHQpDQogCUNBTExfTUNPVU5UIDINCi0jaWZkZWYgX19BU1NV TUVfTkVXX1JUX1NJR1JFVFVSTl9TWVNDQUxMDQogICBzdGQgIHIwLChTSUdD T05URVhUX0dQX1JFR1MrKFBUX1IwKjgpKShyMykNCiAgIHN0ZCAgcjEsKFNJ R0NPTlRFWFRfR1BfUkVHUysoUFRfUjEqOCkpKHIzKQ0KICAgbWZsciAgcjAN CkBAIC03ODksMjIgKzc3MSw2IEBAIEwoZG9fc2lncmV0KToNCiAgIGxpICAg cjAsU1lTX2lmeShydF9zaWdyZXR1cm4pDQogICBzYw0KICAgLyogTm8gcmV0 dXJuLiAgKi8NCi0jZWxzZQ0KLSAgLyogSWYgdGhlIGtlcm5lbCBpcyBub3Qg YXQgbGVhc3QgMi40LjIxIHRoZW4gZ2VuZXJhdGUgYSBFTk9TWVMgc3R1Yi4g ICovDQotICBtZmxyIHIwDQotICBzdGQgIHIwLEZSQU1FX0xSX1NBVkUocjEp DQotICBjZmlfb2Zmc2V0IChsciwgRlJBTUVfTFJfU0FWRSkNCi0gIHN0ZHUg cjEsLTEyOChyMSkNCi0gIGNmaV9hZGp1c3RfY2ZhX29mZnNldCAoMTI4KQ0K LSAgbGkgICByMyxFTk9TWVMNCi0gIGJsICAgSlVNUFRBUkdFVChfX3N5c2Nh bGxfZXJyb3IpDQotICBub3ANCi0gIGxpICAgcjMsLTENCi0gIGxkICAgcjAs MTI4K0ZSQU1FX0xSX1NBVkUocjEpDQotICBhZGRpIHIxLHIxLDEyOA0KLSAg bXRsciByMA0KLSAgYmxyDQotI2VuZGlmDQogDQogUFNFVURPX0VORChfX3N3 YXBjb250ZXh0KQ0KIA0K ---1152306461-1545214434-1342136398=:30566--