<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://sourceware.org/bugzilla/bugzilla.dtd">

<bugzilla version="4.0.10"
          urlbase="http://sourceware.org/bugzilla/"
          
          maintainer="overseers@sourceware.org"
>

    <bug>
          <bug_id>11539</bug_id>
          
          <creation_ts>2010-04-26 04:36:00 +0000</creation_ts>
          <short_desc>ld --gc-sections should work for PE-COFF on MinGW</short_desc>
          <delta_ts>2012-08-14 15:45:09 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>binutils</product>
          <component>ld</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrea Gray">andrea.e.gray</reporter>
          <assigned_to>unassigned</assigned_to>
          <cc>bug-binutils</cc>
    
    <cc>gillou.ray</cc>
    
    <cc>hjl.tools</cc>
    
    <cc>ktietz70</cc>
    
    <cc>nickc</cc>
    
    <cc>patrick.hanevold</cc>
    
    <cc>realnc</cc>
    
    <cc>vanboxem.ruben</cc>
    
    <cc>xunxun1982</cc>
          <cf_gcchost>*-*-mingw32</cf_gcchost>
          <cf_gcctarget>*-*-mingw32</cf_gcctarget>
          <cf_gccbuild></cf_gccbuild>
          

      

      

      

          <long_desc isprivate="0">
            <commentid>42854</commentid>
            <who name="Andrea Gray">andrea.e.gray</who>
            <bug_when>2010-04-26 04:36:01 +0000</bug_when>
            <thetext>ld --gc-sections should work for PE-COFF on MinGW.

MSVC has supported this feature (under the name of /OPT:REF) since time began. 
As a result, GCC generates significantly larger executables than MSVC.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>47458</commentid>
              <attachid>5301</attachid>
            <who name="">sourceware</who>
            <bug_when>2011-03-12 14:21:54 +0000</bug_when>
            <thetext>Created attachment 5301
implement --gc-sections for coff (first shot)

- Mostly a copy and paste from elflink.c to cofflink.c
- This is only a first try; however, it reduces the size of a statically compiled wxWidgets app from 5.1 MB to 3.8 MB, so it does something useful for me; YMMV
- I’m by far no COFF export; some linker guru will need to review the patch and comment on all the &quot;FIXME&quot; comments
- I have not yet tried to generate a DLL with gc enabled
- Somehow the entry symbol does not get into _bfd_coff_gc_keep so no gc mark root is available; as a workaround, &quot;-Wl,--undefined=_WinMainCRTStartup&quot; should be used</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>48699</commentid>
            <who name="">vanboxem.ruben</who>
            <bug_when>2011-05-14 10:45:47 +0000</bug_when>
            <thetext>I changed the Host/Target/Build to include x86_64 and removed the Build specification, because it&apos;s not relevant.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>49331</commentid>
            <who name="Nikos Chantziaras">realnc</who>
            <bug_when>2011-06-16 00:08:17 +0000</bug_when>
            <thetext>This is very useful. A static Qt binary gets from 12MB to 8MB with this.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>49604</commentid>
            <who name="Nikos Chantziaras">realnc</who>
            <bug_when>2011-07-01 00:31:11 +0000</bug_when>
            <thetext>I found problem with the patch: it will remove the .rsrc section too.  This section should be kept, as it contains the application icon, version information, etc.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>50882</commentid>
              <attachid>5960</attachid>
            <who name="Shinji Igarashi">shinji.igarashi</who>
            <bug_when>2011-10-05 03:42:15 +0000</bug_when>
            <thetext>Created attachment 5960
Add KEEPs to the linker script template

Very nice. The patch saves me from some boring works splitting source files per function.

- entry symbol
I think &quot;-Wl,-e&quot; works and is better than &quot;-Wl,--undefined&quot; in this case.

For PE-COFF targets, the default entry symbol is used according to the subsystem,
unless explicitly specified by a command-line or a linker script.
And the code setting the gc root (search gc_sym_list in ldlang.c) ignores the linker&apos;s default.
MinGW-GCC&apos;s default specs file gives -e option to the linker only if the
generating file is a DLL, so for now the linker&apos;s default is used for EXE
unless you specify the explicit one.

I don&apos;t know whether ignoring the default entry symbol makes sense.
Anyway the current manual says --gc-sections requires -Wl,-e or -Wl,-u
or using KEEPs in a linker script to keep sections.

- .rsrc section
Default linker scripts(generated from pe.sc) lack KEEP commands.
The attached patch may fix it.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>51304</commentid>
            <who name="xunxun">xunxun1982</who>
            <bug_when>2011-10-24 09:28:59 +0000</bug_when>
            <thetext>It seems to dll build can&apos;t use the patches, even if using -Wl,--undefined=_DllMainCRTStartup. Though the dll is generated successfully, we can&apos;t use other exes to link the dll (running the exe can&apos;t show anything). 
How do we make the patches generate the dll correctly?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>51485</commentid>
            <who name="xunxun">xunxun1982</who>
            <bug_when>2011-10-31 21:02:31 +0000</bug_when>
            <thetext>I try to keep eh_frame section, then the dll build can work (I test it in wxWidgets 2.8.12 Release Mono Unicode Dll).
So we should find some methods to keep some sections of eh_frame.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>56880</commentid>
            <who name="Nick Clifton">nickc</who>
            <bug_when>2012-08-14 15:45:09 +0000</bug_when>
            <thetext>test</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
              isurl="0"
          >
            <attachid>5301</attachid>
            <date>2011-03-12 14:21:00 +0000</date>
            <delta_ts>2011-03-12 14:21:54 +0000</delta_ts>
            <desc>implement --gc-sections for coff (first shot)</desc>
            <filename>bfd-coff-gc.diff</filename>
            <type>text/plain</type>
            <size>15091</size>
            <attacher>sourceware</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIgYmludXRpbHMtMi4yMC9iZmQvY29mZmNvZGUuaCBiaW51dGlscy0yLjIwLmNvZmYt
