From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [81.169.146.163]) by sourceware.org (Postfix) with ESMTPS id 868413858CD1 for ; Sat, 9 Dec 2023 17:37:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 868413858CD1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gjlay.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=gjlay.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 868413858CD1 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=81.169.146.163 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1702143447; cv=pass; b=mBbykVuEziOA3vRE4DC/rZQcVPQp8ukB3lbsR8IAgrlsuKhhyhKLVbYfvve3LV9Q+PTlFdFGBCypCAmNtE/abkjFc6uc4p2/vfbxc5c/taimlrrJSalJZBaCD7qZas7TMcX54bk2+qEg1DPDRa/D7Im4WhRtZ7a4gEUPOs3wsQw= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1702143447; c=relaxed/simple; bh=chb8nx2HM8N8q9uPAxLb1d2mMGMAV+m7VelVpbz0lBQ=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version:To: From:Subject; b=FpvJ1mrQFtAOmgYGtCcAPyLdyL/9UYAJBVRVG8nZcke4FF7BQ34UjluJaDsJXF9FYEP+n6TaVgkDix7v49f6LulW+3lpSbjWAsqx9kGdDFcZdjhKqh68+fJHh+uVDaYzpVQuL+nb6O0hLO547jlwI3iWNL1iCWFoVlvrsB48Qik= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1702143442; cv=none; d=strato.com; s=strato-dkim-0002; b=AOQUrkaRqbWNonfeZUVcz8iwgrZU3s8M1CGTnoaWCvfQY4vtm0lcShOBB9ryM1jLWN jIAEyX9jQUQEJx5FQk8bNRlEgBWl7jU6u1EILmszTcd7fm4rWVVFT8LFoLEGCeXghVc3 hEaj+VJPxusYY8TVvcDJmuqH0/Kl0xb70+ALhfh4rW8OtZ52v7mJg/QkxrbMWnB06e8J DAFsGBJrmnNhEqffoYEMKsh+jX+kGyGa4cFtlANDfmKUbgT6xQf3+YaBJtU9htz5Bwda 2/wzuD51fRXJIauWB+ayuFP0QrKiV2l6A7oZu8yz9kaRjP+Y8lt5tsAqyAa9NQD3Qqi0 h1rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1702143442; s=strato-dkim-0002; d=strato.com; h=Subject:From:To:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SPRV8XENwrfEEHo8SSmIyR8n/Aa7aLpTqff2kSzxAtE=; b=XThb+Z8OySzJc8gFMnd2PBCGBSghfnGqRpu8FkicahoNYImmUeXzqrDmbrqD2ScBGl Cf3PTv4uadoYSsrzzP35vv6enLx+nkcxcC09IMWjtDwelWx/BtBu9PrkTQryOiOdlpke e5oZ5Xj0ObDzG7pS3ZsA3coTUsfh2MyJ0gE57fmq7fZoyzO4rP7TBTx6M0Eb2T8nofy7 t94VzrFoU+9y3kyIOnxjQ0IX9WaUNSN5JvHLqQB96XCm561h+nYjzs8sA1cF2VANCcF3 gIxcgzKX45ZJYgE4ndm4/iwWs1hqVn0uboyutteyaJO4EmUpcDVd4umsdcmOgL44ei8N dHtg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1702143442; s=strato-dkim-0002; d=gjlay.de; h=Subject:From:To:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SPRV8XENwrfEEHo8SSmIyR8n/Aa7aLpTqff2kSzxAtE=; b=W+8eiXfX8nS+VD/4LyMr/NJBaBz+xhXbHNne68PX7kdP6csfhryltsaCeIHLUl37AC ADuCDkzOZ11ykJ3hkJKX326meHSzHBF7uLUHBCWtTiXEGRDolijKaXfClQ9KE7lJEclK LISapRlrsSqMiV2V7h7l2A24i6FFLGTgwNZ/6Pd7DKidcuPibXuKqYA0KHBgURHdyrIE zvlVAOuE4NzRaNvD159F//uGu7ciYij10gHA7XbK57qKKXAeb2i5J+q/9m/viukHIQKD s13kXqkcu1zHnQOJnHeQ31GAUz+rQIrkdhbmuVSIU2Jx0IfKOkDtg8UFHGR0UBBCcVLk 3BPw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1702143442; s=strato-dkim-0003; d=gjlay.de; h=Subject:From:To:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SPRV8XENwrfEEHo8SSmIyR8n/Aa7aLpTqff2kSzxAtE=; b=KKlgn/9+d1hPHlOiNdmtO4KcenZEBSOlNDlIR6L/njcZSW1i3r16QAfo/GpdznYPdg /rfr8kDLJVAwWjKFL3Ag== X-RZG-AUTH: ":LXoWVUeid/7A29J/hMvvT3koxZnKT7Qq0xotTetVnKkSjsSjo3O/MHXSz1aalw==" Received: from [192.168.2.102] by smtp.strato.de (RZmta 49.10.0 DYNA|AUTH) with ESMTPSA id Lf3d8bzB9HbMRmN (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate) for ; Sat, 9 Dec 2023 18:37:22 +0100 (CET) Content-Type: multipart/mixed; boundary="------------1H7H04JycsUnElc0Q0KLOe50" Message-ID: <959585a4-d3b7-499a-ad6a-3a3ae7f805cc@gjlay.de> Date: Sat, 9 Dec 2023 18:37:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: binutils@sourceware.org From: Georg-Johann Lay Subject: [patch, avr] PR31124: Support rodata in flash for more AVR devices Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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. --------------1H7H04JycsUnElc0Q0KLOe50 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch adds two new emulations in order to support rodata in flash for more devices. Purpose of the new emulations is to provide linker descriptions for rodata in flash. Apart from that, the behaviour is the same like for the existing emulation. I added comments to avr.sc which explain the new symbols. If anything is unclear, then I am happy to improve the explanations. What I am unsure about is the ABSOLUTE in avrxmega2_flmap.x: .rodata __rodata_start : AT (__rodata_load_start) { ... __rodata_end = ABSOLUTE(.) ; } > rodata No other places in the ld scripts use ABSOLUTE, e.g. for __data_end in: .data : { ... PROVIDE (__data_end = .) ; } > data AT> text Johan -- PR31124: AVR: Add emulations to support rodata in flash for AVR64* and AVR128* devices. AVR devices from the AVR64* and AVR128* families support that rodata can be located in in program memory. This patch adds new emulations eavrxmega2_flmap and eavrxmega4_flmap. The purpose of the new emulations is to provide new linker description files which facilitate rodata in flash. Apart from a different linker script, the new emulation behave exactly the same like the existing avrxmega2 and avrxmega4. For a detailed explanation of the new symbols and their purposes, cf. the comments in ld/scripttempl/avr.sc. ld/ PR 31124 * configure.tgt (targ_extra_emuls) [targ=avr-*-*]: Add eavrxmega2_flmap, eavrxmega4_flmap. * Makefile.am (ALL_EMULATION_SOURCES): Add eavrxmega2_flmap.c, eavrxmega4_flmap.c. * Makefile.in: Regenerate. * emulparams/avrxmega2.sh (MAYBE_FLMAP): Set to 1. * emulparams/avrxmega4.sh (MAYBE_FLMAP): Set to 1. * emulparams/avrxmega2_flmap.sh: New file. * emulparams/avrxmega4_flmap.sh: New file. * scripttempl/avr.sc: Adjust comments. [MAYBE_FLMAP]: Define symbols: __do_init_flmap, __flmap, __flmap_lsl4, __flmap_init_label. [HAVE_FLMAP]: Add MEMORY region rodata. Add output section .rodata. Define symbols: ___RODATA_VMA__, __RODATA_ORIGIN__, __RODATA_LDS_OFFSET__, __RODATA_REGION_LENGTH__, __RODATA_FLASH_START__, __rodata_start, __rodata_end, __rodata_load_start, __rodata_load_end. --------------1H7H04JycsUnElc0Q0KLOe50 Content-Type: text/x-patch; charset=UTF-8; name="pr31124-flmap.diff" Content-Disposition: attachment; filename="pr31124-flmap.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KaW5kZXggOTY2 NGQ0Yzc3MDkuLjU3NjlmM2NlZTg3IDEwMDY0NAotLS0gYS9sZC9NYWtlZmlsZS5hbQorKysg Yi9sZC9NYWtlZmlsZS5hbQpAQCAtMTk4LDggKzE5OCwxMCBAQCBBTExfRU1VTEFUSU9OX1NP VVJDRVMgPSBcCiAJZWF2cnRpbnkuYyAgIFwKIAllYXZyeG1lZ2ExLmMgXAogCWVhdnJ4bWVn YTIuYyBcCisJZWF2cnhtZWdhMl9mbG1hcC5jIFwKIAllYXZyeG1lZ2EzLmMgXAogCWVhdnJ4 bWVnYTQuYyBcCisJZWF2cnhtZWdhNF9mbG1hcC5jIFwKIAllYXZyeG1lZ2E1LmMgXAogCWVh dnJ4bWVnYTYuYyBcCiAJZWF2cnhtZWdhNy5jIFwKZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxl LmluIGIvbGQvTWFrZWZpbGUuaW4KaW5kZXggZDAyNTIyNzk3MWEuLjQxYjBkOGNjY2Y4IDEw MDY0NAotLS0gYS9sZC9NYWtlZmlsZS5pbgorKysgYi9sZC9NYWtlZmlsZS5pbgpAQCAtNzA5 LDggKzcwOSwxMCBAQCBBTExfRU1VTEFUSU9OX1NPVVJDRVMgPSBcCiAJZWF2cnRpbnkuYyAg IFwKIAllYXZyeG1lZ2ExLmMgXAogCWVhdnJ4bWVnYTIuYyBcCisJZWF2cnhtZWdhMl9mbG1h cC5jIFwKIAllYXZyeG1lZ2EzLmMgXAogCWVhdnJ4bWVnYTQuYyBcCisJZWF2cnhtZWdhNF9m bG1hcC5jIFwKIAllYXZyeG1lZ2E1LmMgXAogCWVhdnJ4bWVnYTYuYyBcCiAJZWF2cnhtZWdh Ny5jIFwKQEAgLTEzMzEsOCArMTMzMywxMCBAQCBkaXN0Y2xlYW4tY29tcGlsZToKIEBBTURF UF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9lYXZydGlueS5Q b0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8k KERFUERJUikvZWF2cnhtZWdhMS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2lu Y2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2cnhtZWdhMi5Qb0BhbV9fcXVvdGVA CitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2 cnhtZWdhMl9mbG1hcC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVA IEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2cnhtZWdhMy5Qb0BhbV9fcXVvdGVACiBAQU1E RVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2cnhtZWdh NC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVA Li8kKERFUERJUikvZWF2cnhtZWdhNF9mbG1hcC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJV RUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2cnhtZWdhNS5Qb0Bh bV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERF UERJUikvZWF2cnhtZWdhNi5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1 ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZWF2cnhtZWdhNy5Qb0BhbV9fcXVvdGVACmRp ZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAppbmRleCAz YWE1OTVlZjEzMC4uYWZkNDMwMzI0NmUgMTAwNjQ0Ci0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QK KysrIGIvbGQvY29uZmlndXJlLnRndApAQCAtMjUzLDcgKzI1Myw3IEBAIGFybSotKi1oYWlr dSopCQl0YXJnX2VtdWw9YXJtZWxmX2hhaWt1CiAJCQl0YXJnX2V4dHJhX2VtdWxzPWFybWVs ZgogCQkJOzsKIGF2ci0qLSopCQl0YXJnX2VtdWw9YXZyMgotCQkJdGFyZ19leHRyYV9lbXVs cz0iYXZyMSBhdnIyNSBhdnIzIGF2cjMxIGF2cjM1IGF2cjQgYXZyNSBhdnI1MSBhdnI2IGF2 cnhtZWdhMSBhdnJ4bWVnYTIgYXZyeG1lZ2EzIGF2cnhtZWdhNCBhdnJ4bWVnYTUgYXZyeG1l Z2E2IGF2cnhtZWdhNyBhdnJ0aW55IgorCQkJdGFyZ19leHRyYV9lbXVscz0iYXZyMSBhdnIy NSBhdnIzIGF2cjMxIGF2cjM1IGF2cjQgYXZyNSBhdnI1MSBhdnI2IGF2cnhtZWdhMSBhdnJ4 bWVnYTIgYXZyeG1lZ2EyX2ZsbWFwIGF2cnhtZWdhMyBhdnJ4bWVnYTQgYXZyeG1lZ2E0X2Zs bWFwIGF2cnhtZWdhNSBhdnJ4bWVnYTYgYXZyeG1lZ2E3IGF2cnRpbnkiCiAJCQk7OwogYmZp bi0qLWVsZiB8IGJmaW4tKi1ydGVtcyopCiAJCQl0YXJnX2VtdWw9ZWxmMzJiZmluCmRpZmYg LS1naXQgYS9sZC9lbXVscGFyYW1zL2F2cnhtZWdhMi5zaCBiL2xkL2VtdWxwYXJhbXMvYXZy eG1lZ2EyLnNoCmluZGV4IDNmM2Q4NjUxOGRlLi5kOGM3ZTE5NGEyOCAxMDA2NDQKLS0tIGEv bGQvZW11bHBhcmFtcy9hdnJ4bWVnYTIuc2gKKysrIGIvbGQvZW11bHBhcmFtcy9hdnJ4bWVn YTIuc2gKQEAgLTE4LDMgKzE4LDUgQEAgRlVTRV9MRU5HVEg9MUsKIExPQ0tfTEVOR1RIPTFL CiBTSUdOQVRVUkVfTEVOR1RIPTFLCiBVU0VSX1NJR05BVFVSRV9MRU5HVEg9MUsKKworTUFZ QkVfRkxNQVA9MQpkaWZmIC0tZ2l0IGEvbGQvZW11bHBhcmFtcy9hdnJ4bWVnYTJfZmxtYXAu c2ggYi9sZC9lbXVscGFyYW1zL2F2cnhtZWdhMl9mbG1hcC5zaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWU1YWRiZTlmYzIKLS0tIC9kZXYvbnVsbAorKysg Yi9sZC9lbXVscGFyYW1zL2F2cnhtZWdhMl9mbG1hcC5zaApAQCAtMCwwICsxLDMxIEBACitB UkNIPWF2cjoxMDIKK01BQ0hJTkU9CitTQ1JJUFRfTkFNRT1hdnIKK09VVFBVVF9GT1JNQVQ9 ImVsZjMyLWF2ciIKK01BWFBBR0VTSVpFPTEKK0VNQkVEREVEPXllcworVEVNUExBVEVfTkFN RT1lbGYKKworVEVYVF9MRU5HVEg9MTAyNEsKK0RBVEFfT1JJR0lOPTB4ODAyMDAwCitEQVRB X0xFTkdUSD0weGZmYTAKK0VYVFJBX0VNX0ZJTEU9YXZyZWxmCisKK0ZVU0VfTkFNRT1mdXNl CisKK0VFUFJPTV9MRU5HVEg9NjRLCitGVVNFX0xFTkdUSD0xSworTE9DS19MRU5HVEg9MUsK K1NJR05BVFVSRV9MRU5HVEg9MUsKK1VTRVJfU0lHTkFUVVJFX0xFTkdUSD0xSworCitNQVlC RV9GTE1BUD0xCisKKyMgQWJvdmUgaXMgYSBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiBhdnJ4 bWVnYTIuc2gKKworSEFWRV9GTE1BUD0xCitST0RBVEFfVk1BPTB4YTAwMDAwCitST0RBVEFf TEVOR1RIPTMySworUk9EQVRBX0xEU19PRkZTRVQ9MHg4MDAwCitST0RBVEFfRkxBU0hfU1RB UlQ9MzJLCitGTE1BUF9NQVNLPTB4MQpkaWZmIC0tZ2l0IGEvbGQvZW11bHBhcmFtcy9hdnJ4 bWVnYTQuc2ggYi9sZC9lbXVscGFyYW1zL2F2cnhtZWdhNC5zaAppbmRleCBkN2IzNzcxMzVl ZS4uNzg3ZTUxNmVlOWEgMTAwNjQ0Ci0tLSBhL2xkL2VtdWxwYXJhbXMvYXZyeG1lZ2E0LnNo CisrKyBiL2xkL2VtdWxwYXJhbXMvYXZyeG1lZ2E0LnNoCkBAIC0xOCwzICsxOCw1IEBAIEZV U0VfTEVOR1RIPTFLCiBMT0NLX0xFTkdUSD0xSwogU0lHTkFUVVJFX0xFTkdUSD0xSwogVVNF Ul9TSUdOQVRVUkVfTEVOR1RIPTFLCisKK01BWUJFX0ZMTUFQPTEKZGlmZiAtLWdpdCBhL2xk L2VtdWxwYXJhbXMvYXZyeG1lZ2E0X2ZsbWFwLnNoIGIvbGQvZW11bHBhcmFtcy9hdnJ4bWVn YTRfZmxtYXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMy ZjZiOWNlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvZW11bHBhcmFtcy9hdnJ4bWVnYTRf ZmxtYXAuc2gKQEAgLTAsMCArMSwzMSBAQAorQVJDSD1hdnI6MTA0CitNQUNISU5FPQorU0NS SVBUX05BTUU9YXZyCitPVVRQVVRfRk9STUFUPSJlbGYzMi1hdnIiCitNQVhQQUdFU0laRT0x CitFTUJFRERFRD15ZXMKK1RFTVBMQVRFX05BTUU9ZWxmCisKK1RFWFRfTEVOR1RIPTEwMjRL CitEQVRBX09SSUdJTj0weDgwMjAwMAorREFUQV9MRU5HVEg9MHhmZmEwCitFWFRSQV9FTV9G SUxFPWF2cmVsZgorCitGVVNFX05BTUU9ZnVzZQorCitFRVBST01fTEVOR1RIPTY0SworRlVT RV9MRU5HVEg9MUsKK0xPQ0tfTEVOR1RIPTFLCitTSUdOQVRVUkVfTEVOR1RIPTFLCitVU0VS X1NJR05BVFVSRV9MRU5HVEg9MUsKKworTUFZQkVfRkxNQVA9MQorCisjIEFib3ZlIGlzIGEg Y29weSBvZiB0aGUgY29udGVudHMgb2YgYXZyeG1lZ2E0LnNoCisKK0hBVkVfRkxNQVA9MQor Uk9EQVRBX1ZNQT0weGEwMDAwMAorUk9EQVRBX0xFTkdUSD0zMksKK1JPREFUQV9MRFNfT0ZG U0VUPTB4ODAwMAorUk9EQVRBX0ZMQVNIX1NUQVJUPTk2SworRkxNQVBfTUFTSz0weDMKZGlm ZiAtLWdpdCBhL2xkL3NjcmlwdHRlbXBsL2F2ci5zYyBiL2xkL3NjcmlwdHRlbXBsL2F2ci5z YwppbmRleCA2MWNjY2ZjY2RlOC4uOWYyOTc3Y2ZkNmQgMTAwNjQ0Ci0tLSBhL2xkL3Njcmlw dHRlbXBsL2F2ci5zYworKysgYi9sZC9zY3JpcHR0ZW1wbC9hdnIuc2MKQEAgLTUsOSArNSw5 IEBACiAjIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4KIAogIyBST0RB VEFfUE1fT0ZGU0VUCi0jICAgICAgICAgSWYgZW1wdHksIC5yb2RhdGEgc2VjdGlvbnMgd2ls bCBiZSBwYXJ0IG9mIC5kYXRhLiAgVGhpcyBpcyBmb3IKLSMgICAgICAgICBkZXZpY2VzIHdo ZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgTEQqIGluc3RydWN0aW9ucyB0byByZWFk Ci0jICAgICAgICAgZnJvbSBmbGFzaC4KKyMgICAgICAgICBJZiBlbXB0eSBhbmQgbm90IEhB VkVfRkxNQVAsIC5yb2RhdGEgc2VjdGlvbnMgd2lsbCBiZSBwYXJ0IG9mIC5kYXRhLgorIyAg ICAgICAgIFRoaXMgaXMgZm9yIGRldmljZXMgd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRv IHVzZSBMRCogaW5zdHJ1Y3Rpb25zCisjICAgICAgICAgdG8gcmVhZCBmcm9tIGZsYXNoLgog IwogIyAgICAgICAgIElmIG5vbi1lbXB0eSwgLnJvZGF0YSBpcyBub3QgcGFydCBvZiAuZGF0 YSBhbmQgdGhlIC5yb2RhdGEKICMgICAgICAgICBvYmplY3RzIGFyZSBhc3NpZ25lZCBhZGRy ZXNzZXMgYXQgYW4gb2ZmZXN0IG9mIFJPREFUQV9QTV9PRkZTRVQuCkBAIC0xNSw2ICsxNSw2 MCBAQAogIyAgICAgICAgIExEKiBpbnN0cnVjdGlvbnMsIHByb3ZpZGVkIHRoZSBhZGRyZXNz ZXMgYXJlIG9mZnNldCBieQogIyAgICAgICAgIF9fUk9EQVRBX1BNX09GRlNFVF9fICh3aGlj aCBkZWZhdWx0cyB0byBST0RBVEFfUE1fT0ZGU0VUKS4KIAorIyBIQVZFX0ZMTUFQCisjICAg ICAgICAgVGhlIC5yb2RhdGEgc2VjdGlvbiBpcyBsb2NhdGVkIGluIHByb2dyYW0gbWVtb3J5 LiBEZXZpY2VzIGZyb20KKyMgICAgICAgICB0aGUgQVZSNjQqIGFuZCBBVlIxMjgqIGZhbWls aWVzIChmcm9tIGF2cnhtZWdhMiBhbmQgYXZyeG1lZ2E0KQorIyAgICAgICAgIHNlZSBhIDMy ayBzZWdtZW50IG9mIHRoZWlyIHByb2dyYW0gbWVtb3J5IGluIHRoZWlyIFJBTSBhZGRyZXNz CisjICAgICAgICAgc3BhY2UuICBXaGljaCAzMmsgc2VnbWVudCBpcyB2aXNpYmxlIGlzIGRl dGVybWluZWQgYnkgdGhlCisjICAgICAgICAgYml0LWZpZWxkIE5WTUNUUkxfQ1RSTEIuRkxN QVAuCisjICAgICAgICAgT3V0cHV0IHNlY3Rpb24gLnJvZGF0YSBpcyBwbGFjZWQgaW4gTUVN T1JZIHJlZ2lvbiByb2RhdGEuCisjICAgICAgICAgVGhlIExNQSBvZiB0aGUgLnJvZGF0YSBz ZWN0aW9uIGNhbiBiZSBzZXQgYnkgbWVhbnMgb2Y6CisjICAgICAgICAgKiBfX2ZsbWFwIHNw ZWNpZmllcyB3aGljaCAzMmsgYmxvY2sgaXMgdmlzaWJsZSBpbiBSQU0uCisjICAgICAgICAg KiBfX1JPREFUQV9GTEFTSF9TVEFSVF9fIHNwZWNpZmllcyB0aGUgYnl0ZSBhZGRyZXNzIG9m IHRoZQorIyAgICAgICAgICAgcm9kYXRhIExNQSBhbmQgaXMgdXNlZCBpZiBfX2ZsbWFwIGlz IHVuZGVmaW5lZC4KKyMgICAgICAgICAqIFdoZW4gX19mbG1hcCBhbmQgX19ST0RBVEFfRkxB U0hfU1RBUlRfXyBhcmUgdW5kZWZpbmVkLCB0aGVuIGFuCisjICAgICAgICAgICBlbXVsYXRp b24tc3BlY2lmaWMgZGVmYXVsdCBpcyB1c2VkICh0aGUgbGFzdCAzMmsgYmxvY2spLgorCisj IE1BWUJFX0ZMTUFQCisjICAgICAgICAgRm9yIGRldmljZXMgZnJvbSBhdnJ4bWVnYTIgYW5k IGF2cnhtZWdhNDogVGhlIHVzZXIgY2FuIGNob3NlIHdoZXRoZXIKKyMgICAgICAgICBvciBu b3QgLnJvZGF0YSBpcyBsb2NhdGVkIGluIGZsYXNoIChpZiBIQVZFX0ZMTUFQKSBvciBsb2Nh dGVkIGluCisjICAgICAgICAgaW4gUkFNIChpZiBub3QgSEFWRV9GTE1BUCBieSBtZWFucyBv ZiAtbXJvZGF0YS1pbi1yYW0pLiAgVGhpcyBpcworIyAgICAgICAgIGFjaGlldmVkIGJ5IG5l dyBlbXVsYXRpb25zIGF2cnhtZWdhMl9mbG1hcCBhbmQgYXZyeG1lZ2E0X2ZsbWFwIHRoYXQK KyMgICAgICAgICBhcmUgc2VsZWN0ZWQgYnkgY29tcGlsZXIgb3B0aW9uIC1tbm8tcm9kYXRh LWluLXJhbS4KKyMKKyMgICAgICAgICBJbiBvcmRlciB0byBmYWNpbGl0YXRlIGluaXRpYWxp emF0aW9uIG9mIE5WTUNUUkxfQ1RSTEIuRkxNQVAgaW4KKyMgICAgICAgICB0aGUgc3RhcnR1 cCBjb2RlIGlycmVzcGVjdGl2ZSBvZiBIQVZFX0ZMTUFQLCB0aGUgZm9sbHdpbmcgc3ltYm9s cworIyAgICAgICAgIGFyZSBkZWZpbmVkIGluIG9yZGVyIHRvIGNvbW11bmljYXRlIHdpdGgg dGhlIHN0YXJ0dXAgY29kZS4KKyMgICAgICAgICBOb3RpY2UgdGhhdCB0aGUgaGFyZHdhcmUg ZGVmYXVsdCBmb3IgRkxNQVAgaXMgdGhlIGxhc3QgMzJrIGJsb2NrLAorIyAgICAgICAgIHNv IHRoYXQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24gb2YgRkxNQVAgaXMgb25seSByZXF1aXJl ZCB3aGVuIHRoZQorIyAgICAgICAgIHVzZXIgd2FudHMgdG8gZGV2aWF0ZSBmcm9tIHRoZSBk ZWZhdWxzLgorIworIyAgICAgICAgIF9fZmxtYXAgPSBIQVZFX0ZMTUFQCisjICAgICAgICAg ICAgICAgICAgID8gZ2l2ZW4gYnkgX19mbG1hcCByZXNwLiBfX1JPREFUQV9GTEFTSF9TVEFS VF9fID4+IDE1CisjICAgICAgICAgICAgICAgICAgIDogMDsKKyMKKyMgICAgICAgICBfX2Zs bWFwX2xzbDQgPSBfX2ZsbWFwIDw8IDQ7CisjCisjICAgICAgICAgX19mbG1hcF9pbml0X2xh YmVsID0gSEFWRV9GTE1BUAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX19m bG1hcF9pbml0X3N0YXJ0CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX2Zs bWFwX25vaW5pdF9zdGFydDsKKyMgICAgICAgICAgICAgU3VwcG9zZWQgdG8gYmUgdXNlZCBh cyBhIGp1bXAgdGFyZ2V0IGZvciBSSk1QIHNvIHRoYXQgdGhlIGNvZGUKKyMgICAgICAgICAg ICAgY2FuIGluaXRpYWxpemUgRkxNQVAgLyBza2lwIGluaXRpYWxpemF0aW9uIG9mIEZMTUFQ IGRlcGVuZGluZworIyAgICAgICAgICAgICBvbiB0aGUgY2hvc2VuIGVtdWxhdGlvbiwgYW5k IHdpdGhvdXQgdGhlIG5lZWQgdG8gc3VwcG9ydCB0d28gY29kZQorIyAgICAgICAgICAgICB2 ZXJzaW9ucyBvZiBjcnQ8bWN1Pi5vIGZvciB0aGUgdHdvIHBvc3NibGUgZW11bGF0aW9ucy4K KyMKKyMgICAgICAgICBfX2RvX2luaXRfZmxtYXAgPSBIQVZFX0ZMTUFQID8gMSA6IDA7Cisj ICAgICAgICAgICAgIFdoZXRoZXIgb3Igbm90IEZMTUFQIGlzIHN1cHBvc2VkIHRvIGJlIGlu aXRpYWxpemVkIGFjY29yZGluZworIyAgICAgICAgICAgICB0bywgYW5kIGZvciB0aGUgcHVy cG9zZSBvZiwgLnJvZGF0YSBpbiBmbGFzaC4KKyMKKyMgICAgICAgICBBcGFydCBmcm9tIHRo YXQsIHRoZSBjb21waWxlciAoZGV2aWNlLXNwZWNzIGFjdHVhbGx5KSBkZWZpbmVzIHRoZQor IyAgICAgICAgIGZvbGxvd2luZyBtYWNyb3M6CisjCisjICAgICAgICAgX19BVlJfSEFWRV9G TE1BUF9fCisjICAgICAgICAgICAgIERlZmluZWQgaWYgYSBkZXZpY2UgaGFzIHRoZSBOVk1D VFJMX0NUUkxCLkZMTUFQIGJpdGZpZWxkCisjICAgICAgICAgICAgICpBTkQqIGlmIGl0J3Mg dW5rbm93biBhdCBjb21waWxlLXRpbWUgLyBhc3NlbWJsZXItdGltZSB3aGV0aGVyCisjICAg ICAgICAgICAgIGVtdWxhdGlvbiBhdnJ4bWVnYSogaXMgdXNlZCBvciBhdnJ4bWVnYSpfZmxt YXAuCisKIGNhdCA8PEVPRgogLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKQEAgLTM3LDYgKzkxLDEwIEBAIF9fTE9DS19SRUdJ T05fTEVOR1RIX18gPSBERUZJTkVEKF9fTE9DS19SRUdJT05fTEVOR1RIX18pID8gX19MT0NL X1JFR0lPTl9MRU5HVEhfCiBfX1NJR05BVFVSRV9SRUdJT05fTEVOR1RIX18gPSBERUZJTkVE KF9fU0lHTkFUVVJFX1JFR0lPTl9MRU5HVEhfXykgPyBfX1NJR05BVFVSRV9SRUdJT05fTEVO R1RIX18gOiAkU0lHTkFUVVJFX0xFTkdUSDsKICR7VVNFUl9TSUdOQVRVUkVfTEVOR1RIK19f VVNFUl9TSUdOQVRVUkVfUkVHSU9OX0xFTkdUSF9fID0gREVGSU5FRChfX1VTRVJfU0lHTkFU VVJFX1JFR0lPTl9MRU5HVEhfXykgPyBfX1VTRVJfU0lHTkFUVVJFX1JFR0lPTl9MRU5HVEhf XyA6ICRVU0VSX1NJR05BVFVSRV9MRU5HVEg7fQogJHtST0RBVEFfUE1fT0ZGU0VUK19fUk9E QVRBX1BNX09GRlNFVF9fID0gREVGSU5FRChfX1JPREFUQV9QTV9PRkZTRVRfXykgPyBfX1JP REFUQV9QTV9PRkZTRVRfXyA6ICRST0RBVEFfUE1fT0ZGU0VUO30KKyR7SEFWRV9GTE1BUCtf X1JPREFUQV9WTUFfXyA9ICR7Uk9EQVRBX1ZNQX07fQorJHtIQVZFX0ZMTUFQK19fUk9EQVRB X0xEU19PRkZTRVRfXyA9IERFRklORUQoX19ST0RBVEFfTERTX09GRlNFVF9fKSA/IF9fUk9E QVRBX0xEU19PRkZTRVRfXyA6ICR7Uk9EQVRBX0xEU19PRkZTRVR9O30KKyR7SEFWRV9GTE1B UCtfX1JPREFUQV9SRUdJT05fTEVOR1RIX18gPSBERUZJTkVEKF9fUk9EQVRBX1JFR0lPTl9M RU5HVEhfXykgPyBfX1JPREFUQV9SRUdJT05fTEVOR1RIX18gOiAke1JPREFUQV9MRU5HVEh9 O30KKyR7SEFWRV9GTE1BUCtfX1JPREFUQV9PUklHSU5fXyA9IF9fUk9EQVRBX1ZNQV9fICsg X19ST0RBVEFfTERTX09GRlNFVF9fO30KIE1FTU9SWQogewogICB0ZXh0ICAgKHJ4KSAgIDog T1JJR0lOID0gMCwgTEVOR1RIID0gX19URVhUX1JFR0lPTl9MRU5HVEhfXwpAQCAtNDYsNiAr MTA0LDcgQEAgJHtFRVBST01fTEVOR1RIKyAgZWVwcm9tIChydyF4KSA6IE9SSUdJTiA9IDB4 ODEwMDAwLCBMRU5HVEggPSBfX0VFUFJPTV9SRUdJT05fTEUKICAgbG9jayAgICAgIChydyF4 KSA6IE9SSUdJTiA9IDB4ODMwMDAwLCBMRU5HVEggPSBfX0xPQ0tfUkVHSU9OX0xFTkdUSF9f CiAgIHNpZ25hdHVyZSAocncheCkgOiBPUklHSU4gPSAweDg0MDAwMCwgTEVOR1RIID0gX19T SUdOQVRVUkVfUkVHSU9OX0xFTkdUSF9fCiAke1VTRVJfU0lHTkFUVVJFX0xFTkdUSCsgIHVz ZXJfc2lnbmF0dXJlcyAocncheCkgOiBPUklHSU4gPSAweDg1MDAwMCwgTEVOR1RIID0gX19V U0VSX1NJR05BVFVSRV9SRUdJT05fTEVOR1RIX199Ciske0hBVkVfRkxNQVArICByb2RhdGEg KHIheCkgOiBPUklHSU4gPSBfX1JPREFUQV9PUklHSU5fXywgTEVOR1RIID0gX19ST0RBVEFf UkVHSU9OX0xFTkdUSF9ffQogfQogRU9GCiAKQEAgLTI0Myw3ICszMDIsNyBAQCBFT0YKICMg bmVlZCAucm9kYXRhIHRvIGJlIHBhcnQgb2YgLmRhdGEgYmVjYXVzZSB0aGUgY29tcGlsZXIg d2lsbCB1c2UgTEQqCiAjIGluc3RydWN0aW9ucyBhbmQgTEQqIGNhbm5vdCBhY2Nlc3MgZmxh c2guCiAKLWlmIHRlc3QgLXogIiRST0RBVEFfUE1fT0ZGU0VUIiAmJiB0ZXN0IC1uICIke1JF TE9DQVRJTkd9IjsgdGhlbgoraWYgdGVzdCAteiAiJFJPREFUQV9QTV9PRkZTRVQiICYmIHRl c3QgLXogIiR7SEFWRV9GTE1BUH0iICYmIHRlc3QgLW4gIiR7UkVMT0NBVElOR30iOyB0aGVu CiAgICAgY2F0IDw8RU9GCiAgICAgKigucm9kYXRhKSAgLyogV2UgbmVlZCB0byBpbmNsdWRl IC5yb2RhdGEgaGVyZSBpZiBnY2MgaXMgdXNlZCAqLwogICAgICooLnJvZGF0YSopIC8qIHdp dGggLWZkYXRhLXNlY3Rpb25zLiAgKi8KQEAgLTI4MCw2ICszMzksNTggQEAgY2F0IDw8RU9G CiAgIH0gJHtSRUxPQ0FUSU5HKyA+IGRhdGF9CiBFT0YKIAorIyBEZXZpY2VzIGxpa2UgQVZS MTI4REEzMiBhbmQgQVZSNjREQTMyIHNlZSBhIDMyIEtpQiBibG9jayBvZiB0aGVpciBwcm9n cmFtCisjIG1lbW9yeSBhdCAweDgwMDAgKFJPREFUQV9MRFNfT0ZGU0VUKS4gIFdoaWNoIHBv cnRpb24gd2lsbCBiZSBkZXRlcm1pbmVkIGJ5CisjIGJpdGZpZWxkIE5WTUNUUkxfQ1RSTEIu RkxNQVAuCisKK2lmIHRlc3QgLW4gIiR7TUFZQkVfRkxNQVB9IiAmJiB0ZXN0IC1uICIke1JF TE9DQVRJTkd9IjsgdGhlbgorICAgIGNhdCA8PEVPRgorCitfX2RvX2luaXRfZmxtYXAgPSAk e0hBVkVfRkxNQVAtMH07CisKK0VPRgorZmkKKworaWYgdGVzdCAteiAiJHtIQVZFX0ZMTUFQ fSIgJiYgdGVzdCAtbiAiJHtSRUxPQ0FUSU5HfSI7IHRoZW4KKyAgICBjYXQgPDxFT0YKKwor UFJPVklERSAoX19mbG1hcF9pbml0X2xhYmVsID0gREVGSU5FRChfX2ZsbWFwX25vaW5pdF9z dGFydCkgPyBfX2ZsbWFwX25vaW5pdF9zdGFydCA6IDApIDsKK1BST1ZJREUgKF9fZmxtYXAg PSBERUZJTkVEKF9fZmxtYXApID8gX19mbG1hcCA6IDApIDsKK1BST1ZJREUgKF9fZmxtYXBf bHNsNCA9IF9fZmxtYXAgPDwgNCkgOworCitFT0YKK2ZpCisKK2lmIHRlc3QgLW4gIiR7SEFW RV9GTE1BUH0iOyB0aGVuCisgICAgY2F0IDw8RU9GCisKKyR7UkVMT0NBVElORysKK1BST1ZJ REUgKF9fZmxtYXBfaW5pdF9sYWJlbCA9IERFRklORUQoX19mbG1hcF9pbml0X3N0YXJ0KSA/ IF9fZmxtYXBfaW5pdF9zdGFydCA6IDApIDsKKy8qIFVzZXIgY2FuIHNwZWNpZnkgcG9zaXRp b24gb2YgLnJvZGF0YSBpbiBmbGFzaCAoTE1BKSBieSBzdXBwbHlpbmcKKyAgIF9fUk9EQVRB X0ZMQVNIX1NUQVJUX18gb3IgX19mbG1hcCwgd2hlcmUgX19mbG1hcCB0YWtlcyBwcmVjZWRl bmNlLiAqLworX19ST0RBVEFfRkxBU0hfU1RBUlRfXyA9IERFRklORUQoX19mbG1hcCkKKyAg ID8gX19mbG1hcCAqIDMySworICAgOiBERUZJTkVEKF9fUk9EQVRBX0ZMQVNIX1NUQVJUX18p ID8gX19ST0RBVEFfRkxBU0hfU1RBUlRfXyA6ICR7Uk9EQVRBX0ZMQVNIX1NUQVJUfTsKK0FT U0VSVCAoX19ST0RBVEFfRkxBU0hfU1RBUlRfXyAlIDMySyA9PSAwLCBcIl9fUk9EQVRBX0ZM QVNIX1NUQVJUX18gbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIEtpQlwiKQorX19mbG1hcCA9 ICR7RkxNQVBfTUFTS30gJiAoREVGSU5FRChfX2ZsbWFwKSA/IF9fZmxtYXAgOiBfX1JPREFU QV9GTEFTSF9TVEFSVF9fID4+IDE1KTsKK19fUk9EQVRBX0ZMQVNIX1NUQVJUX18gPSBfX2Zs bWFwIDw8IDE1OworX19yb2RhdGFfbG9hZF9zdGFydCA9IE1BWCAoX19kYXRhX2xvYWRfZW5k LCBfX1JPREFUQV9GTEFTSF9TVEFSVF9fKTsKK1BST1ZJREUgKF9fZmxtYXBfbHNsNCA9IF9f ZmxtYXAgPDwgNCkgOworX19yb2RhdGFfc3RhcnQgPSBfX1JPREFUQV9PUklHSU5fXyArIF9f cm9kYXRhX2xvYWRfc3RhcnQgLSBfX1JPREFUQV9GTEFTSF9TVEFSVF9fO30KKworICAucm9k YXRhICR7UkVMT0NBVElORysgX19yb2RhdGFfc3RhcnR9ICR7UkVMT0NBVElORy0wfSA6ICR7 UkVMT0NBVElORysgQVQgKF9fcm9kYXRhX2xvYWRfc3RhcnQpfQorICB7CisgICAgKigucm9k YXRhKQorICAgICR7UkVMT0NBVElORysgKigucm9kYXRhKil9CisgICAgJHtSRUxPQ0FUSU5H KyAqKC5nbnUubGlua29uY2UuciopfQorICAgICR7UkVMT0NBVElORysgX19yb2RhdGFfZW5k ID0gQUJTT0xVVEUoLikgO30KKyAgfSAke1JFTE9DQVRJTkcrID4gcm9kYXRhfQorCiske1JF TE9DQVRJTkcrIF9fcm9kYXRhX2xvYWRfZW5kID0gX19yb2RhdGFfbG9hZF9zdGFydCArIF9f cm9kYXRhX2VuZCAtIF9fcm9kYXRhX3N0YXJ0O30KKworRU9GCitmaQorCiBpZiB0ZXN0IC1u ICIke0VFUFJPTV9MRU5HVEh9IjsgdGhlbgogY2F0IDw8RU9GCiAK --------------1H7H04JycsUnElc0Q0KLOe50--