From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10660 invoked by alias); 17 Sep 2018 19:22:17 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 9753 invoked by uid 89); 17 Sep 2018 19:22:16 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,MIME_BOUND_DIGITS_15,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=bold, FILL, AB, sake X-HELO: mail-yb1-f194.google.com Received: from mail-yb1-f194.google.com (HELO mail-yb1-f194.google.com) (209.85.219.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 17 Sep 2018 19:22:13 +0000 Received: by mail-yb1-f194.google.com with SMTP id s8-v6so4081551ybo.11; Mon, 17 Sep 2018 12:22:13 -0700 (PDT) MIME-Version: 1.0 References: <4CD6D94A.408@net-b.de> <4CD7FAA5.3050108@net-b.de> In-Reply-To: From: Janus Weil Date: Mon, 17 Sep 2018 19:22:00 -0000 Message-ID: Subject: Re: [Patch, Fortran, OOP] PR 46313: OOP-ABI issue, ALLOCATE issue, CLASS renaming issue To: Bernhard Reutner-Fischer Cc: Tobias Burnus , gfortran , gcc-patches Content-Type: multipart/mixed; boundary="0000000000001306560576161702" X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00113.txt.bz2 --0000000000001306560576161702 Content-Type: text/plain; charset="UTF-8" Content-length: 2884 Am Mo., 17. Sep. 2018 um 10:59 Uhr schrieb Bernhard Reutner-Fischer : > > On Tue, 9 Nov 2010 at 11:41, Janus Weil wrote: > > > > >> Ok, so it seems to me that using two leading underscores is really the > > >> best option, since it's safe against collisions with Fortran and C > > >> user code, and also safe to use with -fdollar-ok. > > >> > > >> The attached patch adds double underscores for the vtabs, vtypes, > > >> class containers and temporaries. > > > > > > OK. Thanks for the patch! > > > > Committed as r166480. > > > > Thanks for all the helpful comments, everyone! > > Index: gcc/fortran/module.c > =================================================================== > --- gcc/fortran/module.c (revision 166419) > +++ gcc/fortran/module.c (working copy) > @@ -4372,8 +4372,8 @@ read_module (void) > p = name; > > /* Exception: Always import vtabs & vtypes. */ > - if (p == NULL && (strncmp (name, "vtab$", 5) == 0 > - || strncmp (name, "vtype$", 6) == 0)) > + if (p == NULL && (strncmp (name, "__vtab_", 5) == 0 > + || strncmp (name, "__vtype_", 6) == 0)) > p = name; > > /* Skip symtree nodes not in an ONLY clause, unless there > > ---8<--- > > Sorry for the late follow-up 'Late' is a pretty bold understatement for 8 years ;D But in any case, 'late' is certainly better than 'never' ... > but current trunk still has the code > quoted above where we forgot to add 2 to the length parameter of both > strncmp calls. True! Thanks for noticing. I'll take care of fixing it. > I think it would be nice to teach the C and C++ frontends to warn > about this even though it might trigger in quite some code in the > wild. I don't really think this is a good idea. There are actually valid use cases of strncmp, where the 'num' argument does not correspond to the length of any of the two strings (in particular if they're not const). Instead, for the sake of gfortran, how about a macro like this? #define gfc_str_startswith(str, pref) \ (strncmp ((str), (pref), strlen (pref)) == 0) (In fact I just noticed that something like this already exists in trans-intrinsic.c, so I would just move it into gfortran.h and rename it.) > Looking at gcc/fortran alone there are > gcc/fortran/interface.c: if (strncmp (mode, "unformatted", 9) == 0) // 11 ! I think this one could actually be a 'strcmp'? > gcc/fortran/module.c: && (strncmp (name, "__vtab_", 5) == 0 // 7 ! > gcc/fortran/module.c: || strncmp (name, "__vtype_", 6) == 0)) // 8! > gcc/fortran/module.c: || (strncmp (name, "__vtab_", 5) != 0 // 7! > gcc/fortran/module.c: && strncmp (name, "__vtype_", 6) > != 0)) // 8! Here the new macro could be applied (and in a few other cases as well), see attached patch. I'm regtesting the patch now. Ok for trunk if it passes? Cheers, Janus --0000000000001306560576161702 Content-Type: text/x-patch; charset="US-ASCII"; name="strncmp_macro.diff" Content-Disposition: attachment; filename="strncmp_macro.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jm6ocgjj0 Content-length: 14413 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2RlY2wuYyBiL2djYy9mb3J0cmFu L2RlY2wuYwppbmRleCAzZDE5YWQ0NzllNS4uOTFhMWYzNGQ3ZjEgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2RlY2wuYworKysgYi9nY2MvZm9ydHJhbi9k ZWNsLmMKQEAgLTI1MjksNyArMjUyOSw3IEBAIHZhcmlhYmxlX2RlY2wgKGlu dCBlbGVtKQogICAgIH0KIAogICAvKiAlRklMTCBjb21wb25lbnRzIG1heSBu b3QgaGF2ZSBpbml0aWFsaXplcnMuICAqLwotICBpZiAoc3RybmNtcCAobmFt ZSwgIiVGSUxMIiwgNSkgPT0gMCAmJiBnZmNfbWF0Y2hfZW9zICgpICE9IE1B VENIX1lFUykKKyAgaWYgKGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIiVG SUxMIikgJiYgZ2ZjX21hdGNoX2VvcyAoKSAhPSBNQVRDSF9ZRVMpCiAgICAg ewogICAgICAgZ2ZjX2Vycm9yICgiJXFzIGVudGl0eSBjYW5ub3QgaGF2ZSBh biBpbml0aWFsaXplciBhdCAlQyIsICIlRklMTCIpOwogICAgICAgbSA9IE1B VENIX0VSUk9SOwpAQCAtNzgxMSw3ICs3ODExLDcgQEAgZ2ZjX21hdGNoX2Vu ZCAoZ2ZjX3N0YXRlbWVudCAqc3QpCiAgICAgewogICAgIGNhc2UgQ09NUF9B U1NPQ0lBVEU6CiAgICAgY2FzZSBDT01QX0JMT0NLOgotICAgICAgaWYgKCFz dHJuY21wIChibG9ja19uYW1lLCAiYmxvY2tAIiwgc3RybGVuKCJibG9ja0Ai KSkpCisgICAgICBpZiAoZ2ZjX3N0cl9zdGFydHN3aXRoIChibG9ja19uYW1l LCAiYmxvY2tAIikpCiAJYmxvY2tfbmFtZSA9IE5VTEw7CiAgICAgICBicmVh azsKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2dj Yy9mb3J0cmFuL2dmb3J0cmFuLmgKaW5kZXggMDRiMDAyNGE5OTIuLjhmMzdh NTFkNzFjIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisr KyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKQEAgLTMzMDUsNiArMzMwNSw5 IEBAIGJvb2wgZ2ZjX2lzX2NvbXBpbGVfdGltZV9zaGFwZSAoZ2ZjX2FycmF5 X3NwZWMgKik7CiBib29sIGdmY19yZWZfZGltZW5fc2l6ZSAoZ2ZjX2FycmF5 X3JlZiAqLCBpbnQgZGltZW4sIG1wel90ICosIG1wel90ICopOwogCiAKKyNk ZWZpbmUgZ2ZjX3N0cl9zdGFydHN3aXRoKHN0ciwgcHJlZikgXAorCShzdHJu Y21wICgoc3RyKSwgKHByZWYpLCBzdHJsZW4gKHByZWYpKSA9PSAwKQorCiAv KiBpbnRlcmZhY2UuYyAtLSBGSVhNRTogc29tZSBvZiB0aGVzZSBzaG91bGQg YmUgaW4gc3ltYm9sLmMgKi8KIHZvaWQgZ2ZjX2ZyZWVfaW50ZXJmYWNlIChn ZmNfaW50ZXJmYWNlICopOwogYm9vbCBnZmNfY29tcGFyZV9kZXJpdmVkX3R5 cGVzIChnZmNfc3ltYm9sICosIGdmY19zeW1ib2wgKik7CmRpZmYgLS1naXQg YS9nY2MvZm9ydHJhbi9pbnRlcmZhY2UuYyBiL2djYy9mb3J0cmFuL2ludGVy ZmFjZS5jCmluZGV4IGY4NWM3NmJhZDBmLi5mZjZiMmJiN2VjZSAxMDA2NDQK LS0tIGEvZ2NjL2ZvcnRyYW4vaW50ZXJmYWNlLmMKKysrIGIvZ2NjL2ZvcnRy YW4vaW50ZXJmYWNlLmMKQEAgLTEyMiw5ICsxMjIsOSBAQCBmb2xkX3VuYXJ5 X2ludHJpbnNpYyAoZ2ZjX2ludHJpbnNpY19vcCBvcCkKIHN0YXRpYyBnZmNf aW50cmluc2ljX29wCiBkdGlvX29wIChjaGFyKiBtb2RlKQogewotICBpZiAo c3RybmNtcCAobW9kZSwgImZvcm1hdHRlZCIsIDkpID09IDApCisgIGlmIChz dHJjbXAgKG1vZGUsICJmb3JtYXR0ZWQiKSA9PSAwKQogICAgIHJldHVybiBJ TlRSSU5TSUNfRk9STUFUVEVEOwotICBpZiAoc3RybmNtcCAobW9kZSwgInVu Zm9ybWF0dGVkIiwgOSkgPT0gMCkKKyAgaWYgKHN0cmNtcCAobW9kZSwgInVu Zm9ybWF0dGVkIikgPT0gMCkKICAgICByZXR1cm4gSU5UUklOU0lDX1VORk9S TUFUVEVEOwogICByZXR1cm4gSU5UUklOU0lDX05PTkU7CiB9CmRpZmYgLS1n aXQgYS9nY2MvZm9ydHJhbi9pcmVzb2x2ZS5jIGIvZ2NjL2ZvcnRyYW4vaXJl c29sdmUuYwppbmRleCAyZWI4ZjdjOTExMy4uZjJkNmJiYWVjNWMgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2lyZXNvbHZlLmMKKysrIGIvZ2NjL2ZvcnRy YW4vaXJlc29sdmUuYwpAQCAtNjk4LDcgKzY5OCw3IEBAIGlzX3RyaWdfcmVz b2x2ZWQgKGdmY19leHByICpmKQogICAvKiBXZSBrbm93IHdlJ3ZlIGFscmVh ZHkgcmVzb2x2ZWQgdGhlIGZ1bmN0aW9uIGlmIHdlIHNlZSB0aGUgbGliIGNh bGwKICAgICAgc3RhcnRpbmcgd2l0aCAnX18nLiAgKi8KICAgcmV0dXJuIChm LT52YWx1ZS5mdW5jdGlvbi5uYW1lICE9IE5VTEwKLQkgICYmIHN0cm5jbXAg KCJfXyIsIGYtPnZhbHVlLmZ1bmN0aW9uLm5hbWUsIDIpID09IDApOworCSAg JiYgZ2ZjX3N0cl9zdGFydHN3aXRoIChmLT52YWx1ZS5mdW5jdGlvbi5uYW1l LCAiX18iKSk7CiB9CiAKIC8qIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0 aGUgZnVuY3Rpb24gZXhwcmVzc2lvbiBmLiAgVGhlIG9yaWdpbmFsIGV4cHJl c3Npb24KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL21vZHVsZS5jIGIvZ2Nj L2ZvcnRyYW4vbW9kdWxlLmMKaW5kZXggOTkzZWE5ZjE2YjkuLjdiOGU4NjNj YTBhIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9tb2R1bGUuYworKysgYi9n Y2MvZm9ydHJhbi9tb2R1bGUuYwpAQCAtNDc5MSw3ICs0NzkxLDcgQEAgbG9h ZF9vbXBfdWRycyAodm9pZCkKICAgICAgIG1pb19wb29sX3N0cmluZyAoJm5h bWUpOwogICAgICAgZ2ZjX2NsZWFyX3RzICgmdHMpOwogICAgICAgbWlvX3R5 cGVzcGVjICgmdHMpOwotICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICJvcGVy YXRvciAiLCBzaXplb2YgKCJvcGVyYXRvciAiKSAtIDEpID09IDApCisgICAg ICBpZiAoZ2ZjX3N0cl9zdGFydHN3aXRoIChuYW1lLCAib3BlcmF0b3IgIikp CiAJewogCSAgY29uc3QgY2hhciAqcCA9IG5hbWUgKyBzaXplb2YgKCJvcGVy YXRvciAiKSAtIDE7CiAJICBpZiAoc3RyY21wIChwLCAiKyIpID09IDApCkBA IC01MjMzLDggKzUyMzMsOCBAQCByZWFkX21vZHVsZSAodm9pZCkKIAogCSAg LyogRXhjZXB0aW9uOiBBbHdheXMgaW1wb3J0IHZ0YWJzICYgdnR5cGVzLiAg Ki8KIAkgIGlmIChwID09IE5VTEwgJiYgbmFtZVswXSA9PSAnXycKLQkgICAg ICAmJiAoc3RybmNtcCAobmFtZSwgIl9fdnRhYl8iLCA1KSA9PSAwCi0JCSAg fHwgc3RybmNtcCAobmFtZSwgIl9fdnR5cGVfIiwgNikgPT0gMCkpCisJICAg ICAgJiYgKGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9fdnRhYl8iKQor CQkgIHx8IGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9fdnR5cGVfIikp KQogCSAgICBwID0gbmFtZTsKIAogCSAgLyogU2tpcCBzeW10cmVlIG5vZGVz IG5vdCBpbiBhbiBPTkxZIGNsYXVzZSwgdW5sZXNzIHRoZXJlCkBAIC01MzE5 LDggKzUzMTksOCBAQCByZWFkX21vZHVsZSAodm9pZCkKIAkJc3ltLT5hdHRy LnVzZV9yZW5hbWUgPSAxOwogCiAJICAgICAgaWYgKG5hbWVbMF0gIT0gJ18n Ci0JCSAgfHwgKHN0cm5jbXAgKG5hbWUsICJfX3Z0YWJfIiwgNSkgIT0gMAot CQkgICAgICAmJiBzdHJuY21wIChuYW1lLCAiX192dHlwZV8iLCA2KSAhPSAw KSkKKwkJICB8fCAoIWdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9fdnRh Yl8iKQorCQkgICAgICAmJiAhZ2ZjX3N0cl9zdGFydHN3aXRoIChuYW1lLCAi X192dHlwZV8iKSkpCiAJCXN5bS0+YXR0ci51c2Vfb25seSA9IG9ubHlfZmxh ZzsKIAogCSAgICAgIC8qIFN0b3JlIHRoZSBzeW10cmVlIHBvaW50aW5nIHRv IHRoaXMgc3ltYm9sLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29w dGlvbnMuYyBiL2djYy9mb3J0cmFuL29wdGlvbnMuYwppbmRleCBlOGRiNTRk NGQzNy4uNzNmNTM4OTM2MWQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29w dGlvbnMuYworKysgYi9nY2MvZm9ydHJhbi9vcHRpb25zLmMKQEAgLTU2NSw3 ICs1NjUsNyBAQCBnZmNfaGFuZGxlX3J1bnRpbWVfY2hlY2tfb3B0aW9uIChj b25zdCBjaGFyICphcmcpCiAJICAgICAgcmVzdWx0ID0gMTsKIAkgICAgICBi cmVhazsKIAkgICAgfQotCSAgZWxzZSBpZiAob3B0bmFtZVtuXSAmJiBwb3Mg PiAzICYmIHN0cm5jbXAgKCJuby0iLCBhcmcsIDMpID09IDAKKwkgIGVsc2Ug aWYgKG9wdG5hbWVbbl0gJiYgcG9zID4gMyAmJiBnZmNfc3RyX3N0YXJ0c3dp dGggKGFyZywgIm5vLSIpCiAJCSAgICYmIHN0cm5jbXAgKG9wdG5hbWVbbl0s IGFyZyszLCBwb3MtMykgPT0gMCkKIAkgICAgewogCSAgICAgIGdmY19vcHRp b24ucnRjaGVjayAmPSB+b3B0bWFza1tuXTsKZGlmZiAtLWdpdCBhL2djYy9m b3J0cmFuL3ByaW1hcnkuYyBiL2djYy9mb3J0cmFuL3ByaW1hcnkuYwppbmRl eCAwOTRmMjEwMWJiYy4uNmY0NWFmYTg2ZWEgMTAwNjQ0Ci0tLSBhL2djYy9m b3J0cmFuL3ByaW1hcnkuYworKysgYi9nY2MvZm9ydHJhbi9wcmltYXJ5LmMK QEAgLTE3MTMsMjEgKzE3MTMsMjEgQEAgbWF0Y2hfYXJnX2xpc3RfZnVuY3Rp b24gKGdmY19hY3R1YWxfYXJnbGlzdCAqcmVzdWx0KQogICAgICAgc3dpdGNo IChuYW1lWzBdKQogCXsKIAljYXNlICdsJzoKLQkgIGlmIChzdHJuY21wIChu YW1lLCAibG9jIiwgMykgPT0gMCkKKwkgIGlmIChnZmNfc3RyX3N0YXJ0c3dp dGggKG5hbWUsICJsb2MiKSkKIAkgICAgewogCSAgICAgIHJlc3VsdC0+bmFt ZSA9ICIlTE9DIjsKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgLyogRkFM TFRIUlUgKi8KIAljYXNlICdyJzoKLQkgIGlmIChzdHJuY21wIChuYW1lLCAi cmVmIiwgMykgPT0gMCkKKwkgIGlmIChnZmNfc3RyX3N0YXJ0c3dpdGggKG5h bWUsICJyZWYiKSkKIAkgICAgewogCSAgICAgIHJlc3VsdC0+bmFtZSA9ICIl UkVGIjsKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgLyogRkFMTFRIUlUg Ki8KIAljYXNlICd2JzoKLQkgIGlmIChzdHJuY21wIChuYW1lLCAidmFsIiwg MykgPT0gMCkKKwkgIGlmIChnZmNfc3RyX3N0YXJ0c3dpdGggKG5hbWUsICJ2 YWwiKSkKIAkgICAgewogCSAgICAgIHJlc3VsdC0+bmFtZSA9ICIlVkFMIjsK IAkgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Jlc29s dmUuYyBiL2djYy9mb3J0cmFuL3Jlc29sdmUuYwppbmRleCBlNjE4MGI4ODll Yy4uYTJiZWI3ZmM5MGEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3Jlc29s dmUuYworKysgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmMKQEAgLTIwNjEsNyAr MjA2MSw3IEBAIHJlc29sdmVfYWN0dWFsX2FyZ2xpc3QgKGdmY19hY3R1YWxf YXJnbGlzdCAqYXJnLCBwcm9jZWR1cmVfdHlwZSBwdHlwZSwKIAkgbm90aGlu ZyB0byBkbyBmb3IgJVJFRi4gICovCiAgICAgICBpZiAoYXJnLT5uYW1lICYm IGFyZy0+bmFtZVswXSA9PSAnJScpCiAJewotCSAgaWYgKHN0cm5jbXAgKCIl VkFMIiwgYXJnLT5uYW1lLCA0KSA9PSAwKQorCSAgaWYgKHN0cmNtcCAoIiVW QUwiLCBhcmctPm5hbWUpID09IDApCiAJICAgIHsKIAkgICAgICBpZiAoZS0+ dHMudHlwZSA9PSBCVF9DSEFSQUNURVIgfHwgZS0+dHMudHlwZSA9PSBCVF9E RVJJVkVEKQogCQl7CkBAIC0yMDkzLDcgKzIwOTMsNyBAQCByZXNvbHZlX2Fj dHVhbF9hcmdsaXN0IChnZmNfYWN0dWFsX2FyZ2xpc3QgKmFyZywgcHJvY2Vk dXJlX3R5cGUgcHR5cGUsCiAJICAgIH0KIAogCSAgLyogU3RhdGVtZW50IGZ1 bmN0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBleGNsdWRlZCBhYm92ZS4gICov Ci0JICBlbHNlIGlmIChzdHJuY21wICgiJUxPQyIsIGFyZy0+bmFtZSwgNCkg PT0gMAorCSAgZWxzZSBpZiAoc3RyY21wICgiJUxPQyIsIGFyZy0+bmFtZSkg PT0gMAogCQkgICAmJiBlLT50cy50eXBlID09IEJUX1BST0NFRFVSRSkKIAkg ICAgewogCSAgICAgIGlmIChlLT5zeW10cmVlLT5uLnN5bS0+YXR0ci5wcm9j ID09IFBST0NfSU5URVJOQUwpCkBAIC0zMjY1LDcgKzMyNjUsNyBAQCByZXNv bHZlX2Z1bmN0aW9uIChnZmNfZXhwciAqZXhwcikKIAkgICAgICBpZiAoYXJn LT5uZXh0LT5leHByLT5leHByX3R5cGUgIT0gRVhQUl9DT05TVEFOVCkKIAkJ YnJlYWs7CiAKLQkgICAgICBpZiAoYXJnLT5uZXh0LT5uYW1lICYmIHN0cm5j bXAgKGFyZy0+bmV4dC0+bmFtZSwgImtpbmQiLCA0KSA9PSAwKQorCSAgICAg IGlmIChhcmctPm5leHQtPm5hbWUgJiYgc3RyY21wIChhcmctPm5leHQtPm5h bWUsICJraW5kIikgPT0gMCkKIAkJYnJlYWs7CiAKIAkgICAgICBpZiAoKGlu dCltcHpfZ2V0X3NpIChhcmctPm5leHQtPmV4cHItPnZhbHVlLmludGVnZXIp CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMgYi9nY2Mv Zm9ydHJhbi90cmFucy1kZWNsLmMKaW5kZXggMDYwNjZlYjkzZGQuLjE1OWMz ZGJiYzZiIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMK KysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCkBAIC0xODI4LDcgKzE4 MjgsNyBAQCBnZmNfZ2V0X3N5bWJvbF9kZWNsIChnZmNfc3ltYm9sICogc3lt KQogICAgIEdGQ19ERUNMX0FTU09DSUFURV9WQVJfUCAoZGVjbCkgPSAxOwog CiAgIGlmIChzeW0tPmF0dHIudnRhYgotICAgICAgfHwgKHN5bS0+bmFtZVsw XSA9PSAnXycgJiYgc3RybmNtcCAoIl9fZGVmX2luaXQiLCBzeW0tPm5hbWUs IDEwKSA9PSAwKSkKKyAgICAgIHx8IChzeW0tPm5hbWVbMF0gPT0gJ18nICYm IGdmY19zdHJfc3RhcnRzd2l0aCAoc3ltLT5uYW1lLCAiX19kZWZfaW5pdCIp KSkKICAgICBUUkVFX1JFQURPTkxZIChkZWNsKSA9IDE7CiAKICAgcmV0dXJu IGRlY2w7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1leHByLmMg Yi9nY2MvZm9ydHJhbi90cmFucy1leHByLmMKaW5kZXggMzUwNTJhOGE4ZWEu LjU0YTI4NzdmOGM1IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1l eHByLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCkBAIC00NzA1 LDE0ICs0NzA1LDE0IEBAIGNvbnZfYXJnbGlzdF9mdW5jdGlvbiAoZ2ZjX3Nl ICpzZSwgZ2ZjX2V4cHIgKmV4cHIsIGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg IGluZGlyZWN0bHkgZm9yICVMT0MsIGVsc2UgYnkgcmVmZXJlbmNlLiAgVGh1 cyAlUkVGCiAgICAgIGlzIGEgImRvLW5vdGhpbmciIGFuZCAlTE9DIGlzIHRo ZSBzYW1lIGFzIGFuIEY5NQogICAgICBwb2ludGVyLiAgKi8KLSAgaWYgKHN0 cm5jbXAgKG5hbWUsICIlVkFMIiwgNCkgPT0gMCkKKyAgaWYgKHN0cmNtcCAo bmFtZSwgIiVWQUwiKSA9PSAwKQogICAgIGdmY19jb252X2V4cHIgKHNlLCBl eHByKTsKLSAgZWxzZSBpZiAoc3RybmNtcCAobmFtZSwgIiVMT0MiLCA0KSA9 PSAwKQorICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIlTE9DIikgPT0gMCkK ICAgICB7CiAgICAgICBnZmNfY29udl9leHByX3JlZmVyZW5jZSAoc2UsIGV4 cHIpOwogICAgICAgc2UtPmV4cHIgPSBnZmNfYnVpbGRfYWRkcl9leHByIChO VUxMLCBzZS0+ZXhwcik7CiAgICAgfQotICBlbHNlIGlmIChzdHJuY21wIChu YW1lLCAiJVJFRiIsIDQpID09IDApCisgIGVsc2UgaWYgKHN0cmNtcCAobmFt ZSwgIiVSRUYiKSA9PSAwKQogICAgIGdmY19jb252X2V4cHJfcmVmZXJlbmNl IChzZSwgZXhwcik7CiAgIGVsc2UKICAgICBnZmNfZXJyb3IgKCJVbmtub3du IGFyZ3VtZW50IGxpc3QgZnVuY3Rpb24gYXQgJUwiLCAmZXhwci0+d2hlcmUp OwpAQCAtNTg2OSw3ICs1ODY5LDcgQEAgZ2ZjX2NvbnZfcHJvY2VkdXJlX2Nh bGwgKGdmY19zZSAqIHNlLCBnZmNfc3ltYm9sICogc3ltLAogICAgICAgLyog V2hlbiBjYWxsaW5nIF9fY29weSBmb3IgY2hhcmFjdGVyIGV4cHJlc3Npb25z IHRvIHVubGltaXRlZAogCSBwb2x5bW9ycGhpYyBlbnRpdGllcywgdGhlIGRz dCBhcmd1bWVudCBuZWVkcyBhIHN0cmluZyBsZW5ndGguICAqLwogICAgICAg aWYgKHN5bS0+bmFtZVswXSA9PSAnXycgJiYgZSAmJiBlLT50cy50eXBlID09 IEJUX0NIQVJBQ1RFUgotCSAgJiYgc3RybmNtcCAoc3ltLT5uYW1lLCAiX192 dGFiX0NIQVJBQ1RFUiIsIDE2KSA9PSAwCisJICAmJiBnZmNfc3RyX3N0YXJ0 c3dpdGggKHN5bS0+bmFtZSwgIl9fdnRhYl9DSEFSQUNURVIiKQogCSAgJiYg YXJnLT5uZXh0ICYmIGFyZy0+bmV4dC0+ZXhwcgogCSAgJiYgKGFyZy0+bmV4 dC0+ZXhwci0+dHMudHlwZSA9PSBCVF9ERVJJVkVECiAJICAgICAgfHwgYXJn LT5uZXh0LT5leHByLT50cy50eXBlID09IEJUX0NMQVNTKQpkaWZmIC0tZ2l0 IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMgYi9nY2MvZm9ydHJh bi90cmFucy1pbnRyaW5zaWMuYwppbmRleCBiMmNlYTkzNzQyYS4uZDkzZjg3 YjllMjkgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNp Yy5jCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jCkBAIC04 OTM3LDM3ICs4OTM3LDMzIEBAIGdmY19jb252X2llZWVfYXJpdGhtZXRpY19m dW5jdGlvbiAoZ2ZjX3NlICogc2UsIGdmY19leHByICogZXhwcikKIHsKICAg Y29uc3QgY2hhciAqbmFtZSA9IGV4cHItPnZhbHVlLmZ1bmN0aW9uLm5hbWU7 CiAKLSNkZWZpbmUgU1RBUlRTX1dJVEgoQSxCKSAoc3RybmNtcCgoQSksIChC KSwgc3RybGVuKEIpKSA9PSAwKQotCi0gIGlmIChTVEFSVFNfV0lUSCAobmFt ZSwgIl9nZm9ydHJhbl9pZWVlX2lzX25hbiIpKQorICBpZiAoZ2ZjX3N0cl9z dGFydHN3aXRoIChuYW1lLCAiX2dmb3J0cmFuX2llZWVfaXNfbmFuIikpCiAg ICAgY29udl9pbnRyaW5zaWNfaWVlZV9idWlsdGluIChzZSwgZXhwciwgQlVJ TFRfSU5fSVNOQU4sIDEpOwotICBlbHNlIGlmIChTVEFSVFNfV0lUSCAobmFt ZSwgIl9nZm9ydHJhbl9pZWVlX2lzX2Zpbml0ZSIpKQorICBlbHNlIGlmIChn ZmNfc3RyX3N0YXJ0c3dpdGggKG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9pc19m aW5pdGUiKSkKICAgICBjb252X2ludHJpbnNpY19pZWVlX2J1aWx0aW4gKHNl LCBleHByLCBCVUlMVF9JTl9JU0ZJTklURSwgMSk7Ci0gIGVsc2UgaWYgKFNU QVJUU19XSVRIIChuYW1lLCAiX2dmb3J0cmFuX2llZWVfdW5vcmRlcmVkIikp CisgIGVsc2UgaWYgKGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9nZm9y dHJhbl9pZWVlX3Vub3JkZXJlZCIpKQogICAgIGNvbnZfaW50cmluc2ljX2ll ZWVfYnVpbHRpbiAoc2UsIGV4cHIsIEJVSUxUX0lOX0lTVU5PUkRFUkVELCAy KTsKLSAgZWxzZSBpZiAoU1RBUlRTX1dJVEggKG5hbWUsICJfZ2ZvcnRyYW5f aWVlZV9pc19ub3JtYWwiKSkKKyAgZWxzZSBpZiAoZ2ZjX3N0cl9zdGFydHN3 aXRoIChuYW1lLCAiX2dmb3J0cmFuX2llZWVfaXNfbm9ybWFsIikpCiAgICAg Y29udl9pbnRyaW5zaWNfaWVlZV9pc19ub3JtYWwgKHNlLCBleHByKTsKLSAg ZWxzZSBpZiAoU1RBUlRTX1dJVEggKG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9p c19uZWdhdGl2ZSIpKQorICBlbHNlIGlmIChnZmNfc3RyX3N0YXJ0c3dpdGgg KG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9pc19uZWdhdGl2ZSIpKQogICAgIGNv bnZfaW50cmluc2ljX2llZWVfaXNfbmVnYXRpdmUgKHNlLCBleHByKTsKLSAg ZWxzZSBpZiAoU1RBUlRTX1dJVEggKG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9j b3B5X3NpZ24iKSkKKyAgZWxzZSBpZiAoZ2ZjX3N0cl9zdGFydHN3aXRoIChu YW1lLCAiX2dmb3J0cmFuX2llZWVfY29weV9zaWduIikpCiAgICAgY29udl9p bnRyaW5zaWNfaWVlZV9jb3B5X3NpZ24gKHNlLCBleHByKTsKLSAgZWxzZSBp ZiAoU1RBUlRTX1dJVEggKG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9zY2FsYiIp KQorICBlbHNlIGlmIChnZmNfc3RyX3N0YXJ0c3dpdGggKG5hbWUsICJfZ2Zv cnRyYW5faWVlZV9zY2FsYiIpKQogICAgIGNvbnZfaW50cmluc2ljX2llZWVf c2NhbGIgKHNlLCBleHByKTsKLSAgZWxzZSBpZiAoU1RBUlRTX1dJVEggKG5h bWUsICJfZ2ZvcnRyYW5faWVlZV9uZXh0X2FmdGVyIikpCisgIGVsc2UgaWYg KGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9nZm9ydHJhbl9pZWVlX25l eHRfYWZ0ZXIiKSkKICAgICBjb252X2ludHJpbnNpY19pZWVlX25leHRfYWZ0 ZXIgKHNlLCBleHByKTsKLSAgZWxzZSBpZiAoU1RBUlRTX1dJVEggKG5hbWUs ICJfZ2ZvcnRyYW5faWVlZV9yZW0iKSkKKyAgZWxzZSBpZiAoZ2ZjX3N0cl9z dGFydHN3aXRoIChuYW1lLCAiX2dmb3J0cmFuX2llZWVfcmVtIikpCiAgICAg Y29udl9pbnRyaW5zaWNfaWVlZV9yZW0gKHNlLCBleHByKTsKLSAgZWxzZSBp ZiAoU1RBUlRTX1dJVEggKG5hbWUsICJfZ2ZvcnRyYW5faWVlZV9sb2diIikp CisgIGVsc2UgaWYgKGdmY19zdHJfc3RhcnRzd2l0aCAobmFtZSwgIl9nZm9y dHJhbl9pZWVlX2xvZ2IiKSkKICAgICBjb252X2ludHJpbnNpY19pZWVlX2xv Z2JfcmludCAoc2UsIGV4cHIsIEJVSUxUX0lOX0xPR0IpOwotICBlbHNlIGlm IChTVEFSVFNfV0lUSCAobmFtZSwgIl9nZm9ydHJhbl9pZWVlX3JpbnQiKSkK KyAgZWxzZSBpZiAoZ2ZjX3N0cl9zdGFydHN3aXRoIChuYW1lLCAiX2dmb3J0 cmFuX2llZWVfcmludCIpKQogICAgIGNvbnZfaW50cmluc2ljX2llZWVfbG9n Yl9yaW50IChzZSwgZXhwciwgQlVJTFRfSU5fUklOVCk7CiAgIGVsc2UKICAg ICAvKiBJdCBpcyBub3QgYW1vbmcgdGhlIGZ1bmN0aW9ucyB3ZSB0cmFuc2xh dGUgZGlyZWN0bHkuICBXZSByZXR1cm4KICAgICAgICBmYWxzZSwgc28gYSBs aWJyYXJ5IGZ1bmN0aW9uIGNhbGwgaXMgZW1pdHRlZC4gICovCiAgICAgcmV0 dXJuIGZhbHNlOwogCi0jdW5kZWYgU1RBUlRTX1dJVEgKLQogICByZXR1cm4g dHJ1ZTsKIH0KIAo= --0000000000001306560576161702--