Z2MvYmZkL2NvZmZjb2RlLmgKLS0tIGJpbnV0aWxzLTIuMjAvYmZkL2NvZmZjb2RlLmgJMjAwOS0w
OS0xMCAxMzo0NzoxMi4wMDAwMDAwMDAgKzAyMDAKKysrIGJpbnV0aWxzLTIuMjAuY29mZi1nYy9i
ZmQvY29mZmNvZGUuaAkyMDExLTAzLTExIDEyOjM5OjM1LjgwMTEwOTI0NyArMDEwMApAQCAtNTU5
Nyw3ICs1NTk3LDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIGNvZmZfYmZkX2djX3NlY3Rpb25zCi0j
ZGVmaW5lIGNvZmZfYmZkX2djX3NlY3Rpb25zCQkgICAgYmZkX2dlbmVyaWNfZ2Nfc2VjdGlvbnMK
KyNkZWZpbmUgY29mZl9iZmRfZ2Nfc2VjdGlvbnMJCSAgICBiZmRfY29mZl9nY19zZWN0aW9ucwog
I2VuZGlmCiAKICNpZm5kZWYgY29mZl9iZmRfbWVyZ2Vfc2VjdGlvbnMKZGlmZiAtdXIgYmludXRp
bHMtMi4yMC9iZmQvY29mZmxpbmsuYyBiaW51dGlscy0yLjIwLmNvZmYtZ2MvYmZkL2NvZmZsaW5r
LmMKLS0tIGJpbnV0aWxzLTIuMjAvYmZkL2NvZmZsaW5rLmMJMjAwOS0xMC0wNiAxMjo1Nzo1My4w
MDAwMDAwMDAgKzAyMDAKKysrIGJpbnV0aWxzLTIuMjAuY29mZi1nYy9iZmQvY29mZmxpbmsuYwky
MDExLTAzLTExIDEzOjMzOjI1LjM5MzEwODY2OSArMDEwMApAQCAtMzA1NiwzICszMDU2LDQ1MSBA
QAogICAgIH0KICAgcmV0dXJuIFRSVUU7CiB9CisKKy8qIEluaXRpYWxpemUgQ09PS0lFIGZvciBp
bnB1dCBiZmQgQUJGRC4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgoraW5pdF9yZWxvY19jb29r
aWUgKHN0cnVjdCBjb2ZmX3JlbG9jX2Nvb2tpZSAqY29va2llLAorCQkgICBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqaW5mbyBBVFRSSUJVVEVfVU5VU0VELCBiZmQgKmFiZmQpCit7CisgIGNvbnN0IGJm
ZF9jb2ZmX2JhY2tlbmRfZGF0YSAqYmVkOworCisgIGJlZCA9IGNvZmZfYmFja2VuZF9pbmZvIChh
YmZkKTsKKworICBjb29raWUtPmFiZmQgPSBhYmZkOworICBjb29raWUtPnN5bV9oYXNoZXMgPSBv
YmpfY29mZl9zeW1faGFzaGVzIChhYmZkKTsKKworICAvKiBGSVhNRTogU29tZXRpbWVzIHRoZSBz
eW1ib2wgdGFibGUgZG9lcyBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQgaGVyZTsKKyAgICAgaXMg
dGhpcyB0aGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIGl0PyAqLworICBiZmRfY29mZl9zbHVycF9z
eW1ib2xfdGFibGUoYWJmZCk7CisKKyAgY29va2llLT5zeW1ib2xzID0gb2JqX3N5bWJvbHMoYWJm
ZCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIEZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQg
YnkgaW5pdF9yZWxvY19jb29raWUsIGlmIGFwcHJvcHJpYXRlLiAgKi8KKworc3RhdGljIHZvaWQK
K2ZpbmlfcmVsb2NfY29va2llIChzdHJ1Y3QgY29mZl9yZWxvY19jb29raWUgKmNvb2tpZSBBVFRS
SUJVVEVfVU5VU0VELCBiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgLyogRklYTUU6
IE5vdGhpbmcgdG8gZG8gZm9yIHRoZSBDT0ZGIGNhc2UgaXQgc2VlbXM/ICovCisjaWYgMAorICBj
b2ZmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHI7CisKKyAgc3ltdGFiX2hkciA9ICZjb2ZmX3Rk
YXRhIChhYmZkKS0+c3ltdGFiX2hkcjsKKyAgaWYgKGNvb2tpZS0+bG9jc3ltcyAhPSBOVUxMCisg
ICAgICAmJiBzeW10YWJfaGRyLT5jb250ZW50cyAhPSAodW5zaWduZWQgY2hhciAqKSBjb29raWUt
PmxvY3N5bXMpCisgICAgZnJlZSAoY29va2llLT5sb2NzeW1zKTsKKyNlbmRpZgorfQorCisKKy8q
IEluaXRpYWxpemUgdGhlIHJlbG9jYXRpb24gaW5mb3JtYXRpb24gaW4gQ09PS0lFIGZvciBpbnB1
dCBzZWN0aW9uIFNFQworICAgb2YgaW5wdXQgYmZkIEFCRkQuICAqLworCitzdGF0aWMgYmZkX2Jv
b2xlYW4KK2luaXRfcmVsb2NfY29va2llX3JlbHMgKHN0cnVjdCBjb2ZmX3JlbG9jX2Nvb2tpZSAq
Y29va2llLAorCQkJc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRCwg
YmZkICphYmZkLAorCQkJYXNlY3Rpb24gKnNlYykKK3sKKyAgY29uc3QgYmZkX2NvZmZfYmFja2Vu
ZF9kYXRhICpiZWQ7CisKKyAgaWYgKHNlYy0+cmVsb2NfY291bnQgPT0gMCkKKyAgICB7CisgICAg
ICBjb29raWUtPnJlbHMgPSBOVUxMOworICAgICAgY29va2llLT5yZWxlbmQgPSBOVUxMOworICAg
IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGJlZCA9IGNvZmZfYmFja2VuZF9pbmZvIChhYmZkKTsK
KyAgICAgIGNvb2tpZS0+cmVscyA9IF9iZmRfY29mZl9yZWFkX2ludGVybmFsX3JlbG9jcyAoYWJm
ZCwgc2VjLCBGQUxTRSwgTlVMTCwgMCwgTlVMTCk7CisgICAgICBpZiAoY29va2llLT5yZWxzID09
IE5VTEwpCisJcmV0dXJuIEZBTFNFOworICAgICAgY29va2llLT5yZWwgPSBjb29raWUtPnJlbHM7
CisgICAgICBjb29raWUtPnJlbGVuZCA9IChjb29raWUtPnJlbHMgKyBzZWMtPnJlbG9jX2NvdW50
KTsKKyAgICB9CisgIGNvb2tpZS0+cmVsID0gY29va2llLT5yZWxzOworICByZXR1cm4gVFJVRTsK
K30KKworLyogRnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBieSBpbml0X3JlbG9jX2Nvb2tpZV9y
ZWxzLAorICAgaWYgYXBwcm9wcmlhdGUuICAqLworCitzdGF0aWMgdm9pZAorZmluaV9yZWxvY19j
b29raWVfcmVscyAoc3RydWN0IGNvZmZfcmVsb2NfY29va2llICpjb29raWUsCisJCQlhc2VjdGlv
biAqc2VjKQoreworICBpZiAoY29va2llLT5yZWxzICYmIGNvZmZfc2VjdGlvbl9kYXRhIChOVUxM
LCBzZWMpLT5yZWxvY3MgIT0gY29va2llLT5yZWxzKQorICAgIGZyZWUgKGNvb2tpZS0+cmVscyk7
Cit9CisKKy8qIEluaXRpYWxpemUgdGhlIHdob2xlIG9mIENPT0tJRSBmb3IgaW5wdXQgc2VjdGlv
biBTRUMuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2luaXRfcmVsb2NfY29va2llX2Zvcl9z
ZWN0aW9uIChzdHJ1Y3QgY29mZl9yZWxvY19jb29raWUgKmNvb2tpZSwKKwkJCSAgICAgICBzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkJCSAgICAgICBhc2VjdGlvbiAqc2VjKSAKK3sKKyAg
aWYgKCFpbml0X3JlbG9jX2Nvb2tpZSAoY29va2llLCBpbmZvLCBzZWMtPm93bmVyKSkKKyAgICBn
b3RvIGVycm9yMTsKKyAgaWYgKCFpbml0X3JlbG9jX2Nvb2tpZV9yZWxzIChjb29raWUsIGluZm8s
IHNlYy0+b3duZXIsIHNlYykpCisgICAgZ290byBlcnJvcjI7CisgIHJldHVybiBUUlVFOworCisg
ZXJyb3IyOgorICBmaW5pX3JlbG9jX2Nvb2tpZSAoY29va2llLCBzZWMtPm93bmVyKTsKKyBlcnJv
cjE6CisgIHJldHVybiBGQUxTRTsKK30KKworLyogRnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBi
eSBpbml0X3JlbG9jX2Nvb2tpZV9mb3Jfc2VjdGlvbiwKKyAgIGlmIGFwcHJvcHJpYXRlLiAgKi8K
Kworc3RhdGljIHZvaWQKK2ZpbmlfcmVsb2NfY29va2llX2Zvcl9zZWN0aW9uIChzdHJ1Y3QgY29m
Zl9yZWxvY19jb29raWUgKmNvb2tpZSwKKwkJCSAgICAgICBhc2VjdGlvbiAqc2VjKQoreworICBm
aW5pX3JlbG9jX2Nvb2tpZV9yZWxzIChjb29raWUsIHNlYyk7CisgIGZpbmlfcmVsb2NfY29va2ll
IChjb29raWUsIHNlYy0+b3duZXIpOworfQorCitzdGF0aWMgYXNlY3Rpb24gKgorX2JmZF9jb2Zm
X2djX21hcmtfaG9vayAoYXNlY3Rpb24gKnNlYywKKwkJICAgICAgIHN0cnVjdCBiZmRfbGlua19p
bmZvICppbmZvIEFUVFJJQlVURV9VTlVTRUQsCisJCSAgICAgICBzdHJ1Y3QgaW50ZXJuYWxfcmVs
b2MgKnJlbCBBVFRSSUJVVEVfVU5VU0VELAorCQkgICAgICAgc3RydWN0IGNvZmZfbGlua19oYXNo
X2VudHJ5ICpoLAorCQkgICAgICAgc3RydWN0IGludGVybmFsX3N5bWVudCAqc3ltKQoreworICBp
ZiAoaCAhPSBOVUxMKQorICAgIHsKKyAgICAgIHN3aXRjaCAoaC0+cm9vdC50eXBlKQorICAgICAg
ICB7CisgICAgICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZpbmVkOgorICAgICAgICBjYXNlIGJm
ZF9saW5rX2hhc2hfZGVmd2VhazoKKyAgICAgICAgICByZXR1cm4gaC0+cm9vdC51LmRlZi5zZWN0
aW9uOworCisgICAgICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9jb21tb246CisgICAgICAgICAgcmV0
dXJuIGgtPnJvb3QudS5jLnAtPnNlY3Rpb247CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHJldHVybiBjb2ZmX3NlY3Rp
b25fZnJvbV9iZmRfaW5kZXggKHNlYy0+b3duZXIsIHN5bS0+bl9zY251bSk7CisgICAgLyogRklY
TUU6IGlzIHRoZSBhYm92ZSBjb3JyZW50PyBlbGZsaW5rLmMgaGFzOgorICAgIHJldHVybiBiZmRf
c2VjdGlvbl9mcm9tX2VsZl9pbmRleCAoc2VjLT5vd25lciwgc3ltLT5zdF9zaG5keCk7ICovCisK
KyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIENPT0tJRS0+cmVsIGRlc2NyaWJlcyBhIHJlbG9jYXRp
b24gYWdhaW5zdCBzZWN0aW9uIFNFQywgd2hpY2ggaXMKKyAgIGEgc2VjdGlvbiB3ZSd2ZSBkZWNp
ZGVkIHRvIGtlZXAuICBSZXR1cm4gdGhlIHNlY3Rpb24gdGhhdCBjb250YWlucworICAgdGhlIHJl
bG9jYXRpb24gc3ltYm9sLCBvciBOVUxMIGlmIG5vIHNlY3Rpb24gY29udGFpbnMgaXQuICAqLwor
c3RhdGljIGFzZWN0aW9uICoKK19iZmRfY29mZl9nY19tYXJrX3JzZWMgKHN0cnVjdCBiZmRfbGlu
a19pbmZvICppbmZvLCBhc2VjdGlvbiAqc2VjLAorCQkgICAgICAgY29mZl9nY19tYXJrX2hvb2tf
Zm4gZ2NfbWFya19ob29rLAorCQkgICAgICAgc3RydWN0IGNvZmZfcmVsb2NfY29va2llICpjb29r
aWUpCit7CisgIHN0cnVjdCBjb2ZmX2xpbmtfaGFzaF9lbnRyeSAqaDsKKworICBoID0gY29va2ll
LT5zeW1faGFzaGVzW2Nvb2tpZS0+cmVsLT5yX3N5bW5keF07CisgIGlmIChoICE9IE5VTEwpIHsK
KyAgICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKKyAgICAg
ICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKKyAgICAgIGgg
PSAoc3RydWN0IGNvZmZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CisKKyAg
ICByZXR1cm4gKCpnY19tYXJrX2hvb2spIChzZWMsIGluZm8sIGNvb2tpZS0+cmVsLCBoLCBOVUxM
KTsKKyAgfQorCisgIHJldHVybiAoKmdjX21hcmtfaG9vaykgKHNlYywgaW5mbywgY29va2llLT5y
ZWwsIE5VTEwsCisJCQkgICYoY29va2llLT5zeW1ib2xzICsgb2JqX2NvbnZlcnQgKHNlYy0+b3du
ZXIpW2Nvb2tpZS0+cmVsLT5yX3N5bW5keF0pLT5uYXRpdmUtPnUuc3ltZW50KTsKK30KKworc3Rh
dGljCitiZmRfYm9vbGVhbgorX2JmZF9jb2ZmX2djX21hcmsgKHN0cnVjdCBiZmRfbGlua19pbmZv
ICppbmZvLAorCQkgIGFzZWN0aW9uICpzZWMsCisJCSAgY29mZl9nY19tYXJrX2hvb2tfZm4gZ2Nf
bWFya19ob29rKTsKKworLyogQ09PS0lFLT5yZWwgZGVzY3JpYmVzIGEgcmVsb2NhdGlvbiBhZ2Fp
bnN0IHNlY3Rpb24gU0VDLCB3aGljaCBpcworICAgYSBzZWN0aW9uIHdlJ3ZlIGRlY2lkZWQgdG8g
a2VlcC4gIE1hcmsgdGhlIHNlY3Rpb24gdGhhdCBjb250YWlucworICAgdGhlIHJlbG9jYXRpb24g
c3ltYm9sLiAgKi8KK3N0YXRpYyBiZmRfYm9vbGVhbgorX2JmZF9jb2ZmX2djX21hcmtfcmVsb2Mg
KHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJYXNlY3Rpb24gKnNlYywKKwkJCWNvZmZf
Z2NfbWFya19ob29rX2ZuIGdjX21hcmtfaG9vaywKKwkJCXN0cnVjdCBjb2ZmX3JlbG9jX2Nvb2tp
ZSAqY29va2llKQoreworICBhc2VjdGlvbiAqcnNlYzsKKworICByc2VjID0gX2JmZF9jb2ZmX2dj
X21hcmtfcnNlYyAoaW5mbywgc2VjLCBnY19tYXJrX2hvb2ssIGNvb2tpZSk7CisgIGlmIChyc2Vj
ICYmICFyc2VjLT5nY19tYXJrKQorICAgIHsKKyAgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKHJz
ZWMtPm93bmVyKSAhPSBiZmRfdGFyZ2V0X2NvZmZfZmxhdm91cikKKwlyc2VjLT5nY19tYXJrID0g
MTsKKyAgICAgIGVsc2UgaWYgKCFfYmZkX2NvZmZfZ2NfbWFyayAoaW5mbywgcnNlYywgZ2NfbWFy
a19ob29rKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorICByZXR1cm4gVFJVRTsKK30KKworLyog
VGhlIG1hcmsgcGhhc2Ugb2YgZ2FyYmFnZSBjb2xsZWN0aW9uLiAgRm9yIGEgZ2l2ZW4gc2VjdGlv
biwgbWFyaworICAgaXQgYW5kIGFueSBzZWN0aW9ucyBpbiB0aGlzIHNlY3Rpb24ncyBncm91cCwg
YW5kIGFsbCB0aGUgc2VjdGlvbnMKKyAgIHdoaWNoIGRlZmluZSBzeW1ib2xzIHRvIHdoaWNoIGl0
IHJlZmVycy4gICovCisKK3N0YXRpYworYmZkX2Jvb2xlYW4KK19iZmRfY29mZl9nY19tYXJrIChz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkJICBhc2VjdGlvbiAqc2VjLAorCQkgIGNvZmZf
Z2NfbWFya19ob29rX2ZuIGdjX21hcmtfaG9vaykKK3sKKyAgYmZkX2Jvb2xlYW4gcmV0OworCisg
IHNlYy0+Z2NfbWFyayA9IDE7CisKKyAgLyogRklYTUU6IGVsZmxpbmsuYyBoYXMgIk1hcmsgYWxs
IHRoZSBzZWN0aW9ucyBpbiB0aGUgZ3JvdXAuIgorICAgICBmdW5jdGlvbmFsaXR5IGhlcmUgLSBk
b2VzIENPRkYgcmVxdWlyZSBzb21ldGhpbmcgc2ltaWxhcj8gKi8KKworICAvKiBGSVhNRTogZWxm
bGluay5jIGhhcyBzb21lIGVoX2ZyYW1lIGhhbmRsaW5nIGhlcmUgLSBkb2VzIENPRkYKKyAgICAg
cmVxdWlyZSBzb21ldGhpbmcgc2ltaWxhcj8gKi8KKworICAvKiBMb29rIHRocm91Z2ggdGhlIHNl
Y3Rpb24gcmVsb2NzLiAgKi8KKyAgcmV0ID0gVFJVRTsKKyAgaWYgKChzZWMtPmZsYWdzICYgU0VD
X1JFTE9DKSAhPSAwCisgICAgICAmJiBzZWMtPnJlbG9jX2NvdW50ID4gMCkKKyAgICB7CisgICAg
ICBzdHJ1Y3QgY29mZl9yZWxvY19jb29raWUgY29va2llOworCisKKyAgICAgIGlmICghaW5pdF9y
ZWxvY19jb29raWVfZm9yX3NlY3Rpb24gKCZjb29raWUsIGluZm8sIHNlYykpCisgICAgICAgIHJl
dCA9IEZBTFNFOworICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgZm9yICg7IGNvb2tp
ZS5yZWwgPCBjb29raWUucmVsZW5kOyBjb29raWUucmVsKyspIHsKKyAgICAgICAgICAgIGlmICgh
X2JmZF9jb2ZmX2djX21hcmtfcmVsb2MgKGluZm8sIHNlYywgZ2NfbWFya19ob29rLCAmY29va2ll
KSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldCA9IEZBTFNFOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGZpbmlfcmVsb2NfY29va2llX2Zvcl9zZWN0aW9uICgmY29va2llLCBzZWMpOworICAgICAgICB9
CisKKyAgICB9CisKKyAgLyogRklYTUU6IGVsZmxpbmsuYyBoYXMgc29tZSBlaF9mcmFtZSBoYW5k
bGluZyBoZXJlIC0gZG9lcyBDT0ZGCisgICAgIHJlcXVpcmUgc29tZXRoaW5nIHNpbWlsYXI/ICov
CisKKyAgcmV0dXJuIHJldDsKK30KKworLyogU3dlZXAgc3ltYm9scyBpbiBzd2VwdCBzZWN0aW9u
cy4gIENhbGxlZCB2aWEgY29mZl9saW5rX2hhc2hfdHJhdmVyc2UuICAqLworCitzdHJ1Y3QgY29m
Zl9nY19zd2VlcF9zeW1ib2xfaW5mbworeworICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbzsK
KyAgdm9pZCAoKmhpZGVfc3ltYm9sKSAoc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGNv
ZmZfbGlua19oYXNoX2VudHJ5ICosCisJCSAgICAgICBiZmRfYm9vbGVhbik7Cit9OworCitzdGF0
aWMgYmZkX2Jvb2xlYW4KK2NvZmZfZ2Nfc3dlZXBfc3ltYm9sIChzdHJ1Y3QgY29mZl9saW5rX2hh
c2hfZW50cnkgKmgsIHZvaWQgKmRhdGEpCit7CisKKyAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRf
bGlua19oYXNoX3dhcm5pbmcpCisgICAgaCA9IChzdHJ1Y3QgY29mZl9saW5rX2hhc2hfZW50cnkg
KikgaC0+cm9vdC51LmkubGluazsKKworICBpZiAoKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19o
YXNoX2RlZmluZWQKKyAgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3
ZWFrKQorICAgICAgJiYgIWgtPnJvb3QudS5kZWYuc2VjdGlvbi0+Z2NfbWFyaworICAgICAgJiYg
IShoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyLT5mbGFncyAmIERZTkFNSUMpKQorICAgIHsK
KyAgICAgIHN0cnVjdCBjb2ZmX2djX3N3ZWVwX3N5bWJvbF9pbmZvICppbmYgQVRUUklCVVRFX1VO
VVNFRCA9CisgICAgICAgICAgKHN0cnVjdCBjb2ZmX2djX3N3ZWVwX3N5bWJvbF9pbmZvICopIGRh
dGE7CisgICAgICAvKiBGSVhNRTogZWxmbGluay5jIGhpZGVzIHRoZSBzeW1ib2wgaGVyZSAtIGhv
dyBjYW4gd2UgZG8gdGhpcyBmb3IgQ09GRj8KKyAgICAgICgqaW5mLT5oaWRlX3N5bWJvbCkgKGlu
Zi0+aW5mbywgaCwgVFJVRSk7ICovCisgICAgfQorCisgIHJldHVybiBUUlVFOworfQorCisvKiBU
aGUgc3dlZXAgcGhhc2Ugb2YgZ2FyYmFnZSBjb2xsZWN0aW9uLiAgUmVtb3ZlIGFsbCBnYXJiYWdl
IHNlY3Rpb25zLiAgKi8KKwordHlwZWRlZiBiZmRfYm9vbGVhbiAoKmdjX3N3ZWVwX2hvb2tfZm4p
CisgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYXNlY3Rpb24gKiwgY29uc3Qgc3Ry
dWN0IGludGVybmFsX3JlbG9jICopOworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2NvZmZfZ2Nfc3dl
ZXAgKGJmZCAqYWJmZCBBVFRSSUJVVEVfVU5VU0VELCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5m
bykKK3sKKyAgYmZkICpzdWI7CisgIHN0cnVjdCBjb2ZmX2djX3N3ZWVwX3N5bWJvbF9pbmZvIHN3
ZWVwX2luZm87CisKKyAgZm9yIChzdWIgPSBpbmZvLT5pbnB1dF9iZmRzOyBzdWIgIT0gTlVMTDsg
c3ViID0gc3ViLT5saW5rX25leHQpCisgICAgeworICAgICAgYXNlY3Rpb24gKm87CisKKyAgICAg
IGlmIChiZmRfZ2V0X2ZsYXZvdXIgKHN1YikgIT0gYmZkX3RhcmdldF9jb2ZmX2ZsYXZvdXIpCisJ
Y29udGludWU7CisKKyAgICAgIGZvciAobyA9IHN1Yi0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9
IG8tPm5leHQpCisJeworCisgICAgICAgICAgLyogRklYTUU6IFdlIG11c3QgcHJlc2VydmUgdGhl
IGltcG9ydCB0YWJsZSwgYnV0IGlzIHRoaXMgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICB3YXkg
dG8gZG8gaXQ/ICovCisgICAgICAgICAgaWYgKHN0cm5jbXAoby0+bmFtZSwgIi5pZGF0YSIsIDYp
ID09IDApCisgICAgICAgICAgICBvLT5nY19tYXJrID0gMTsKKworICAgICAgICAgIC8qIEZJWE1F
OiBlbGZsaW5rLmMgaGFzIHNvbWUgc2VjdGlvbiBncm91cAorICAgICAgICAgICAgIGZ1bmN0aW9u
YWxpdHkgaGVyZSAtIGRvZXMgQ09GRiByZXF1aXJlIHNvbWV0aGluZyBzaW1pbGFyPyAqLworCisg
ICAgICAgICAgaWYgKChvLT5mbGFncyAmIChTRUNfREVCVUdHSU5HIHwgU0VDX0xJTktFUl9DUkVB
VEVEKSkgIT0gMAorCQkgICB8fCAoby0+ZmxhZ3MgJiAoU0VDX0FMTE9DIHwgU0VDX0xPQUQgfCBT
RUNfUkVMT0MpKSA9PSAwKQorCSAgICB7CisJICAgICAgLyogS2VlcCBkZWJ1ZyBhbmQgc3BlY2lh
bCBzZWN0aW9ucy4gICovCisJICAgICAgby0+Z2NfbWFyayA9IDE7CisJICAgIH0KKworCSAgaWYg
KG8tPmdjX21hcmspCisJICAgIGNvbnRpbnVlOworCisJICAvKiBTa2lwIHN3ZWVwaW5nIHNlY3Rp
b25zIGFscmVhZHkgZXhjbHVkZWQuICAqLworCSAgaWYgKG8tPmZsYWdzICYgU0VDX0VYQ0xVREUp
CisJICAgIGNvbnRpbnVlOworCisJICAvKiBTaW5jZSB0aGlzIGlzIGVhcmx5IGluIHRoZSBsaW5r
IHByb2Nlc3MsIGl0IGlzIHNpbXBsZQorCSAgICAgdG8gcmVtb3ZlIGEgc2VjdGlvbiBmcm9tIHRo
ZSBvdXRwdXQuICAqLworCSAgby0+ZmxhZ3MgfD0gU0VDX0VYQ0xVREU7CisKKwkgIGlmIChpbmZv
LT5wcmludF9nY19zZWN0aW9ucyAmJiBvLT5zaXplICE9IDApCisgICAgICAgICAgICBfYmZkX2Vy
cm9yX2hhbmRsZXIgKF8oIlJlbW92aW5nIHVudXNlZCBzZWN0aW9uICclcycgaW4gZmlsZSAnJUIn
IiksIHN1Yiwgby0+bmFtZSk7CisKKyAgICAgICAgICAvKiBGSVhNRTogRG8gd2UgbmVlZCBzb21l
dGhpbmcgbGlrZSB0aGlzIGZvciBDT0ZGPyAqLworI2lmIDAKKwkgIC8qIEJ1dCB3ZSBhbHNvIGhh
dmUgdG8gdXBkYXRlIHNvbWUgb2YgdGhlIHJlbG9jYXRpb24KKwkgICAgIGluZm8gd2UgY29sbGVj
dGVkIGJlZm9yZS4gICovCisJICBpZiAoZ2Nfc3dlZXBfaG9vaworCSAgICAgICYmIChvLT5mbGFn
cyAmIFNFQ19SRUxPQykgIT0gMAorCSAgICAgICYmIG8tPnJlbG9jX2NvdW50ID4gMAorCSAgICAg
ICYmICFiZmRfaXNfYWJzX3NlY3Rpb24gKG8tPm91dHB1dF9zZWN0aW9uKSkKKwkgICAgeworCSAg
ICAgIHN0cnVjdCBpbnRlcm5hbF9yZWxvYyAqaW50ZXJuYWxfcmVsb2NzOworCSAgICAgIGJmZF9i
b29sZWFuIHI7CisKKwkgICAgICBpbnRlcm5hbF9yZWxvY3MKKwkJPSBfYmZkX2NvZmZfbGlua19y
ZWFkX3JlbG9jcyAoby0+b3duZXIsIG8sIE5VTEwsIE5VTEwsCisJCQkJCSAgICAgaW5mby0+a2Vl
cF9tZW1vcnkpOworCSAgICAgIGlmIChpbnRlcm5hbF9yZWxvY3MgPT0gTlVMTCkKKwkJcmV0dXJu
IEZBTFNFOworCisJICAgICAgciA9ICgqZ2Nfc3dlZXBfaG9vaykgKG8tPm93bmVyLCBpbmZvLCBv
LCBpbnRlcm5hbF9yZWxvY3MpOworCisJICAgICAgaWYgKGNvZmZfc2VjdGlvbl9kYXRhIChvKS0+
cmVsb2NzICE9IGludGVybmFsX3JlbG9jcykKKwkJZnJlZSAoaW50ZXJuYWxfcmVsb2NzKTsKKwor
CSAgICAgIGlmICghcikKKwkJcmV0dXJuIEZBTFNFOworCSAgICB9CisjZW5kaWYKKwl9CisgICAg
fQorCisgIC8qIFJlbW92ZSB0aGUgc3ltYm9scyB0aGF0IHdlcmUgaW4gdGhlIHN3ZXB0IHNlY3Rp
b25zIGZyb20gdGhlIGR5bmFtaWMKKyAgICAgc3ltYm9sIHRhYmxlLiAgR0NGSVhNRTogQW55b25l
IGtub3cgaG93IHRvIGdldCB0aGVtIG91dCBvZiB0aGUKKyAgICAgc3RhdGljIHN5bWJvbCB0YWJs
ZSBhcyB3ZWxsPyAgKi8KKworICBzd2VlcF9pbmZvLmluZm8gPSBpbmZvOworICAvKiBGSVhNRTog
RG8gd2UgbmVlZCB0aGlzIGZvciBDT0ZGPworICBzd2VlcF9pbmZvLmhpZGVfc3ltYm9sID0gYmVk
LT5jb2ZmX2JhY2tlbmRfaGlkZV9zeW1ib2w7ICovCisgIGNvZmZfbGlua19oYXNoX3RyYXZlcnNl
IChjb2ZmX2hhc2hfdGFibGUgKGluZm8pLCBjb2ZmX2djX3N3ZWVwX3N5bWJvbCwKKwkJCSAgJnN3
ZWVwX2luZm8pOworCisgIC8qIEZJWE1FOiBEbyB3ZSBuZWVkIHRoaXMgZm9yIENPRkY/CisgIF9i
ZmRfY29mZl9saW5rX3JlbnVtYmVyX2R5bnN5bXMgKGFiZmQsIGluZm8sICZzZWN0aW9uX3N5bV9j
b3VudCk7ICovCisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIEtlZXAgYWxsIHNlY3Rpb25zIGNv
bnRhaW5pbmcgc3ltYm9scyB1bmRlZmluZWQgb24gdGhlIGNvbW1hbmQtbGluZSwKKyAgIGFuZCB0
aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBlbnRyeSBzeW1ib2wuICAqLworCitzdGF0aWMgdm9p
ZAorX2JmZF9jb2ZmX2djX2tlZXAgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQoreworICBz
dHJ1Y3QgYmZkX3N5bV9jaGFpbiAqc3ltOworCisgIGZvciAoc3ltID0gaW5mby0+Z2Nfc3ltX2xp
c3Q7IHN5bSAhPSBOVUxMOyBzeW0gPSBzeW0tPm5leHQpCisgICAgeworICAgICAgc3RydWN0IGNv
ZmZfbGlua19oYXNoX2VudHJ5ICpoOworCisgICAgICBoID0gY29mZl9saW5rX2hhc2hfbG9va3Vw
IChjb2ZmX2hhc2hfdGFibGUgKGluZm8pLCBzeW0tPm5hbWUsCisJCQkJRkFMU0UsIEZBTFNFLCBG
QUxTRSk7CisKKyAgICAgIGlmIChoICE9IE5VTEwKKyAgICAgIC8qIEZJWE1FOiBlbGZsaW5rLmMg
aGFzIG1vcmUgY29uZGl0aW9ucyAtIHdoYXQgYWJvdXQgQ09GRj8KKwkgICYmIChoLT5yb290LnR5
cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCisJICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJm
ZF9saW5rX2hhc2hfZGVmd2VhaykKKwkgICYmICFiZmRfaXNfYWJzX3NlY3Rpb24gKGgtPnJvb3Qu
dS5kZWYuc2VjdGlvbikqLykKKwloLT5yb290LnUuZGVmLnNlY3Rpb24tPmZsYWdzIHw9IFNFQ19L
RUVQOworICAgIH0KK30KKworLyogRG8gbWFyayBhbmQgc3dlZXAgb2YgdW51c2VkIHNlY3Rpb25z
LiAgKi8KKworYmZkX2Jvb2xlYW4KK2JmZF9jb2ZmX2djX3NlY3Rpb25zIChiZmQgKmFiZmQgQVRU
UklCVVRFX1VOVVNFRCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7CisKKyAgYmZkICpz
dWI7CisKKyAgLyogRklYTUU6IFNob3VsZCB3ZSBpbXBsZW1lbnQgdGhpcz8gKi8KKyNpZiAwCisg
IGNvbnN0IGJmZF9jb2ZmX2JhY2tlbmRfZGF0YSAqYmVkID0gY29mZl9iYWNrZW5kX2luZm8gKGFi
ZmQpOworCisgIGlmICghYmVkLT5jYW5fZ2Nfc2VjdGlvbnMKKyAgICAgIHx8ICFpc19jb2ZmX2hh
c2hfdGFibGUgKGluZm8tPmhhc2gpKQorICAgIHsKKyAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVy
KShfKCJXYXJuaW5nOiBnYy1zZWN0aW9ucyBvcHRpb24gaWdub3JlZCIpKTsKKyAgICAgIHJldHVy
biBUUlVFOworICAgIH0KKyNlbmRpZgorCisgIF9iZmRfY29mZl9nY19rZWVwIChpbmZvKTsKKwor
ICAvKiBGSVhNRTogZWxmbGluay5jIGhhcyBzb21lIGVoX2ZyYW1lIGhhbmRsaW5nIGhlcmUgLSBk
b2VzIENPRkYKKyAgICAgcmVxdWlyZSBzb21ldGhpbmcgc2ltaWxhcj8gKi8KKworICAvKiBGSVhN
RTogZWxmbGluay5jIGRvZXMgdHdvIHRoaW5ncyBoZXJlOgorICAgICAtIEFwcGx5IHRyYW5zaXRp
dmUgY2xvc3VyZSB0byB0aGUgdnRhYmxlIGVudHJ5IHVzYWdlIGluZm8uCisgICAgIC0gS2lsbCB0
aGUgdnRhYmxlIHJlbG9jYXRpb25zIHRoYXQgd2VyZSBub3QgdXNlZC4KKyAgICAgZG9lcyBDT0ZG
IHJlcXVpcmUgc29tZXRoaW5nIHNpbWlsYXI/ICovCisKKyAgLyogRklYTUU6IGVsZmxpbmsuYyBk
b2VzIGEgdHJhdmVyc2Ugd2l0aCBiZmRfZWxmX2djX21hcmtfZHluYW1pY19yZWZfc3ltYm9sCisg
ICAgIGhlcmUgLSBkb2VzIENPRkYgcmVxdWlyZSBzb21ldGhpbmcgc2ltaWxhcj8gKi8KKworICAv
KiBHcm92ZWwgdGhyb3VnaCByZWxvY3MgdG8gZmluZCBvdXQgd2hvIHN0YXlzIC4uLiAgKi8KKyAg
Zm9yIChzdWIgPSBpbmZvLT5pbnB1dF9iZmRzOyBzdWIgIT0gTlVMTDsgc3ViID0gc3ViLT5saW5r
X25leHQpCisgICAgeworICAgICAgYXNlY3Rpb24gKm87CisKKyAgICAgIGlmIChiZmRfZ2V0X2Zs
YXZvdXIgKHN1YikgIT0gYmZkX3RhcmdldF9jb2ZmX2ZsYXZvdXIpCisgICAgICAgIGNvbnRpbnVl
OworCisgICAgICBmb3IgKG8gPSBzdWItPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0
KSB7CisgICAgICAgIC8qIEZJWE1FOiBJcyB0aGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNoZWNrIGZv
ciBnbG9iYWwgY29uc3RydWN0b3JzPyAqLworICAgICAgICBpZiAoKChvLT5mbGFncyAmIChTRUNf
RVhDTFVERSB8IFNFQ19LRUVQKSkgPT0gU0VDX0tFRVAgfHwgc3RybmNtcChvLT5uYW1lLCAiLmN0
b3JzIiwgNikgPT0gMCkgJiYgIW8tPmdjX21hcmspIHsKKyAgICAgICAgICBpZiAoIV9iZmRfY29m
Zl9nY19tYXJrIChpbmZvLCBvLCBfYmZkX2NvZmZfZ2NfbWFya19ob29rKSkgeworICAgICAgICAg
ICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KworICAvKiBGSVhNRTogZWxmbGluay5jIGhhcyBhbiBob29rIGZvciBnY19tYXJrX2V4dHJhX3Nl
Y3Rpb25zCisgICAgIGhlcmUgLSBkb2VzIENPRkYgcmVxdWlyZSBzb21ldGhpbmcgc2ltaWxhcj8g
Ki8KKworICAvKiAuLi4gYW5kIG1hcmsgU0VDX0VYQ0xVREUgZm9yIHRob3NlIHRoYXQgZ28uICAq
LworICByZXR1cm4gY29mZl9nY19zd2VlcCAoYWJmZCwgaW5mbyk7Cit9CisKZGlmZiAtdXIgYmlu
dXRpbHMtMi4yMC9iZmQvbGliY29mZi5oIGJpbnV0aWxzLTIuMjAuY29mZi1nYy9iZmQvbGliY29m
Zi5oCi0tLSBiaW51dGlscy0yLjIwL2JmZC9saWJjb2ZmLmgJMjAwOS0wOS0wNyAxMDoxNToxOS4w
MDAwMDAwMDAgKzAyMDAKKysrIGJpbnV0aWxzLTIuMjAuY29mZi1nYy9iZmQvbGliY29mZi5oCTIw
MTEtMDMtMTEgMTI6NDQ6NTMuMjMzNjA5NjIyICswMTAwCkBAIC0yODQsNiArMjg0LDE0IEBACiAg
IHN0cnVjdCBzdGFiX2luZm8gc3RhYl9pbmZvOwogfTsKIAorc3RydWN0IGNvZmZfcmVsb2NfY29v
a2llCit7CisgIHN0cnVjdCBpbnRlcm5hbF9yZWxvYyAqcmVscywgKnJlbCwgKnJlbGVuZDsKKyAg
c3RydWN0IGNvZmZfc3ltYm9sX3N0cnVjdCAqc3ltYm9sczsJLyogU3ltdGFiIGZvciBpbnB1dCBi
ZmQuICAqLworICBiZmQgKmFiZmQ7CisgIHN0cnVjdCBjb2ZmX2xpbmtfaGFzaF9lbnRyeSAqKnN5
bV9oYXNoZXM7Cit9OworCiAvKiBMb29rIHVwIGFuIGVudHJ5IGluIGEgQ09GRiBsaW5rZXIgaGFz
aCB0YWJsZS4gICovCiAKICNkZWZpbmUgY29mZl9saW5rX2hhc2hfbG9va3VwKHRhYmxlLCBzdHJp
bmcsIGNyZWF0ZSwgY29weSwgZm9sbG93KQlcCkBAIC01NjAsNiArNTY4LDggQEAKIGV4dGVybiBi
ZmRfYm9vbGVhbiBfYmZkX2NvZmZfZ2VuZXJpY19yZWxvY2F0ZV9zZWN0aW9uCiAgIChiZmQgKiwg
c3RydWN0IGJmZF9saW5rX2luZm8gKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICosCiAg
ICBzdHJ1Y3QgaW50ZXJuYWxfcmVsb2MgKiwgc3RydWN0IGludGVybmFsX3N5bWVudCAqLCBhc2Vj
dGlvbiAqKik7CitleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2NvZmZfZ2Nfc2VjdGlvbnMKKyAgKGJm
ZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pOwogZXh0ZXJuIHN0cnVjdCBiZmRf
aGFzaF9lbnRyeSAqX2JmZF9jb2ZmX2RlYnVnX21lcmdlX2hhc2hfbmV3ZnVuYwogICAoc3RydWN0
IGJmZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICop
OwogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfY29mZl93cml0ZV9nbG9iYWxfc3ltCkBAIC02NzYs
NiArNjg2LDEwIEBACiAgIENPRkZfU1lNQk9MX1BFX1NFQ1RJT04KIH07CiAKK3R5cGVkZWYgYXNl
Y3Rpb24gKiAoKmNvZmZfZ2NfbWFya19ob29rX2ZuKQorICAoYXNlY3Rpb24gKiwgc3RydWN0IGJm
ZF9saW5rX2luZm8gKiwgc3RydWN0IGludGVybmFsX3JlbG9jICosCisgICBzdHJ1Y3QgY29mZl9s
aW5rX2hhc2hfZW50cnkgKiwgc3RydWN0IGludGVybmFsX3N5bWVudCAqKTsKKwogdHlwZWRlZiBz
dHJ1Y3QKIHsKICAgdm9pZCAoKl9iZmRfY29mZl9zd2FwX2F1eF9pbikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
              isurl="0"
          >
            <attachid>5960</attachid>
            <date>2011-10-05 03:42:00 +0000</date>
            <delta_ts>2011-10-05 03:42:15 +0000</delta_ts>
            <desc>Add KEEPs to the linker script template</desc>
            <filename>binutils-2.21.1.coff-gc.patch</filename>
            <type>text/plain</type>
            <size>2774</size>
            <attacher>shinji.igarashi</attacher>
            
              <data encoding="base64">LS0tIGJpbnV0aWxzLTIuMjEuMS9sZC9zY3JpcHR0ZW1wbC9wZS5zYwkyMDExLTA2LTI3IDE2OjM5
