From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) by sourceware.org (Postfix) with ESMTPS id AB8023858D26 for ; Fri, 26 Jul 2024 18:34:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AB8023858D26 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=baylibre.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AB8023858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::22e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722018866; cv=none; b=ZI7J9X0HJAHRdFgFMLwcvEcjZZZjfEcnTtWc7Y7OkMOSRYnkg6UXG18fp1LRv0dobVZL2boPYoSQ8oWUVWsUoy6tNasy6Ez2D+AYRqOLEOU9vwEDtHJc4MEOeXx62gAOA4hWpHgbwekn4UqbQDOitILNZsBoBv4LvObVm2dbSTY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722018866; c=relaxed/simple; bh=d7x584P2YHMUObk+MKRxsfmA/Wh2XLRwV4wAXa8+FwE=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=Saiel6K383AsZGAJ0bCgWcQjWcWUPoGFi+ulweD9w/R2geT7uELGfccya+csVLq5wYd9OAZnVsokgxPcJQwXxR5R9mxxAMKCxx+DUaMz3L3ExLanKRlrWMMyvF5id1Qhn2SnaAmpctb2hLjd1HETufdapCku7f4vm2ztuSMv2o0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-2ef283c58f4so17632651fa.1 for ; Fri, 26 Jul 2024 11:34:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722018861; x=1722623661; darn=gcc.gnu.org; h=in-reply-to:content-language:references:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=BKkX2sZaXlNli60IP5Vw+4pZRJqgLFj2MeFvjeb1oAk=; b=Sbo8tMff/eNusUNexFZLOMj4JpemWYMhojB/jjUEMgB9DGqO8Xd6+sIFjrHUlAztHD Ridv0ufWa1KL2eyJUJgqjVjdca5TuMPub7YpHbe3r1KDroca643W5CF9Z6ZHXE9rhpai JOvvlNdfLEtBPSyvhHCd3ozhlhicicVNvMpWXNWHlQ/yyqfmxdTKtj1PuGjy51RLKVjI QnWkJKd4NM0pEtcpXrJfCDscgAhFsFj/ZRJIma+FM7Jer89lhsYHX6XVjkdb8Me/9ElO dAmefrEWoR2SFNrPq5hVNBei2XIPSic/J25bkcR3xHGo9aDSdTmDbJFVkRC/pqhxV6+Y hTlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722018861; x=1722623661; h=in-reply-to:content-language:references:to:from:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=BKkX2sZaXlNli60IP5Vw+4pZRJqgLFj2MeFvjeb1oAk=; b=FcXROKRoyhqgDHXLrzGAt1tysJymZetVmd9Wj+OIZ83EHgzojh4FMsipdKvxG0A6aS L9CzjasO1MwY527CoM74vRvEpzOZjjeh0dBMim7BkhCrb6ct6YnZzaYDaeKUgVbawrCk GqSpOX706nEPE8e3yAIo3rePkm5cg2Os9eRLJBWnIKDf161uSiqG8JqKNHqsI18K9XR2 jBy90uso+EsRZUk9i2Ik8BeNGHTzXQtv9CG3uMul74iisvYfttzYBjSq6nGmViCV/a9u RmdN+6IKmqey786lM4wpH9+mXmGlz0c4G5wwQnMXmSbeXth30jJV4VBZs0ELlweXq2NE 3/tQ== X-Gm-Message-State: AOJu0YzLCil4/Dig9Wbwih9FqhRZbT7wuIvrqMSmSyNoaHZ7YTZ9S69W JjF6+QDj0hN+uIrUufFDs67FkZTe/z3AbTra4jmaeCJ9AepHg4RjMSw8Jx7JSJ31w0hJW/EECfD awXA= X-Google-Smtp-Source: AGHT+IGm7ynr43yjWd9pJ7Ir58z97H3xGwRIvQg3t4z+F8oV2TqbarTNEZ471yNhVfUO6uT58C7nBw== X-Received: by 2002:a2e:7d02:0:b0:2ef:2247:987b with SMTP id 38308e7fff4ca-2f12ee5bc33mr3275821fa.32.1722018860800; Fri, 26 Jul 2024 11:34:20 -0700 (PDT) Received: from [192.168.8.100] (tmo-085-80.customers.d1-online.com. [80.187.85.80]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4280f484cdesm23492175e9.44.2024.07.26.11.34.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 26 Jul 2024 11:34:20 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------pplQO5VuogM8GJ0xiV3jhJdI" Message-ID: <2cf80995-6ba1-4aca-95af-904dc8d849bf@baylibre.com> Date: Fri, 26 Jul 2024 20:34:18 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [Patch, v2] OpenMP/Fortran: Fix handling of 'declare target' with 'link' clause [PR11555] From: Tobias Burnus To: gcc-patches , Jakub Jelinek , "fortran@gcc.gnu.org" References: <2eb94e65-e7a9-4dcb-9ea4-963e8ffa86a9@baylibre.com> Content-Language: en-US In-Reply-To: <2eb94e65-e7a9-4dcb-9ea4-963e8ffa86a9@baylibre.com> X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------pplQO5VuogM8GJ0xiV3jhJdI Content-Type: multipart/alternative; boundary="------------V6rVEshpUP4CiWSmbLYAF1N3" --------------V6rVEshpUP4CiWSmbLYAF1N3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Updated patch - only change is to the testcase: * With the just posted patch for PR116107, array sections with offset work for 'link', hence, I updated the testcase. * For 'arr2', I added ref to the associated PR. I intent to commit it once PR116107 has been committed. Tobias Tobias Burnus wrote: > Hi all, > > it turned out that 'declare target' with 'link' clause was broken in multiple ways. > > The main fix is the attached patch, i.e. namely pushing the variables already to > the offload-vars list already in the FE. > > When implementing it, I noticed: > * C has a similar issue when using nested functions, which is > a GNU extension →https://gcc.gnu.org/115574 > > * When doing partial mapping of arrays (which is one of the reasons for 'link'), > offsets are mishandled in Fortran (not tested in C), see FIXME in the patch) > There: arr2(10) should print 10 but with map(arr2(10:)) it prints 19. > (I will file a PR about this). > > * It might happen that linked variables do not get linked. I have not investigated > why, but 'arr2' gives link errors – while 'arr' works. > See FIXME in the patch. (I will file a PR about this) > > * For COMMON blocks, map(/common/) is rejected,https://gcc.gnu.org/PR115577 > > * When then mapping map(a,b,c) which is identical for 'common /mycom/ a,b,c', > it fails to link the device side as the 'mycom_' symbol cannot be found on the > device side. (I will file a PR about this) > > As COMMON as issues, an alternative would be to defer the trans-common.cc > changes to a later patch. > > Comments, questions, concerns? > > Tobias > > PS: Tested with nvptx offloading with a page-migration supporting system with > nvptx and GCN offloading configured and no new fails observed. --------------V6rVEshpUP4CiWSmbLYAF1N3-- --------------pplQO5VuogM8GJ0xiV3jhJdI Content-Type: text/x-patch; charset=UTF-8; name="omp-declare-tgt-link-v3.diff" Content-Disposition: attachment; filename="omp-declare-tgt-link-v3.diff" Content-Transfer-Encoding: base64 T3Blbk1QL0ZvcnRyYW46IEZpeCBoYW5kbGluZyBvZiAnZGVjbGFyZSB0YXJn ZXQnIHdpdGggJ2xpbmsnIGNsYXVzZSBbUFIxMTU1NV0KCkNvbnRyYXJ5IHRv IGEgbm9ybWFsICdkZWNsYXJlIHRhcmdldCcsIHRoZSAnZGVjbGFyZSB0YXJn ZXQgbGluaycgYXR0cmlidXRlCmFsc28gbmVlZHMgdG8gc2V0IG5vZGUtPm9m ZmxvYWRhYmxlIGFuZCBwdXNoIHRoZSBvZmZsb2FkX3ZhcnMgaW4gdGhlIGZy b250IGVuZC4KCkxpbmtlZCB2YXJpYWJsZXMgcmVxdWlyZSB0aGF0IHRoZSBk YXRhIGlzIG1hcHBlZC4gRm9yIG1vZHVsZSB2YXJpYWJsZXMsIHRoaXMKY2Fu IGhhcHBlbiBhbnl3aGVyZS4gRm9yIHZhcmlhYmxlcyBpbiBhbiBleHRlcm5h bCBzdWJwcm9ncmFtcyBvciB0aGUgbWFpbgpwcm9ncmFtbSwgdGhpcyBjYW4g b25seSBoYXBwZW4gaW4gdGhlIGVpdGhlciB0aGF0IHByb2dyYW0gaXRzZWxm IG9yIGluIGFuCmludGVybmFsIHN1YnByb2dyYW0uIC0gV2hldGhlciBhIHZh cmlhYmxlIGlzIGp1c3Qgbm9ybWFsbHkgbWFwcGVkIG9yIGxpbmtlZCB0aGVu CmJlY29tZXMgcmVsZXZhbnQgaWYgYSBkZXZpY2Ugcm91dGluZSBleGlzdHMg dGhhdCBjYW4gYWNjZXNzIHRoYXQgdmFyaWFibGUsCmkuZS4gYW4gaW50ZXJu YWwgcHJvY2VkdXJlIGhhcyB0aGVuIHRvIGJlIG1hcmtlZCBhcyBkZWNsYXJl IHRhcmdldC4KCglQUiBmb3J0cmFuLzExNTU1OQoKZ2NjL2ZvcnRyYW4vQ2hh bmdlTG9nOgoKCSogdHJhbnMtY29tbW9uLmNjIChidWlsZF9jb21tb25fZGVj bCk6IEFkZCAnb21wIGRlY2xhcmUgdGFyZ2V0JyBhbmQKCSdvbXAgZGVjbGFy ZSB0YXJnZXQgbGluaycgdmFyaWFibGVzIHRvIG9mZmxvYWRfdmFycy4KCSog dHJhbnMtZGVjbC5jYyAoYWRkX2F0dHJpYnV0ZXNfdG9fZGVjbCk6IExpa2V3 aXNlOyB1cGRhdGUgYXJncyBhbmQKCWNhbGwgZGVjbF9hdHRyaWJ1dGVzLgoJ KGdldF9wcm9jX3BvaW50ZXJfZGVjbCwgZ2ZjX2dldF9leHRlcm5fZnVuY3Rp b25fZGVjbCwKCWJ1aWxkX2Z1bmN0aW9uX2RlY2wpOiBVcGRhdGUgY2FsbHMu CgkoZ2ZjX2dldF9zeW1ib2xfZGVjbCk6IExpa2V3aXNlOyBtb3ZlIGFmdGVy ICdERUNMX1NUQVRJQyAodCk9MScKCXRvIGF2b2lkIGVycm9ycyB3aXRoIHN5 bXRhYl9ub2RlOjpnZXRfY3JlYXRlLgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJ KiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2RlY2xhcmUtdGFyZ2V0LWxp bmsuZjkwOiBOZXcgdGVzdC4KCiBnY2MvZm9ydHJhbi90cmFucy1jb21tb24u Y2MgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMSArKysrCiBnY2MvZm9y dHJhbi90cmFucy1kZWNsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA4MSArKysrKysrKystLS0tLQogLi4uL2xpYmdvbXAuZm9ydHJhbi9kZWNs YXJlLXRhcmdldC1saW5rLmY5MCAgICAgICAgfCAxMTYgKysrKysrKysrKysr KysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCsp LCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90 cmFucy1jb21tb24uY2MgYi9nY2MvZm9ydHJhbi90cmFucy1jb21tb24uY2MK aW5kZXggNWY0NGU3YmQ2NjMuLmU3MTQzNDJjM2MwIDEwMDY0NAotLS0gYS9n Y2MvZm9ydHJhbi90cmFucy1jb21tb24uY2MKKysrIGIvZ2NjL2ZvcnRyYW4v dHJhbnMtY29tbW9uLmNjCkBAIC05OCw2ICs5OCw5IEBAIGFsb25nIHdpdGgg R0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5j bHVkZSAiY29yZXR5cGVzLmgiCiAjaW5jbHVkZSAidG0uaCIKICNpbmNsdWRl ICJ0cmVlLmgiCisjaW5jbHVkZSAiY2dyYXBoLmgiCisjaW5jbHVkZSAiY29u dGV4dC5oIgorI2luY2x1ZGUgIm9tcC1vZmZsb2FkLmgiCiAjaW5jbHVkZSAi Z2ZvcnRyYW4uaCIKICNpbmNsdWRlICJ0cmFucy5oIgogI2luY2x1ZGUgInN0 cmluZ3Bvb2wuaCIKQEAgLTQ5Nyw2ICs1MDAsMjQgQEAgYnVpbGRfY29tbW9u X2RlY2wgKGdmY19jb21tb25faGVhZCAqY29tLCB0cmVlIHVuaW9uX3R5cGUs IGJvb2wgaXNfaW5pdCkKIAkgID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmll ciAoIm9tcCBkZWNsYXJlIHRhcmdldCIpLAogCQkgICAgICAgb21wX2NsYXVz ZXMsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpOwogCisgICAgICBpZiAoY29t LT5vbXBfZGVjbGFyZV90YXJnZXRfbGluayB8fCBjb20tPm9tcF9kZWNsYXJl X3RhcmdldCkKKwl7CisJICAvKiBBZGQgdG8gb2ZmbG9hZF92YXJzOyBnZXRf Y3JlYXRlIGRvZXMgc28gZm9yIG9tcF9kZWNsYXJlX3RhcmdldCwKKwkgICAg IG9tcF9kZWNsYXJlX3RhcmdldF9saW5rIHJlcXVpcmVzIG1hbnVhbCB3b3Jr LiAgKi8KKwkgIGdjY19hc3NlcnQgKHN5bXRhYl9ub2RlOjpnZXQgKGRlY2wp ID09IDApOworCSAgc3ltdGFiX25vZGUgKm5vZGUgPSBzeW10YWJfbm9kZTo6 Z2V0X2NyZWF0ZSAoZGVjbCk7CisJICBpZiAobm9kZSAhPSBOVUxMICYmIGNv bS0+b21wX2RlY2xhcmVfdGFyZ2V0X2xpbmspCisJICAgIHsKKwkgICAgICBu b2RlLT5vZmZsb2FkYWJsZSA9IDE7CisJICAgICAgaWYgKEVOQUJMRV9PRkZM T0FESU5HKQorCQl7CisJCSAgZy0+aGF2ZV9vZmZsb2FkID0gdHJ1ZTsKKwkJ ICBpZiAoaXNfYSA8dmFycG9vbF9ub2RlICo+IChub2RlKSkKKwkJICAgIHZl Y19zYWZlX3B1c2ggKG9mZmxvYWRfdmFycywgZGVjbCk7CisJCX0KKwkgICAg fQorCX0KKwogICAgICAgLyogUGxhY2UgdGhlIGJhY2sgZW5kIGRlY2xhcmF0 aW9uIGZvciB0aGlzIGNvbW1vbiBibG9jayBpbgogICAgICAgICAgR0xPQkFM X0JJTkRJTkdfTEVWRUwuICAqLwogICAgICAgZ2ZjX21hcF9vZl9hbGxfY29t bW9uc1tpZGVudGlmaWVyXSA9IHB1c2hkZWNsX3RvcF9sZXZlbCAoZGVjbCk7 CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjIGIvZ2Nj L2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwppbmRleCA4MmZhMmJiNjEzNC4uMGZk YzQxYjE3ODQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wu Y2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwpAQCAtNDYsNyAr NDYsOSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInRyYW5zLXN0bXQuaCIKICNpbmNs dWRlICJnb21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgImdpbXBsaWZ5Lmgi CisjaW5jbHVkZSAiY29udGV4dC5oIgogI2luY2x1ZGUgIm9tcC1nZW5lcmFs LmgiCisjaW5jbHVkZSAib21wLW9mZmxvYWQuaCIKICNpbmNsdWRlICJhdHRy LWZuc3BlYy5oIgogI2luY2x1ZGUgInRyZWUtaXRlcmF0b3IuaCIKICNpbmNs dWRlICJkZXBlbmRlbmN5LmgiCkBAIC0xNDcyLDE5ICsxNDc0LDE4IEBAIGdm Y19hZGRfYXNzaWduX2F1eF92YXJzIChnZmNfc3ltYm9sICogc3ltKQogfQog CiAKLXN0YXRpYyB0cmVlCi1hZGRfYXR0cmlidXRlc190b19kZWNsIChzeW1i b2xfYXR0cmlidXRlIHN5bV9hdHRyLCB0cmVlIGxpc3QpCitzdGF0aWMgdm9p ZAorYWRkX2F0dHJpYnV0ZXNfdG9fZGVjbCAodHJlZSAqZGVjbF9wLCBjb25z dCBnZmNfc3ltYm9sICpzeW0pCiB7CiAgIHVuc2lnbmVkIGlkOwotICB0cmVl IGF0dHI7CisgIHRyZWUgbGlzdCA9IE5VTExfVFJFRTsKKyAgc3ltYm9sX2F0 dHJpYnV0ZSBzeW1fYXR0ciA9IHN5bS0+YXR0cjsKIAogICBmb3IgKGlkID0g MDsgaWQgPCBFWFRfQVRUUl9OVU07IGlkKyspCiAgICAgaWYgKHN5bV9hdHRy LmV4dF9hdHRyICYgKDEgPDwgaWQpICYmIGV4dF9hdHRyX2xpc3RbaWRdLm1p ZGRsZV9lbmRfbmFtZSkKICAgICAgIHsKLQlhdHRyID0gYnVpbGRfdHJlZV9s aXN0ICgKLQkJIGdldF9pZGVudGlmaWVyIChleHRfYXR0cl9saXN0W2lkXS5t aWRkbGVfZW5kX25hbWUpLAotCQkJCSBOVUxMX1RSRUUpOwotCWxpc3QgPSBj aGFpbm9uIChsaXN0LCBhdHRyKTsKKwl0cmVlIGlkZW50ID0gZ2V0X2lkZW50 aWZpZXIgKGV4dF9hdHRyX2xpc3RbaWRdLm1pZGRsZV9lbmRfbmFtZSk7CisJ bGlzdCA9IHRyZWVfY29ucyAoaWRlbnQsIE5VTExfVFJFRSwgbGlzdCk7CiAg ICAgICB9CiAKICAgdHJlZSBjbGF1c2VzID0gTlVMTF9UUkVFOwpAQCAtMTU0 Nyw2ICsxNTQ4LDcgQEAgYWRkX2F0dHJpYnV0ZXNfdG9fZGVjbCAoc3ltYm9s X2F0dHJpYnV0ZSBzeW1fYXR0ciwgdHJlZSBsaXN0KQogICAgICAgY2xhdXNl cyA9IGM7CiAgICAgfQogCisgIGJvb2wgaGFzX2RlY2xhcmUgPSB0cnVlOwog ICBpZiAoc3ltX2F0dHIub21wX2RlY2xhcmVfdGFyZ2V0X2xpbmsKICAgICAg IHx8IHN5bV9hdHRyLm9hY2NfZGVjbGFyZV9saW5rKQogICAgIGxpc3QgPSB0 cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUgdGFyZ2V0 IGxpbmsiKSwKQEAgLTE1NTgsMTIgKzE1NjAsNDUgQEAgYWRkX2F0dHJpYnV0 ZXNfdG9fZGVjbCAoc3ltYm9sX2F0dHJpYnV0ZSBzeW1fYXR0ciwgdHJlZSBs aXN0KQogCSAgIHx8IHN5bV9hdHRyLm9hY2NfZGVjbGFyZV9kZXZpY2VfcmVz aWRlbnQpCiAgICAgbGlzdCA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIg KCJvbXAgZGVjbGFyZSB0YXJnZXQiKSwKIAkJICAgICAgY2xhdXNlcywgbGlz dCk7CisgIGVsc2UKKyAgICBoYXNfZGVjbGFyZSA9IGZhbHNlOwogCiAgIGlm IChzeW1fYXR0ci5vbXBfZGVjbGFyZV90YXJnZXRfaW5kaXJlY3QpCiAgICAg bGlzdCA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCJvbXAgZGVjbGFy ZSB0YXJnZXQgaW5kaXJlY3QiKSwKIAkJICAgICAgY2xhdXNlcywgbGlzdCk7 CiAKLSAgcmV0dXJuIGxpc3Q7CisgIGRlY2xfYXR0cmlidXRlcyAoZGVjbF9w LCBsaXN0LCAwKTsKKworICBpZiAoaGFzX2RlY2xhcmUKKyAgICAgICYmIFZB Ul9QICgqZGVjbF9wKQorICAgICAgJiYgc3ltLT5ucy0+cHJvY19uYW1lLT5h dHRyLmZsYXZvciAhPSBGTF9NT0RVTEUpCisgICAgeworICAgICAgaGFzX2Rl Y2xhcmUgPSBmYWxzZTsKKyAgICAgIGZvciAoZ2ZjX25hbWVzcGFjZSogbnMg PSBzeW0tPm5zLT5jb250YWluZWQ7IG5zOyBucyA9IG5zLT5zaWJsaW5nKQor CWlmIChucy0+cHJvY19uYW1lLT5hdHRyLm9tcF9kZWNsYXJlX3RhcmdldCkK KwkgIHsKKwkgICAgaGFzX2RlY2xhcmUgPSB0cnVlOworCSAgICBicmVhazsK KwkgIH0KKyAgICB9CisKKyAgaWYgKGhhc19kZWNsYXJlICYmIFZBUl9QICgq ZGVjbF9wKSAmJiBoYXNfZGVjbGFyZSkKKyAgICB7CisgICAgICAvKiBBZGQg dG8gb2ZmbG9hZF92YXJzOyBnZXRfY3JlYXRlIGRvZXMgc28gZm9yIG9tcF9k ZWNsYXJlX3RhcmdldCwKKwkgb21wX2RlY2xhcmVfdGFyZ2V0X2xpbmsgcmVx dWlyZXMgbWFudWFsIHdvcmsuICAqLworICAgICAgZ2NjX2Fzc2VydCAoc3lt dGFiX25vZGU6OmdldCAoKmRlY2xfcCkgPT0gMCk7CisgICAgICBzeW10YWJf bm9kZSAqbm9kZSA9IHN5bXRhYl9ub2RlOjpnZXRfY3JlYXRlICgqZGVjbF9w KTsKKyAgICAgIGlmIChub2RlICE9IE5VTEwgJiYgc3ltX2F0dHIub21wX2Rl Y2xhcmVfdGFyZ2V0X2xpbmspCisJeworCSAgbm9kZS0+b2ZmbG9hZGFibGUg PSAxOworCSAgaWYgKEVOQUJMRV9PRkZMT0FESU5HKQorCSAgICB7CisJICAg ICAgZy0+aGF2ZV9vZmZsb2FkID0gdHJ1ZTsKKwkgICAgICBpZiAoaXNfYSA8 dmFycG9vbF9ub2RlICo+IChub2RlKSkKKwkJdmVjX3NhZmVfcHVzaCAob2Zm bG9hZF92YXJzLCAqZGVjbF9wKTsKKwkgICAgfQorCX0KKyAgICB9CiB9CiAK IApAQCAtMTU3OCw3ICsxNjEzLDYgQEAgZ2ZjX2dldF9zeW1ib2xfZGVjbCAo Z2ZjX3N5bWJvbCAqIHN5bSkKIHsKICAgdHJlZSBkZWNsOwogICB0cmVlIGxl bmd0aCA9IE5VTExfVFJFRTsKLSAgdHJlZSBhdHRyaWJ1dGVzOwogICBpbnQg YnlyZWY7CiAgIGJvb2wgaW50cmluc2ljX2FycmF5X3BhcmFtZXRlciA9IGZh bHNlOwogICBib29sIGZ1bl9vcl9yZXM7CkBAIC0xODY0LDEyICsxODk4LDYg QEAgZ2ZjX2dldF9zeW1ib2xfZGVjbCAoZ2ZjX3N5bWJvbCAqIHN5bSkKICAg ZGVjbCA9IGJ1aWxkX2RlY2wgKGdmY19nZXRfbG9jYXRpb24gKCZzeW0tPmRl Y2xhcmVkX2F0KSwKIAkJICAgICBWQVJfREVDTCwgZ2ZjX3N5bV9pZGVudGlm aWVyIChzeW0pLCBnZmNfc3ltX3R5cGUgKHN5bSkpOwogCi0gIC8qIEFkZCBh dHRyaWJ1dGVzIHRvIHZhcmlhYmxlcy4gIEZ1bmN0aW9ucyBhcmUgaGFuZGxl ZCBlbHNld2hlcmUuICAqLwotICBhdHRyaWJ1dGVzID0gYWRkX2F0dHJpYnV0 ZXNfdG9fZGVjbCAoc3ltLT5hdHRyLCBOVUxMX1RSRUUpOwotICBkZWNsX2F0 dHJpYnV0ZXMgKCZkZWNsLCBhdHRyaWJ1dGVzLCAwKTsKLSAgaWYgKHN5bS0+ dHMuZGVmZXJyZWQgJiYgVkFSX1AgKGxlbmd0aCkpCi0gICAgZGVjbF9hdHRy aWJ1dGVzICgmbGVuZ3RoLCBhdHRyaWJ1dGVzLCAwKTsKLQogICAvKiBTeW1i b2xzIGZyb20gbW9kdWxlcyBzaG91bGQgaGF2ZSB0aGVpciBhc3NlbWJsZXIg bmFtZXMgbWFuZ2xlZC4KICAgICAgVGhpcyBpcyBkb25lIGhlcmUgcmF0aGVy IHRoYW4gaW4gZ2ZjX2ZpbmlzaF92YXJfZGVjbCBiZWNhdXNlIGl0CiAgICAg IGlzIGRpZmZlcmVudCBmb3Igc3RyaW5nIGxlbmd0aCB2YXJpYWJsZXMuICAq LwpAQCAtMjAzNSw2ICsyMDYzLDEyIEBAIGdmY19nZXRfc3ltYm9sX2RlY2wg KGdmY19zeW1ib2wgKiBzeW0pCiAJVFJFRV9SRUFET05MWSAoZGVjbCkgPSAx OwogICAgIH0KIAorICAvKiBBZGQgYXR0cmlidXRlcyB0byB2YXJpYWJsZXMu ICBGdW5jdGlvbnMgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLiAgKi8KKyAgYWRk X2F0dHJpYnV0ZXNfdG9fZGVjbCAoJmRlY2wsIHN5bSk7CisKKyAgaWYgKHN5 bS0+dHMuZGVmZXJyZWQgJiYgVkFSX1AgKGxlbmd0aCkpCisgICAgZGVjbF9h dHRyaWJ1dGVzICgmbGVuZ3RoLCBERUNMX0FUVFJJQlVURVMgKGRlY2wpLCAw KTsKKwogICByZXR1cm4gZGVjbDsKIH0KIApAQCAtMjA3MSw3ICsyMTA1LDYg QEAgc3RhdGljIHRyZWUKIGdldF9wcm9jX3BvaW50ZXJfZGVjbCAoZ2ZjX3N5 bWJvbCAqc3ltKQogewogICB0cmVlIGRlY2w7Ci0gIHRyZWUgYXR0cmlidXRl czsKIAogICBpZiAoc3ltLT5tb2R1bGUgfHwgc3ltLT5mbl9yZXN1bHRfc3Bl YykKICAgICB7CkBAIC0yMTUxLDggKzIxODQsNyBAQCBnZXRfcHJvY19wb2lu dGVyX2RlY2wgKGdmY19zeW1ib2wgKnN5bSkKICAgICAgICYmIChUUkVFX1NU QVRJQyAoZGVjbCkgfHwgREVDTF9FWFRFUk5BTCAoZGVjbCkpKQogICAgIHNl dF9kZWNsX3Rsc19tb2RlbCAoZGVjbCwgZGVjbF9kZWZhdWx0X3Rsc19tb2Rl bCAoZGVjbCkpOwogCi0gIGF0dHJpYnV0ZXMgPSBhZGRfYXR0cmlidXRlc190 b19kZWNsIChzeW0tPmF0dHIsIE5VTExfVFJFRSk7Ci0gIGRlY2xfYXR0cmli dXRlcyAoJmRlY2wsIGF0dHJpYnV0ZXMsIDApOworICBhZGRfYXR0cmlidXRl c190b19kZWNsICgmZGVjbCwgc3ltKTsKIAogICByZXR1cm4gZGVjbDsKIH0K QEAgLTIxNjYsNyArMjE5OCw2IEBAIGdmY19nZXRfZXh0ZXJuX2Z1bmN0aW9u X2RlY2wgKGdmY19zeW1ib2wgKiBzeW0sIGdmY19hY3R1YWxfYXJnbGlzdCAq YWN0dWFsX2FyZ3MsCiB7CiAgIHRyZWUgdHlwZTsKICAgdHJlZSBmbmRlY2w7 Ci0gIHRyZWUgYXR0cmlidXRlczsKICAgZ2ZjX2V4cHIgZTsKICAgZ2ZjX2lu dHJpbnNpY19zeW0gKmlzeW07CiAgIGdmY19leHByIGFyZ2V4cHI7CkBAIC0y MzY0LDggKzIzOTUsNyBAQCBtb2R1bGVfc3ltOgogICBERUNMX0VYVEVSTkFM IChmbmRlY2wpID0gMTsKICAgVFJFRV9QVUJMSUMgKGZuZGVjbCkgPSAxOwog Ci0gIGF0dHJpYnV0ZXMgPSBhZGRfYXR0cmlidXRlc190b19kZWNsIChzeW0t PmF0dHIsIE5VTExfVFJFRSk7Ci0gIGRlY2xfYXR0cmlidXRlcyAoJmZuZGVj bCwgYXR0cmlidXRlcywgMCk7CisgIGFkZF9hdHRyaWJ1dGVzX3RvX2RlY2wg KCZmbmRlY2wsIHN5bSk7CiAKICAgZ2ZjX3NldF9kZWNsX2Fzc2VtYmxlcl9u YW1lIChmbmRlY2wsIG1hbmdsZWRfbmFtZSk7CiAKQEAgLTI0MjQsNyArMjQ1 NCw3IEBAIG1vZHVsZV9zeW06CiBzdGF0aWMgdm9pZAogYnVpbGRfZnVuY3Rp b25fZGVjbCAoZ2ZjX3N5bWJvbCAqIHN5bSwgYm9vbCBnbG9iYWwpCiB7Ci0g IHRyZWUgZm5kZWNsLCB0eXBlLCBhdHRyaWJ1dGVzOworICB0cmVlIGZuZGVj bCwgdHlwZTsKICAgc3ltYm9sX2F0dHJpYnV0ZSBhdHRyOwogICB0cmVlIHJl c3VsdF9kZWNsOwogICBnZmNfZm9ybWFsX2FyZ2xpc3QgKmY7CkBAIC0yNDc1 LDE1ICsyNTA1LDE0IEBAIGJ1aWxkX2Z1bmN0aW9uX2RlY2wgKGdmY19zeW1i b2wgKiBzeW0sIGJvb2wgZ2xvYmFsKQogICBpZiAoc3ltLT5hdHRyLnJlZmVy ZW5jZWQgfHwgc3ltLT5hdHRyLmVudHJ5X21hc3RlcikKICAgICBUUkVFX1VT RUQgKGZuZGVjbCkgPSAxOwogCi0gIGF0dHJpYnV0ZXMgPSBhZGRfYXR0cmli dXRlc190b19kZWNsIChhdHRyLCBOVUxMX1RSRUUpOwotICBkZWNsX2F0dHJp YnV0ZXMgKCZmbmRlY2wsIGF0dHJpYnV0ZXMsIDApOworICBhZGRfYXR0cmli dXRlc190b19kZWNsICgmZm5kZWNsLCBzeW0pOwogCiAgIC8qIEZpZ3VyZSBv dXQgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBkZWNsYXJlZCBmdW5jdGlvbiwg YW5kIGJ1aWxkIGEKICAgICAgUkVTVUxUX0RFQ0wgZm9yIGl0LiAgSWYgdGhp cyBpcyBhIHN1YnJvdXRpbmUgd2l0aCBhbHRlcm5hdGUKICAgICAgcmV0dXJu cywgYnVpbGQgYSBSRVNVTFRfREVDTCBmb3IgaXQuICAqLwogICByZXN1bHRf ZGVjbCA9IE5VTExfVFJFRTsKICAgLyogVE9ETzogU2hvdWxkbid0IHRoaXMg anVzdCBiZSBUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZm5kZWNsKSkuICAqLwot ICBpZiAoYXR0ci5mdW5jdGlvbikKKyAgaWYgKHN5bS0+YXR0ci5mdW5jdGlv bikKICAgICB7CiAgICAgICBpZiAoZ2ZjX3JldHVybl9ieV9yZWZlcmVuY2Ug KHN5bSkpCiAJdHlwZSA9IHZvaWRfdHlwZV9ub2RlOwpAQCAtMjUzMCw3ICsy NTU5LDcgQEAgYnVpbGRfZnVuY3Rpb25fZGVjbCAoZ2ZjX3N5bWJvbCAqIHN5 bSwgYm9vbCBnbG9iYWwpCiAgIC8qIFNldCBhdHRyaWJ1dGVzIGZvciBQVVJF IGZ1bmN0aW9ucy4gQSBjYWxsIHRvIGEgUFVSRSBmdW5jdGlvbiBpbiB0aGUK ICAgICAgRm9ydHJhbiA5NSBzZW5zZSBpcyBib3RoIHB1cmUgYW5kIHdpdGhv dXQgc2lkZSBlZmZlY3RzIGluIHRoZSBDCiAgICAgIHNlbnNlLiAgKi8KLSAg aWYgKGF0dHIucHVyZSB8fCBhdHRyLmltcGxpY2l0X3B1cmUpCisgIGlmIChz eW0tPmF0dHIucHVyZSB8fCBzeW0tPmF0dHIuaW1wbGljaXRfcHVyZSkKICAg ICB7CiAgICAgICAvKiBUT0RPOiBjaGVjayBpZiBhIHB1cmUgU1VCUk9VVElO RSBoYXMgbm8gSU5URU5UKE9VVCkgYXJndW1lbnRzCiAJIGluY2x1ZGluZyBh biBhbHRlcm5hdGUgcmV0dXJuLiBJbiB0aGF0IGNhc2UgaXQgY2FuIGFsc28g YmUKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9y dHJhbi9kZWNsYXJlLXRhcmdldC1saW5rLmY5MCBiL2xpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuZm9ydHJhbi9kZWNsYXJlLXRhcmdldC1saW5rLmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmNlMjEy ZDExNGYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmZvcnRyYW4vZGVjbGFyZS10YXJnZXQtbGluay5mOTAKQEAgLTAs MCArMSwxMTYgQEAKKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1XYWxs IiB9CishIFBSIGZvcnRyYW4vMTE1NTU5CisKK21vZHVsZSBtCisgICBpbnRl Z2VyIDo6IEEKKyAgICEkb21wIGRlY2xhcmUgdGFyZ2V0IGxpbmsoQSkKK2Vu ZCBtb2R1bGUgbQorCitzdWJyb3V0aW5lIGYKKyAgaW1wbGljaXQgbm9uZSAo dHlwZSwgZXh0ZXJuYWwpCisgIGludGVnZXIsIHNhdmUgOjogeCwgeSAgISB7 IGRnLXdhcm5pbmcgIlVudXNlZCB2YXJpYWJsZSAneScgZGVjbGFyZWQiIH0K KyAgISRvbXAgZGVjbGFyZSB0YXJnZXQgbGluayh4LCB5KQorCisgICEgbm90 ZTogeSBpcyBub3QgJ2xpbmsnIGFzIGdmb3J0cmFuIGRvZXNuJ3QgcmVnYXJk IGl0IGFzIHVzZWQKKyAgeCA9IDYKKyAgY2FsbCBpaQorCitjb250YWlucwor ICBzdWJyb3V0aW5lIGsKKyAgICAhJG9tcCBkZWNsYXJlIHRhcmdldAorICAg ICB1c2UgbQorICAgICBBID0gNQorICBlbmQKKyAgc3Vicm91dGluZSBpaQor ICAgIGludGVnZXIgOjogcmVzCisgICAgISRvbXAgdGFyZ2V0IG1hcCh4KSBt YXAoZnJvbTogcmVzKQorICAgICAgY2FsbCBrKCkKKyAgICAgIGNhbGwgbGwo KQorICAgICAgcmVzID0gZ2V0KCkKKyAgICAhJG9tcCBlbmQgdGFyZ2V0Cisg ICAgISBwcmludCAqLCByZXMKKyAgICBpZiAocmVzIC89IDYgKyA3ICsgNSkg JgorICAgICAgc3RvcCAxCisgIGVuZAorICBzdWJyb3V0aW5lIGxsCisgICAg ISRvbXAgZGVjbGFyZSB0YXJnZXQKKyAgICB4ID0geCArIDcKKyAgZW5kCisg IGludGVnZXIgZnVuY3Rpb24gZ2V0KCkKKyAgICAgdXNlIG0KKyAgICAgISRv bXAgZGVjbGFyZSB0YXJnZXQKKyAgICAgZ2V0ID0geCArIEEKKyAgZW5kCitl bmQKKworCitzdWJyb3V0aW5lIHN1YgorICBpbXBsaWNpdCBub25lICh0eXBl LCBleHRlcm5hbCkKKyAgaW50ZWdlciwgc2F2ZSA6OiBhcnIoMTAwKSwgYXJy MigxOjQpCisgICEkb21wIGRlY2xhcmUgdGFyZ2V0IGxpbmsoYXJyLGFycjIp CisKKyAgY2FsbCBtYXBpdAorICBjYWxsIGRldmljZTEKKyAgY2FsbCByZV9t YXBpdAorICBjYWxsIGRldmljZTIKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUg bWFwaXQKKyAgICBpbnRlZ2VyIDo6IGkKKyAgICBhcnIgPSBbKGksIGk9MSwx MDApXQorICAgICEkb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcCh0bzphcnIo MTA6NTApKSBtYXAoYWxsb2M6IGFycjIoMTo0KSkKKyAgZW5kIHN1YnJvdXRp bmUKKyAgc3Vicm91dGluZSByZV9tYXBpdAorICAgIGludGVnZXIgOjogaQor ICAgICEkb21wIHRhcmdldCBleGl0IGRhdGEgbWFwKGZyb206YXJyKDEwOjUw KSkgbWFwKGRlbGV0ZTogYXJyMikKKworICAgIGlmIChhbnkgKGFycigxOjkp IC89IFsoaSwgaT0xLDkpXSkpIHN0b3AgMgorICAgIGlmIChhbnkgKGFycigx MDo1MCkgLz0gWygzLTEwKmksIGk9MTAsNTApXSkpIHN0b3AgMworICAgIGlm IChhbnkgKGFycig1MToxMDApIC89IFsoaSwgaT01MSwxMDApXSkpIHN0b3Ag NAorICBlbmQgc3Vicm91dGluZQorCisgIHN1YnJvdXRpbmUgZGV2aWNlMQor ICAgIGludGVnZXIgOjogcmVzCisgICAgISRvbXAgdGFyZ2V0IG1hcChmcm9t OnJlcykKKyAgICAgIHJlcyA9IHJ1bl9kZXZpY2UxKCkKKyAgICAhJG9tcCBl bmQgdGFyZ2V0CisgICAgcHJpbnQgKiwgcmVzCisgICAgISBGSVhNRTogYXJy MiBub3QgbGluayBtYXBwZWQgLT4gUFIxMTU2MzcKKyAgICAhIGlmIChyZXMg Lz0gLTExNDM2KSBzdG9wIDUKKyAgICBpZiAocmVzIC89IC0xMTU0Nikgc3Rv cCA1ICEgRklYTUUKKyAgZW5kCisgIGludGVnZXIgZnVuY3Rpb24gcnVuX2Rl dmljZTEoKQorICAgICEkb21wIGRlY2xhcmUgdGFyZ2V0CisgICAgaW50ZWdl ciA6OiBpCisgICAgcnVuX2RldmljZTEgPSAtOTkKKyAgICAhIEZJWE1FOiBh cnIyIG5vdCBsaW5rIG1hcHBlZCAtPiBQUjExNTYzNworICAgICEgICBhcnIy ID0gWzExLDIyLDMzLDQ0XQorICAgIGlmIChhbnkgKGFycigxMDo1MCkgLz0g WyhpLCBpPTEwLDUwKV0pKSB0aGVuCisgICAgICBydW5fZGV2aWNlMSA9IGFy cigxMSkKKyAgICAgIHJldHVybgorICAgIGVuZCBpZgorICAgICEgRklYTUU6 IC0+IFBSMTE1NjM3CisgICAgISBydW5fZGV2aWNlMSA9IHN1bShhcnIoMTA6 MTMpICsgYXJyMikKKyAgICBydW5fZGV2aWNlMSA9IHN1bShhcnIoMTA6MTMp ICkgISBGSVhNRQorICAgIGRvIGkgPSAxMCwgNTAKKyAgICAgIGFycihpKSA9 IDMgLSAxMCAqIGFycihpKQorICAgIGVuZCBkbworICAgIHJ1bl9kZXZpY2Ux ID0gcnVuX2RldmljZTEgKyBzdW0oYXJyKDE1OjUwKSkKKyAgZW5kCisgIHN1 YnJvdXRpbmUgZGV2aWNlMgorICBlbmQKKyAgaW50ZWdlciBmdW5jdGlvbiBy dW5fZGV2aWNlMigpCisgICAgISRvbXAgZGVjbGFyZSB0YXJnZXQKKyAgICBy dW5fZGV2aWNlMiA9IC05OQorICBlbmQKK2VuZAorCisKK3VzZSBtCitpbXBs aWNpdCBub25lICh0eXBlLCBleHRlcm5hbCkKK2V4dGVybmFsIGYKK2V4dGVy bmFsIHN1YgorCishJG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXAoYWxsb2M6 IEEpCitjYWxsIGYoKQorY2FsbCBzdWIKK2VuZAo= --------------pplQO5VuogM8GJ0xiV3jhJdI--