From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1666 invoked by alias); 14 Jan 2013 15:55:28 -0000 Received: (qmail 1650 invoked by uid 22791); 14 Jan 2013 15:55:27 -0000 X-SWARE-Spam-Status: No, hits=-4.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-pb0-f49.google.com (HELO mail-pb0-f49.google.com) (209.85.160.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 14 Jan 2013 15:55:16 +0000 Received: by mail-pb0-f49.google.com with SMTP id un15so2218045pbc.8 for ; Mon, 14 Jan 2013 07:55:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.66.76.37 with SMTP id h5mr232643464paw.33.1358178915493; Mon, 14 Jan 2013 07:55:15 -0800 (PST) Received: by 10.68.229.137 with HTTP; Mon, 14 Jan 2013 07:55:15 -0800 (PST) In-Reply-To: <96A7A77D-8593-447D-97CC-BD0D56CD8AE9@gmail.com> References: <28659BFC-706C-4478-BAFA-142383271369@codesourcery.com> <96A7A77D-8593-447D-97CC-BD0D56CD8AE9@gmail.com> Date: Mon, 14 Jan 2013 15:55:00 -0000 Message-ID: Subject: Re: [RFC PATCH] Implementing ifunc target hook From: Alexander Ivchenko To: Maxim Kuvyrkov Cc: GCC Patches , "Joseph S. Myers" , "H.J. Lu" Content-Type: multipart/mixed; boundary=f46d042f9410cca60204d341ab75 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2013-01/txt/msg00696.txt.bz2 --f46d042f9410cca60204d341ab75 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Content-length: 4577 thank you very much for your review! I fixed the arm build and all other issues that you raised. the patch is attached. Bootstrap and tested on x86-64 linux Alexander 2013/1/11 Maxim Kuvyrkov : > On 10/01/2013, at 12:24 AM, Alexander Ivchenko wrote: > >>> Config/linux-android.h is a better place for this declaration. > > I was wrong here. Config/linux-android.h is not a "re-includable" header= , and is not fit for function declarations. > >> >> That wouldn't help, I got the following error: >> >> In file included from ../../.././gcc/tm.h:24:0, >> from [..]/src/gcc/libgcc/generic-morestack-thread.c:29: >> [..]/src/gcc/libgcc/../gcc/config/linux-android.h:62:1: error: unknown >> type name =91bool=92 >> extern bool linux_android_has_ifunc_p (void); >> ^ >> >> Anyway, linux-protos.h looks to me as a good thing to have (e.g. for >> libc_has_function hook, that is >> supposed to be commited in a near future) for declaring linux (and >> Android) specific versions of hooks.. > > OK, I agree. In theory linux_android_has_ifunc_p could've been placed in= to linux-android-protos.h, but having a separate file (from linux-protos.h)= just for 1-2 declarations is not justified. > >>>> + "It returns true if the target supports GNU indirect functions.\n\ >>>> +The support includes the assembler, linker and dynamic linker.\n\ >>>> +The default value of this hook is defined as for the host machine.", >>> >>> Are your sure the last sentence is correct? It seems the default value= for this hook is based on which libc is being used. Maybe it would be mor= e accurate to say "The default value of this hook is based on target's libc= ."? >> >> Well yes, you are right that the default value depends on version of >> libc, but this version >> is checked on the configure time for the host machine >> (HAVE_GNU_INDIRECT_FUNCTION), > > No. And even if that was the case that would be a bug. > > HAVE_GNU_INDIRECT_FUNCTION is set based on default_gnu_indirect_function = variable defined in config.gcc (unless overridden with a configure argument= ). This variable is set to true for targets that support IFUNCs irrespecti= ve of host and host's libc. > >> --- a/gcc/config.gcc >> +++ b/gcc/config.gcc >> @@ -637,6 +637,11 @@ case ${target} in >> native_system_header_dir=3D/include >> ;; >> esac >> + case $target in >> + *linux*) >> + tm_p_file=3D"${tm_p_file} linux-protos.h" >> + ;; >> + esac >> # glibc / uclibc / bionic switch. >> # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*= BSD. >> case $target in >> @@ -662,8 +667,10 @@ case ${target} in >> # Add Android userspace support to Linux targets. >> case $target in >> *linux*) >> + tmake_file=3D"${tmake_file} t-linux-android" >> tm_file=3D"$tm_file linux-android.h" >> extra_options=3D"$extra_options linux-android.opt" >> + extra_objs=3D"$extra_objs linux-android.o" >> ;; >> esac >> # Enable compilation for Android by default for *android* targets. >> > > Also scan config.gcc for any other occurences of linux-android.h and add = same changes there. I believe only arm*-*-linux-* is affected. > > >> --- a/gcc/config/host-linux.c >> +++ b/gcc/config/host-linux.c >> @@ -23,7 +23,6 @@ >> #include "hosthooks.h" >> #include "hosthooks-def.h" >> >> - >> /* Linux has a feature called exec-shield-randomize that perturbs the >> address of non-fixed mapped segments by a (relatively) small amount. >> The feature is intended to make it harder to attack the system with > > Don't change formatting unless you are editing the code around it. > >> diff --git a/gcc/config/linux-android.c b/gcc/config/linux-android.c >> new file mode 100644 >> index 0000000..47cc50a >> --- /dev/null >> +++ b/gcc/config/linux-android.c > ... >> +You should have received a copy of the GNU General Public License >> +along with GCC; see the file COPYING3. If not see >> +. */ >> + >> +#include "config.h" >> +#include "system.h" >> +#include "coretypes.h" >> +#include "tm.h" > > Add '#include "linux-protos.h"'. Remember to update t-linux-android. > >> + >> +/* Android does not support GNU indirect functions. */ >> + >> +bool >> +linux_android_has_ifunc_p (void) >> +{ >> + return TARGET_ANDROID ? false : HAVE_GNU_INDIRECT_FUNCTION; >> +} >> > > > Please send one last version for the final review, primarily to double ch= eck your changes to arm*-linux-* to avoid breaking it. > > Thanks! > > -- > Maxim Kuvyrkov > > > > > --f46d042f9410cca60204d341ab75 Content-Type: application/octet-stream; name="disable_ifunc_for_android_06.patch" Content-Disposition: attachment; filename="disable_ifunc_for_android_06.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbxsn7an0 Content-length: 17385 ZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCmlu ZGV4IDY0ZGYyOTAuLjNkNzE0NzQgMTAwNjQ0Ci0tLSBhL2djYy9DaGFuZ2VM b2cKKysrIGIvZ2NjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEz LTAxLTE0ICBBbGV4YW5kZXIgSXZjaGVua28gIDxhbGV4YW5kZXIuaXZjaGVu a29AaW50ZWwuY29tPgorCisJKiBnY2MvdGFyZ2V0LmRlZiAoVEFSR0VUX0hB U19JRlVOQ19QKTogTmV3IHRhcmdldCBob29rLgorCSogZ2NjL2RvYy90bS50 ZXhpLmluIChUQVJHRVRfSEFTX0lGVU5DX1ApOiBOZXcuCisJKiBnY2MvZG9j L3RtLnRleGk6IFJlZ2VuZXJhdGUuCisJKiBnY2MvdGFyZ2hvb2tzLmggKGRl ZmF1bHRfaGF2ZV9pZnVuY19wKTogTmV3LgorCSogZ2NjL3Rhcmdob29rcy5j IChkZWZhdWx0X2hhdmVfaWZ1bmNfcCk6IERpdHRvLgorCSogZ2NjL2NvbmZp Zy9saW51eC1wcm90b3MuaDogTmV3IGZpbGUuCisJKiBnY2MvY29uZmlnL2xp bnV4LWFuZHJvaWRzLmggKFRBUkdFVF9IQVNfSUZVTkNfUCk6IFVzaW5nIHZl cnNpb24gb2YKKwl0aGlzIGhvb2sgZm9yIGxpbnV4IHdoaWNoIGRpc2FibGVz IHN1cHBvcnQgb2YgaW5kaXJlY3QgZnVuY3Rpb25zIGluCisJYW5kcm9pZC4K KwkqIGdjYy9jb25maWcvbGludXgtYW5kcm9pZC5jOiBOZXcgZmlsZS4KKwkq IGdjYy9jb25maWcvdC1saW51eC1hbmRyb2lkLmM6IERpdHRvLgorCSogZ2Nj L2NvbmZpZy5nY2M6IEFkZGVkIG5ldyBvYmplY3QgZmlsZSBsaW51eC1hbmRy b2lkLm8uCisJKiBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2dldF9m dW5jdGlvbl92ZXJzaW9uc19kaXNwYXRjaGVyKToKKwlVc2luZyBUQVJHRVRf SEFTX0lGVU5DIGhvb2sgaW5zdGVhZCBvZiBIQVZFX0dOVV9JTkRJUkVDVF9G VU5DVElPTi4KKwkqIGdjYy92YXJhc20uYyAoZG9fYXNzZW1ibGVfYWxpYXMp OiBMaWtld2lzZS4KKwogMjAxMy0wMS0xNCAgR2VvcmctSm9oYW5uIExheSAg PGF2ckBnamxheS5kZT4KIAogCSogY29uZmlnL2F2ci9hdnItc3RkaW50Lmg6 IFJlbW92ZSB0cmFpbGluZyBibGFua3MuCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCmluZGV4IDdkZWFjMzMuLjI2NjAy ZDIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcuZ2NjCisrKyBiL2djYy9jb25m aWcuZ2NjCkBAIC02MzYsNiArNjM2LDExIEBAIGNhc2UgJHt0YXJnZXR9IGlu CiAgICAgICBuYXRpdmVfc3lzdGVtX2hlYWRlcl9kaXI9L2luY2x1ZGUKICAg ICAgIDs7CiAgIGVzYWMKKyAgY2FzZSAkdGFyZ2V0IGluCisgICAgKmxpbnV4 KikKKyAgICAgIHRtX3BfZmlsZT0iJHt0bV9wX2ZpbGV9IGxpbnV4LXByb3Rv cy5oIgorICAgICAgOzsKKyAgZXNhYwogICAjIGdsaWJjIC8gdWNsaWJjIC8g YmlvbmljIHN3aXRjaC4KICAgIyB1Y2xpYmMgYW5kIGJpb25pYyBhcmVuJ3Qg dXNhYmxlIGZvciBHTlUvSHVyZCBhbmQgbmVpdGhlciBmb3IgR05VL2sqQlNE LgogICBjYXNlICR0YXJnZXQgaW4KQEAgLTY2MSw4ICs2NjYsMTAgQEAgY2Fz ZSAke3RhcmdldH0gaW4KICAgIyBBZGQgQW5kcm9pZCB1c2Vyc3BhY2Ugc3Vw cG9ydCB0byBMaW51eCB0YXJnZXRzLgogICBjYXNlICR0YXJnZXQgaW4KICAg ICAqbGludXgqKQorICAgICAgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSB0 LWxpbnV4LWFuZHJvaWQiCiAgICAgICB0bV9maWxlPSIkdG1fZmlsZSBsaW51 eC1hbmRyb2lkLmgiCiAgICAgICBleHRyYV9vcHRpb25zPSIkZXh0cmFfb3B0 aW9ucyBsaW51eC1hbmRyb2lkLm9wdCIKKyAgICAgIGV4dHJhX29ianM9IiRl eHRyYV9vYmpzIGxpbnV4LWFuZHJvaWQubyIKICAgICAgIDs7CiAgIGVzYWMK ICAgIyBFbmFibGUgY29tcGlsYXRpb24gZm9yIEFuZHJvaWQgYnkgZGVmYXVs dCBmb3IgKmFuZHJvaWQqIHRhcmdldHMuCkBAIC04NjMsNyArODcwLDkgQEAg YXJtKi0qLW5ldGJzZGVsZiopCiAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxl fSBhcm0vdC1hcm0iCiAJOzsKIGFybSotKi1saW51eC0qKQkJCSMgQVJNIEdO VS9MaW51eCB3aXRoIEVMRgorCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0g dC1saW51eC1hbmRyb2lkIgogCXRtX2ZpbGU9ImRieGVsZi5oIGVsZm9zLmgg Z251LXVzZXIuaCBsaW51eC5oIGxpbnV4LWFuZHJvaWQuaCBnbGliYy1zdGRp bnQuaCBhcm0vZWxmLmggYXJtL2xpbnV4LWdhcy5oIGFybS9saW51eC1lbGYu aCIKKwlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyBsaW51eC1hbmRyb2lkLm8i CiAJY2FzZSAkdGFyZ2V0IGluCiAJYXJtKmItKi1saW51eCopCiAJICAgIHRt X2RlZmluZXM9IiR7dG1fZGVmaW5lc30gVEFSR0VUX0JJR19FTkRJQU5fREVG QVVMVD0xIgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBi L2djYy9jb25maWcvaTM4Ni9pMzg2LmMKaW5kZXggNGY3NzhjMS4uMWNmNGY5 NCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYworKysgYi9n Y2MvY29uZmlnL2kzODYvaTM4Ni5jCkBAIC0yOTE0Miw3ICsyOTE0Miw3IEBA IG1ha2VfbmFtZSAodHJlZSBkZWNsLCBjb25zdCBjaGFyICpzdWZmaXgsIGJv b2wgbWFrZV91bmlxdWUpCiAgIHJldHVybiBnbG9iYWxfdmFyX25hbWU7CiB9 CiAKLSNpZiBkZWZpbmVkIChBU01fT1VUUFVUX1RZUEVfRElSRUNUSVZFKSAm JiBIQVZFX0dOVV9JTkRJUkVDVF9GVU5DVElPTgorI2lmIGRlZmluZWQgKEFT TV9PVVRQVVRfVFlQRV9ESVJFQ1RJVkUpCiAKIC8qIE1ha2UgYSBkaXNwYXRj aGVyIGRlY2xhcmF0aW9uIGZvciB0aGUgbXVsdGktdmVyc2lvbmVkIGZ1bmN0 aW9uIERFQ0wuCiAgICBDYWxscyB0byBERUNMIGZ1bmN0aW9uIHdpbGwgYmUg cmVwbGFjZWQgd2l0aCBjYWxscyB0byB0aGUgZGlzcGF0Y2hlcgpAQCAtMjky MDksMTIgKzI5MjA5LDYgQEAgaXg4Nl9nZXRfZnVuY3Rpb25fdmVyc2lvbnNf ZGlzcGF0Y2hlciAodm9pZCAqZGVjbCkKIAogICB0cmVlIGRpc3BhdGNoX2Rl Y2wgPSBOVUxMOwogCi0jaWYgZGVmaW5lZCAoQVNNX09VVFBVVF9UWVBFX0RJ UkVDVElWRSkgJiYgSEFWRV9HTlVfSU5ESVJFQ1RfRlVOQ1RJT04KLSAgc3Ry dWN0IGNncmFwaF9mdW5jdGlvbl92ZXJzaW9uX2luZm8gKml0X3YgPSBOVUxM OwotICBzdHJ1Y3QgY2dyYXBoX25vZGUgKmRpc3BhdGNoZXJfbm9kZSA9IE5V TEw7Ci0gIHN0cnVjdCBjZ3JhcGhfZnVuY3Rpb25fdmVyc2lvbl9pbmZvICpk aXNwYXRjaGVyX3ZlcnNpb25faW5mbyA9IE5VTEw7Ci0jZW5kaWYKLQogICBz dHJ1Y3QgY2dyYXBoX2Z1bmN0aW9uX3ZlcnNpb25faW5mbyAqZGVmYXVsdF92 ZXJzaW9uX2luZm8gPSBOVUxMOwogIAogICBnY2NfYXNzZXJ0IChmbiAhPSBO VUxMICYmIERFQ0xfRlVOQ1RJT05fVkVSU0lPTkVEIChmbikpOwpAQCAtMjky NTksMzAgKzI5MjUzLDQwIEBAIGl4ODZfZ2V0X2Z1bmN0aW9uX3ZlcnNpb25z X2Rpc3BhdGNoZXIgKHZvaWQgKmRlY2wpCiAKICAgZGVmYXVsdF9ub2RlID0g ZGVmYXVsdF92ZXJzaW9uX2luZm8tPnRoaXNfbm9kZTsKIAotI2lmIGRlZmlu ZWQgKEFTTV9PVVRQVVRfVFlQRV9ESVJFQ1RJVkUpICYmIEhBVkVfR05VX0lO RElSRUNUX0ZVTkNUSU9OCi0gIC8qIFJpZ2h0IG5vdywgdGhlIGRpc3BhdGNo aW5nIGlzIGRvbmUgdmlhIGlmdW5jLiAgKi8KLSAgZGlzcGF0Y2hfZGVjbCA9 IG1ha2VfZGlzcGF0Y2hlcl9kZWNsIChkZWZhdWx0X25vZGUtPnN5bWJvbC5k ZWNsKTsgCi0KLSAgZGlzcGF0Y2hlcl9ub2RlID0gY2dyYXBoX2dldF9jcmVh dGVfbm9kZSAoZGlzcGF0Y2hfZGVjbCk7Ci0gIGdjY19hc3NlcnQgKGRpc3Bh dGNoZXJfbm9kZSAhPSBOVUxMKTsKLSAgZGlzcGF0Y2hlcl9ub2RlLT5kaXNw YXRjaGVyX2Z1bmN0aW9uID0gMTsKLSAgZGlzcGF0Y2hlcl92ZXJzaW9uX2lu Zm8KLSAgICA9IGluc2VydF9uZXdfY2dyYXBoX25vZGVfdmVyc2lvbiAoZGlz cGF0Y2hlcl9ub2RlKTsKLSAgZGlzcGF0Y2hlcl92ZXJzaW9uX2luZm8tPm5l eHQgPSBkZWZhdWx0X3ZlcnNpb25faW5mbzsKLSAgZGlzcGF0Y2hlcl9ub2Rl LT5sb2NhbC5maW5hbGl6ZWQgPSAxOwotIAotICAvKiBTZXQgdGhlIGRpc3Bh dGNoZXIgZm9yIGFsbCB0aGUgdmVyc2lvbnMuICAqLyAKLSAgaXRfdiA9IGRl ZmF1bHRfdmVyc2lvbl9pbmZvOwotICB3aGlsZSAoaXRfdiAhPSBOVUxMKQor I2lmIGRlZmluZWQgKEFTTV9PVVRQVVRfVFlQRV9ESVJFQ1RJVkUpCisgIGlm ICh0YXJnZXRtLmhhc19pZnVuY19wICgpKQogICAgIHsKLSAgICAgIGl0X3Yt PmRpc3BhdGNoZXJfcmVzb2x2ZXIgPSBkaXNwYXRjaF9kZWNsOwotICAgICAg aXRfdiA9IGl0X3YtPm5leHQ7CisgICAgICBzdHJ1Y3QgY2dyYXBoX2Z1bmN0 aW9uX3ZlcnNpb25faW5mbyAqaXRfdiA9IE5VTEw7CisgICAgICBzdHJ1Y3Qg Y2dyYXBoX25vZGUgKmRpc3BhdGNoZXJfbm9kZSA9IE5VTEw7CisgICAgICBz dHJ1Y3QgY2dyYXBoX2Z1bmN0aW9uX3ZlcnNpb25faW5mbyAqZGlzcGF0Y2hl cl92ZXJzaW9uX2luZm8gPSBOVUxMOworCisgICAgICAvKiBSaWdodCBub3cs IHRoZSBkaXNwYXRjaGluZyBpcyBkb25lIHZpYSBpZnVuYy4gICovCisgICAg ICBkaXNwYXRjaF9kZWNsID0gbWFrZV9kaXNwYXRjaGVyX2RlY2wgKGRlZmF1 bHRfbm9kZS0+c3ltYm9sLmRlY2wpOworCisgICAgICBkaXNwYXRjaGVyX25v ZGUgPSBjZ3JhcGhfZ2V0X2NyZWF0ZV9ub2RlIChkaXNwYXRjaF9kZWNsKTsK KyAgICAgIGdjY19hc3NlcnQgKGRpc3BhdGNoZXJfbm9kZSAhPSBOVUxMKTsK KyAgICAgIGRpc3BhdGNoZXJfbm9kZS0+ZGlzcGF0Y2hlcl9mdW5jdGlvbiA9 IDE7CisgICAgICBkaXNwYXRjaGVyX3ZlcnNpb25faW5mbworCT0gaW5zZXJ0 X25ld19jZ3JhcGhfbm9kZV92ZXJzaW9uIChkaXNwYXRjaGVyX25vZGUpOwor ICAgICAgZGlzcGF0Y2hlcl92ZXJzaW9uX2luZm8tPm5leHQgPSBkZWZhdWx0 X3ZlcnNpb25faW5mbzsKKyAgICAgIGRpc3BhdGNoZXJfbm9kZS0+bG9jYWwu ZmluYWxpemVkID0gMTsKKworICAgICAgLyogU2V0IHRoZSBkaXNwYXRjaGVy IGZvciBhbGwgdGhlIHZlcnNpb25zLiAgKi8KKyAgICAgIGl0X3YgPSBkZWZh dWx0X3ZlcnNpb25faW5mbzsKKyAgICAgIHdoaWxlIChpdF92ICE9IE5VTEwp CisJeworCSAgaXRfdi0+ZGlzcGF0Y2hlcl9yZXNvbHZlciA9IGRpc3BhdGNo X2RlY2w7CisJICBpdF92ID0gaXRfdi0+bmV4dDsKKwl9CiAgICAgfQotI2Vs c2UKLSAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWZhdWx0 X25vZGUtPnN5bWJvbC5kZWNsKSwKLQkgICAgIm11bHRpdmVyc2lvbmluZyBu ZWVkcyBpZnVuYyB3aGljaCBpcyBub3Qgc3VwcG9ydGVkICIKLQkgICAgImlu IHRoaXMgY29uZmlndXJhdGlvbiIpOworICBlbHNlCiAjZW5kaWYKKyAgICB7 CisgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlZmF1 bHRfbm9kZS0+c3ltYm9sLmRlY2wpLAorCQkibXVsdGl2ZXJzaW9uaW5nIG5l ZWRzIGlmdW5jIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgIgorCQkib24gdGhp cyB0YXJnZXQiKTsKKyAgICB9CisKICAgcmV0dXJuIGRpc3BhdGNoX2RlY2w7 CiB9CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXgtYW5kcm9pZC5j IGIvZ2NjL2NvbmZpZy9saW51eC1hbmRyb2lkLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjNkODJhNQotLS0gL2Rldi9udWxsCisr KyBiL2djYy9jb25maWcvbGludXgtYW5kcm9pZC5jCkBAIC0wLDAgKzEsMzQg QEAKKy8qIEZ1bmN0aW9ucyBmb3IgTGludXggQW5kcm9pZCBhcyB0YXJnZXQg bWFjaGluZSBmb3IgR05VIEMgY29tcGlsZXIuCisgICBDb3B5cmlnaHQgKEMp IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIw MTAsIDIwMTEsCisgICAyMDEyLCAyMDEzLgorICAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4K KworR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz LCBvciAoYXQgeW91ciBvcHRpb24pCithbnkgbGF0ZXIgdmVyc2lvbi4KKwor R0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggR0NDOyBz ZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCis8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiY29uZmln LmgiCisjaW5jbHVkZSAic3lzdGVtLmgiCisjaW5jbHVkZSAiY29yZXR5cGVz LmgiCisjaW5jbHVkZSAidG0uaCIKKyNpbmNsdWRlICJsaW51eC1wcm90b3Mu aCIKKworLyogQW5kcm9pZCBkb2VzIG5vdCBzdXBwb3J0IEdOVSBpbmRpcmVj dCBmdW5jdGlvbnMuICAqLworCitib29sCitsaW51eF9hbmRyb2lkX2hhc19p ZnVuY19wICh2b2lkKQoreworICByZXR1cm4gVEFSR0VUX0FORFJPSUQgPyBm YWxzZSA6IEhBVkVfR05VX0lORElSRUNUX0ZVTkNUSU9OOworfQpkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9saW51eC1hbmRyb2lkLmggYi9nY2MvY29uZmln L2xpbnV4LWFuZHJvaWQuaAppbmRleCAyYzg3Yzg0Li44MzFhMTljIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2xpbnV4LWFuZHJvaWQuaAorKysgYi9nY2Mv Y29uZmlnL2xpbnV4LWFuZHJvaWQuaApAQCAtNTcsMyArNTcsNiBAQAogCiAj ZGVmaW5lIEFORFJPSURfRU5ERklMRV9TUEVDIFwKICAgIiV7c2hhcmVkOiBj cnRlbmRfc28lTyVzOzogY3J0ZW5kX2FuZHJvaWQlTyVzfSIKKworI3VuZGVm IFRBUkdFVF9IQVNfSUZVTkNfUAorI2RlZmluZSBUQVJHRVRfSEFTX0lGVU5D X1AgbGludXhfYW5kcm9pZF9oYXNfaWZ1bmNfcApkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9saW51eC1wcm90b3MuaCBiL2djYy9jb25maWcvbGludXgtcHJv dG9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFl MWQyOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvbGludXgtcHJv dG9zLmgKQEAgLTAsMCArMSwyMiBAQAorLyogUHJvdG90eXBlcy4KKyAgIENv cHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAw NywgMjAwOCwgMjAxMCwgMjAxMSwKKyAgIDIwMTIsIDIwMTMKKyAgIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFy dCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZl cnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQor PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworZXh0ZXJu IGJvb2wgbGludXhfYW5kcm9pZF9oYXNfaWZ1bmNfcCAodm9pZCk7CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL3QtbGludXgtYW5kcm9pZCBiL2djYy9jb25m aWcvdC1saW51eC1hbmRyb2lkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjZmOWIwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29u ZmlnL3QtbGludXgtYW5kcm9pZApAQCAtMCwwICsxLDIzIEBACisjIENvcHly aWdodCAoQykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg MjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMworIyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0NDLgorIworIyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRl ciB2ZXJzaW9uLgorIworIyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorIyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ TkczLiAgSWYgbm90IHNlZQorIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKK2xpbnV4LWFuZHJvaWQubzogJChzcmNkaXIpL2NvbmZpZy9s aW51eC1hbmRyb2lkLmMgJChDT05GSUdfSCkgJChTWVNURU1fSCkgXAorICBj b3JldHlwZXMuaCAkKFRNX0gpICQoVE1fUF9IKQorCSQoQ09NUElMRVIpIC1j ICQoQUxMX0NPTVBJTEVSRkxBR1MpICQoQUxMX0NQUEZMQUdTKSAkKElOQ0xV REVTKSBcCisJCSQoc3JjZGlyKS9jb25maWcvbGludXgtYW5kcm9pZC5jCmRp ZmYgLS1naXQgYS9nY2MvZG9jL3RtLnRleGkgYi9nY2MvZG9jL3RtLnRleGkK aW5kZXggOWQ2ZjZiYy4uMThlNDY0YyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy90 bS50ZXhpCisrKyBiL2djYy9kb2MvdG0udGV4aQpAQCAtMTEzNDYsMyArMTEz NDYsOSBAQCBtZW1vcnkgbW9kZWwgYml0cyBhcmUgYWxsb3dlZC4KIEBkZWZ0 eXBldnIge1RhcmdldCBIb29rfSB7dW5zaWduZWQgY2hhcn0gVEFSR0VUX0FU T01JQ19URVNUX0FORF9TRVRfVFJVRVZBTAogVGhpcyB2YWx1ZSBzaG91bGQg YmUgc2V0IGlmIHRoZSByZXN1bHQgd3JpdHRlbiBieSBAY29kZXthdG9taWNf dGVzdF9hbmRfc2V0fSBpcyBub3QgZXhhY3RseSAxLCBpLmUuIHRoZSBAY29k ZXtib29sfSBAY29kZXt0cnVlfS4KIEBlbmQgZGVmdHlwZXZyCisKK0BkZWZ0 eXBlZm4ge1RhcmdldCBIb29rfSBib29sIFRBUkdFVF9IQVNfSUZVTkNfUCAo dm9pZCkKK0l0IHJldHVybnMgdHJ1ZSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRz IEdOVSBpbmRpcmVjdCBmdW5jdGlvbnMuCitUaGUgc3VwcG9ydCBpbmNsdWRl cyB0aGUgYXNzZW1ibGVyLCBsaW5rZXIgYW5kIGR5bmFtaWMgbGlua2VyLgor VGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBob29rIGlzIGJhc2VkIG9uIHRh cmdldCdzIGxpYmMuCitAZW5kIGRlZnR5cGVmbgpkaWZmIC0tZ2l0IGEvZ2Nj L2RvYy90bS50ZXhpLmluIGIvZ2NjL2RvYy90bS50ZXhpLmluCmluZGV4IDM2 Njg4ODIuLmUxZDZjZmYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvdG0udGV4aS5p bgorKysgYi9nY2MvZG9jL3RtLnRleGkuaW4KQEAgLTExMTgyLDMgKzExMTgy LDUgQEAgbWVtb3J5IG1vZGVsIGJpdHMgYXJlIGFsbG93ZWQuCiBAZW5kIGRl ZnR5cGVmbgogCiBAaG9vayBUQVJHRVRfQVRPTUlDX1RFU1RfQU5EX1NFVF9U UlVFVkFMCisKK0Bob29rIFRBUkdFVF9IQVNfSUZVTkNfUApkaWZmIC0tZ2l0 IGEvZ2NjL3RhcmdldC5kZWYgYi9nY2MvdGFyZ2V0LmRlZgppbmRleCA4NjI3 OTIzLi5jMjU3ZDRmIDEwMDY0NAotLS0gYS9nY2MvdGFyZ2V0LmRlZgorKysg Yi9nY2MvdGFyZ2V0LmRlZgpAQCAtMTUxOCw2ICsxNTE4LDE1IEBAIERFRkhP T0sKICBib29sLCAoY29uc3RfcnR4IHgpLAogIGRlZmF1bHRfdXNlX2FuY2hv cnNfZm9yX3N5bWJvbF9wKQogCisvKiBUcnVlIGlmIHRhcmdldCBzdXBwb3J0 cyBpbmRpcmVjdCBmdW5jdGlvbnMuICAqLworREVGSE9PSworKGhhc19pZnVu Y19wLAorICJJdCByZXR1cm5zIHRydWUgaWYgdGhlIHRhcmdldCBzdXBwb3J0 cyBHTlUgaW5kaXJlY3QgZnVuY3Rpb25zLlxuXAorVGhlIHN1cHBvcnQgaW5j bHVkZXMgdGhlIGFzc2VtYmxlciwgbGlua2VyIGFuZCBkeW5hbWljIGxpbmtl ci5cblwKK1RoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgaG9vayBpcyBiYXNl ZCBvbiB0YXJnZXQncyBsaWJjLiIsCisgYm9vbCwgKHZvaWQpLAorIGRlZmF1 bHRfaGF2ZV9pZnVuY19wKQorCiAvKiBUcnVlIGlmIGl0IGlzIE9LIHRvIGRv IHNpYmxpbmcgY2FsbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQK ICAgIGNhbGwgZXhwcmVzc2lvbiBFWFAuICBERUNMIHdpbGwgYmUgdGhlIGNh bGxlZCBmdW5jdGlvbiwgb3IgTlVMTCBpZgogICAgdGhpcyBpcyBhbiBpbmRp cmVjdCBjYWxsLiAgKi8KZGlmZiAtLWdpdCBhL2djYy90YXJnaG9va3MuYyBi L2djYy90YXJnaG9va3MuYwppbmRleCA2YzEyYTRhLi5lNWNlODFmIDEwMDY0 NAotLS0gYS9nY2MvdGFyZ2hvb2tzLmMKKysrIGIvZ2NjL3Rhcmdob29rcy5j CkBAIC00NTAsNiArNDUwLDE0IEBAIGRlZmF1bHRfZml4ZWRfcG9pbnRfc3Vw cG9ydGVkX3AgKHZvaWQpCiAgIHJldHVybiBFTkFCTEVfRklYRURfUE9JTlQ7 CiB9CiAKKy8qIFRydWUgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBHTlUgaW5k aXJlY3QgZnVuY3Rpb25zLiAgKi8KKworYm9vbAorZGVmYXVsdF9oYXZlX2lm dW5jX3AgKHZvaWQpCit7CisgIHJldHVybiBIQVZFX0dOVV9JTkRJUkVDVF9G VU5DVElPTjsKK30KKwogLyogTlVMTCBpZiBJTlNOIGluc24gaXMgdmFsaWQg d2l0aGluIGEgbG93LW92ZXJoZWFkIGxvb3AsIG90aGVyd2lzZSByZXR1cm5z CiAgICBhbiBlcnJvciBtZXNzYWdlLgogCmRpZmYgLS1naXQgYS9nY2MvdGFy Z2hvb2tzLmggYi9nY2MvdGFyZ2hvb2tzLmgKaW5kZXggZDIzYjM1Mi4uNGQx MTc2OCAxMDA2NDQKLS0tIGEvZ2NjL3Rhcmdob29rcy5oCisrKyBiL2djYy90 YXJnaG9va3MuaApAQCAtNzIsNiArNzIsOCBAQCBleHRlcm4gYm9vbCB0YXJn aG9va19mbG9hdF93b3Jkc19iaWdfZW5kaWFuICh2b2lkKTsKIGV4dGVybiBi b29sIGRlZmF1bHRfZGVjaW1hbF9mbG9hdF9zdXBwb3J0ZWRfcCAodm9pZCk7 CiBleHRlcm4gYm9vbCBkZWZhdWx0X2ZpeGVkX3BvaW50X3N1cHBvcnRlZF9w ICh2b2lkKTsKIAorZXh0ZXJuIGJvb2wgZGVmYXVsdF9oYXZlX2lmdW5jX3Ag KHZvaWQpOworCiBleHRlcm4gY29uc3QgY2hhciAqIGRlZmF1bHRfaW52YWxp ZF93aXRoaW5fZG9sb29wIChjb25zdF9ydHgpOwogCiBleHRlcm4gdHJlZSBk ZWZhdWx0X2J1aWx0aW5fdmVjdG9yaXplZF9mdW5jdGlvbiAodHJlZSwgdHJl ZSwgdHJlZSk7CmRpZmYgLS1naXQgYS9nY2MvdmFyYXNtLmMgYi9nY2MvdmFy YXNtLmMKaW5kZXggMGIxODk0ZC4uNGYzYThkYiAxMDA2NDQKLS0tIGEvZ2Nj L3ZhcmFzbS5jCisrKyBiL2djYy92YXJhc20uYwpAQCAtNTQ4OSwxNCArNTQ4 OSwxNSBAQCBkb19hc3NlbWJsZV9hbGlhcyAodHJlZSBkZWNsLCB0cmVlIHRh cmdldCkKICAgICB9CiAgIGlmIChsb29rdXBfYXR0cmlidXRlICgiaWZ1bmMi LCBERUNMX0FUVFJJQlVURVMgKGRlY2wpKSkKICAgICB7Ci0jaWYgZGVmaW5l ZCAoQVNNX09VVFBVVF9UWVBFX0RJUkVDVElWRSkgJiYgSEFWRV9HTlVfSU5E SVJFQ1RfRlVOQ1RJT04KLSAgICAgIEFTTV9PVVRQVVRfVFlQRV9ESVJFQ1RJ VkUKLQkoYXNtX291dF9maWxlLCBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xf QVNTRU1CTEVSX05BTUUgKGRlY2wpKSwKLQkgSUZVTkNfQVNNX1RZUEUpOwot I2Vsc2UKLSAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAo ZGVjbCksCi0JCSJpZnVuYyBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29u ZmlndXJhdGlvbiIpOworI2lmIGRlZmluZWQgKEFTTV9PVVRQVVRfVFlQRV9E SVJFQ1RJVkUpCisgICAgICBpZiAodGFyZ2V0bS5oYXNfaWZ1bmNfcCAoKSkK KwlBU01fT1VUUFVUX1RZUEVfRElSRUNUSVZFCisJICAoYXNtX291dF9maWxl LCBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGRl Y2wpKSwKKwkgICBJRlVOQ19BU01fVFlQRSk7CisgICAgICBlbHNlCiAjZW5k aWYKKwllcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpLAor CQkgICJpZnVuYyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0Iik7 CiAgICAgfQogCiAjIGlmZGVmIEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMK --f46d042f9410cca60204d341ab75--