OjE0LjAwMDAwMDAwMCArMDkwMAorKysgYmludXRpbHMtMi4yMS4xLmNvZmYtZ2MvbGQvc2NyaXB0
dGVtcGwvcGUuc2MJMjAxMS0xMC0wNSAxMjoyODowNy4wMDAwMDAwMDAgKzA5MDAKQEAgLTI0LDI1
ICsyNCwyNSBAQAogICAgICAgICAgICAgICooU09SVCgucmRhdGEkKikpJwogICBmaQogICBSX0lE
QVRBMjM0PScKLSAgICBTT1JUKCopKC5pZGF0YSQyKQotICAgIFNPUlQoKikoLmlkYXRhJDMpCisg
ICAgS0VFUChTT1JUKCopKC5pZGF0YSQyKSkKKyAgICBLRUVQKFNPUlQoKikoLmlkYXRhJDMpKQog
ICAgIC8qIFRoZXNlIHplcm9lcyBtYXJrIHRoZSBlbmQgb2YgdGhlIGltcG9ydCBsaXN0LiAgKi8K
ICAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7Ci0g
ICAgU09SVCgqKSguaWRhdGEkNCknCi0gIFJfSURBVEE1PSdTT1JUKCopKC5pZGF0YSQ1KScKKyAg
ICBLRUVQKFNPUlQoKikoLmlkYXRhJDQpKScKKyAgUl9JREFUQTU9J0tFRVAoU09SVCgqKSguaWRh
dGEkNSkpJwogICBSX0lEQVRBNjc9JwotICAgIFNPUlQoKikoLmlkYXRhJDYpCi0gICAgU09SVCgq
KSguaWRhdGEkNyknCi0gIFJfQ1JUX1hDPScqKFNPUlQoLkNSVCRYQyopKSAgLyogQyBpbml0aWFs
aXphdGlvbiAqLycKLSAgUl9DUlRfWEk9JyooU09SVCguQ1JUJFhJKikpICAvKiBDKysgaW5pdGlh
bGl6YXRpb24gKi8nCi0gIFJfQ1JUX1hMPScqKFNPUlQoLkNSVCRYTCopKSAgLyogVExTIGNhbGxi
YWNrcyAqLycKLSAgUl9DUlRfWFA9JyooU09SVCguQ1JUJFhQKikpICAvKiBQcmUtdGVybWluYXRp
b24gKi8nCi0gIFJfQ1JUX1hUPScqKFNPUlQoLkNSVCRYVCopKSAgLyogVGVybWluYXRpb24gKi8n
CisgICAgS0VFUChTT1JUKCopKC5pZGF0YSQ2KSkKKyAgICBLRUVQKFNPUlQoKikoLmlkYXRhJDcp
KScKKyAgUl9DUlRfWEM9J0tFRVAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0
aW9uICovJworICBSX0NSVF9YST0nS0VFUCgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0
aWFsaXphdGlvbiAqLycKKyAgUl9DUlRfWEw9J0tFRVAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBU
TFMgY2FsbGJhY2tzICovJworICBSX0NSVF9YUD0nS0VFUCgqKFNPUlQoLkNSVCRYUCopKSkgIC8q
IFByZS10ZXJtaW5hdGlvbiAqLycKKyAgUl9DUlRfWFQ9J0tFRVAoKihTT1JUKC5DUlQkWFQqKSkp
ICAvKiBUZXJtaW5hdGlvbiAqLycKICAgUl9UTFM9JwotICAgICooLnRscykKLSAgICAqKC50bHMk
KQotICAgICooU09SVCgudGxzJCopKScKLSAgUl9SU1JDPScqKFNPUlQoLnJzcmMkKikpJworICAg
IEtFRVAoKigudGxzKSkKKyAgICBLRUVQKCooLnRscyQpKQorICAgIEtFRVAoKihTT1JUKC50bHMk
KikpKScKKyAgUl9SU1JDPSdLRUVQKCooU09SVCgucnNyYyQqKSkpJwogZWxzZQogICBSX1RFWFQ9
CiAgIFJfREFUQT0KQEAgLTY5LDE3ICs2OSwxNyBAQAogICAke1JFTE9DQVRJTkcrLiA9IEFMSUdO
KF9fc2VjdGlvbl9hbGlnbm1lbnRfXyk7fQogICAudGV4dCAke1JFTE9DQVRJTkcrIF9faW1hZ2Vf
YmFzZV9fICsgKCBfX3NlY3Rpb25fYWxpZ25tZW50X18gPCAke1RBUkdFVF9QQUdFX1NJWkV9ID8g
LiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApfSA6IAogICB7Ci0gICAgJHtSRUxPQ0FUSU5HKyAq
KC5pbml0KX0KKyAgICAke1JFTE9DQVRJTkcrIEtFRVAoKiguaW5pdCkpfQogICAgICooLnRleHQp
CiAgICAgJHtSX1RFWFR9CiAgICAgJHtSRUxPQ0FUSU5HKyAqKC50ZXh0LiopfQogICAgICooLmds
dWVfN3QpCiAgICAgKiguZ2x1ZV83KQogICAgICR7Q09OU1RSVUNUSU5HKyBfX19DVE9SX0xJU1Rf
XyA9IC47IF9fQ1RPUl9MSVNUX18gPSAuIDsgCi0JCQlMT05HICgtMSk7KiguY3RvcnMpOyAqKC5j
dG9yKTsgKihTT1JUKC5jdG9ycy4qKSk7ICBMT05HICgwKTsgfQorCQkJTE9ORyAoLTEpOyBLRUVQ
KCooLmN0b3JzKSk7IEtFRVAoKiguY3RvcikpOyBLRUVQKCooU09SVCguY3RvcnMuKikpKTsgIExP
TkcgKDApOyB9CiAgICAgJHtDT05TVFJVQ1RJTkcrIF9fX0RUT1JfTElTVF9fID0gLjsgX19EVE9S
X0xJU1RfXyA9IC4gOyAKLQkJCUxPTkcgKC0xKTsgKiguZHRvcnMpOyAqKC5kdG9yKTsgKihTT1JU
KC5kdG9ycy4qKSk7ICBMT05HICgwKTsgfQotICAgICR7UkVMT0NBVElORysgKiguZmluaSl9CisJ
CQlMT05HICgtMSk7IEtFRVAoKiguZHRvcnMpKTsgS0VFUCgqKC5kdG9yKSk7IEtFRVAoKihTT1JU
KC5kdG9ycy4qKSkpOyAgTE9ORyAoMCk7IH0KKyAgICAke1JFTE9DQVRJTkcrIEtFRVAoKiguZmlu
aSkpfQogICAgIC8qID8/PyBXaHkgaXMgLmdjY19leGMgaGVyZT8gICovCiAgICAgJHtSRUxPQ0FU
SU5HKyAqKC5nY2NfZXhjKX0KICAgICAke1JFTE9DQVRJTkcrUFJPVklERSAoZXRleHQgPSAuKTt9
CkBAIC05OCw3ICs5OCw3IEBACiAgICAgKiguZGF0YSkKICAgICAqKC5kYXRhMikKICAgICAke1Jf
REFUQX0KLSAgICAqKC5qY3IpCisgICAgS0VFUCgqKC5qY3IpKQogICAgICR7UkVMT0NBVElORytf
X2RhdGFfZW5kX18gPSAuIDt9CiAgICAgJHtSRUxPQ0FUSU5HKyooLmRhdGFfY3lnd2luX25vY29w
eSl9CiAgIH0KQEAgLTE5NSw3ICsxOTUsNyBAQAogCiAgIC5yc3JjICR7UkVMT0NBVElORytCTE9D
SyhfX3NlY3Rpb25fYWxpZ25tZW50X18pfSA6CiAgIHsgCQkJCQkKLSAgICAqKC5yc3JjKQorICAg
IEtFRVAoKigucnNyYykpCiAgICAgJHtSX1JTUkN9CiAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>