From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18550 invoked by alias); 8 Apr 2010 23:41:57 -0000 Received: (qmail 18541 invoked by uid 22791); 8 Apr 2010 23:41:56 -0000 X-SWARE-Spam-Status: No, hits=2.2 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SARE_MSGID_LONG45,SPF_HELO_PASS,TW_IB,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 08 Apr 2010 23:41:49 +0000 Received: from kpbe19.cbf.corp.google.com (kpbe19.cbf.corp.google.com [172.25.105.83]) by smtp-out.google.com with ESMTP id o38NfjF4015792 for ; Fri, 9 Apr 2010 01:41:45 +0200 Received: from pzk7 (pzk7.prod.google.com [10.243.19.135]) by kpbe19.cbf.corp.google.com with ESMTP id o38Nfhcv001888 for ; Thu, 8 Apr 2010 16:41:44 -0700 Received: by pzk7 with SMTP id 7so3431405pzk.30 for ; Thu, 08 Apr 2010 16:41:43 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.252.10 with HTTP; Thu, 8 Apr 2010 16:41:41 -0700 (PDT) Date: Thu, 08 Apr 2010 23:41:00 -0000 Received: by 10.141.139.11 with SMTP id r11mr1213265rvn.61.1270770101771; Thu, 08 Apr 2010 16:41:41 -0700 (PDT) Message-ID: Subject: [PATCH][GOLD] Avoid linker crashing when merge sections have uneven sizes. From: =?Big5?B?RG91ZyBLd2FuICjD9q62vHcp?= To: Ian Lance Taylor , binutils Content-Type: multipart/mixed; boundary=000325561ef681ddb60483c238ed X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2010-04/txt/msg00089.txt.bz2 --000325561ef681ddb60483c238ed Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1085 Hi Ian, This patch fixes a problem exposed by bootstrapping gcc. libjava contains objects with unevenly sized merge sections, whose sections sizes are not multiples of their entsizes. Output_merge_data::do_add_input_section cannot handle these sections and returns false but the result is ignored by Output_section::add_merge_input_section, which updates the merge section map incorrectly. Unevenly sized merge sections also cause another problem Output_merge_data::set_final_data_size because the method assumes the data member Output_merge_data::p_ is always not NULL. However, that condition is possible is an Output_merge_data is empty due to unevenly sized input sections. -Doug 2010-04-08 Doug Kwan * merge.cc (Output_merge_data::set_final_data_size): Handle empty Output_merge_data. * output.cc (Output_section::add_merge_input_section): Simplify code and return status of Output_merge_base::add_input_section. Update merge section map only if Output_merge_base::add_input_section returns true. --000325561ef681ddb60483c238ed Content-Type: text/plain; charset=US-ASCII; name="patch-merge.txt" Content-Disposition: attachment; filename="patch-merge.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7s7oy1a0 Content-length: 5820 SW5kZXg6IGdvbGQvbWVyZ2UuY2MKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dvbGQvbWVyZ2UuY2MsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMzMKZGlmZiAtdSAtdSAtcCAtcjEuMzMgbWVyZ2Uu Y2MKLS0tIGdvbGQvbWVyZ2UuY2MJMTQgRGVjIDIwMDkgMTk6NTM6MDUgLTAw MDAJMS4zMworKysgZ29sZC9tZXJnZS5jYwk4IEFwciAyMDEwIDIzOjI4OjIw IC0wMDAwCkBAIC00MjUsNyArNDI1LDEwIEBAIE91dHB1dF9tZXJnZV9kYXRh OjpzZXRfZmluYWxfZGF0YV9zaXplKCkKIHsKICAgLy8gUmVsZWFzZSB0aGUg bWVtb3J5IHdlIGRvbid0IG5lZWQuCiAgIHRoaXMtPnBfID0gc3RhdGljX2Nh c3Q8dW5zaWduZWQgY2hhcio+KHJlYWxsb2ModGhpcy0+cF8sIHRoaXMtPmxl bl8pKTsKLSAgZ29sZF9hc3NlcnQodGhpcy0+cF8gIT0gTlVMTCk7CisgIC8v IEFuIE91dHB1dF9tZXJnZV9kYXRhIG9iamVjdCBtYXkgYmUgZW1wdHkgYW5k IHJlYWxsb2MgaXMgYWxsb3dlZAorICAvLyB0byByZXR1cm4gYSBOVUxMIHBv aW50ZXIgaW4gdGhpcyBjYXNlLiAgQW4gT3V0cHV0X21lcmdlX2RhdGEgaXMg ZW1wdHkKKyAgLy8gaWYgYWxsIGl0cyBpbnB1dCBzZWN0aW9ucyBoYXZlIHNp emVzIHRoYXQgYXJlIG5vdCBtdWx0aXBsZXMgb2YgZW50c2l6ZS4KKyAgZ29s ZF9hc3NlcnQodGhpcy0+cF8gIT0gTlVMTCB8fCB0aGlzLT5sZW5fID09IDAp OwogICB0aGlzLT5zZXRfZGF0YV9zaXplKHRoaXMtPmxlbl8pOwogfQogCklu ZGV4OiBnb2xkL291dHB1dC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ29sZC9vdXRwdXQuY2MsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMTIyCmRpZmYgLXUgLXUgLXAgLXIxLjEyMiBvdXRw dXQuY2MKLS0tIGdvbGQvb3V0cHV0LmNjCTYgTWFyIDIwMTAgMDI6MzQ6MTMg LTAwMDAJMS4xMjIKKysrIGdvbGQvb3V0cHV0LmNjCTggQXByIDIwMTAgMjM6 Mjg6MjAgLTAwMDAKQEAgLTIxNTQsNTggKzIxNTQsNTUgQEAgT3V0cHV0X3Nl Y3Rpb246OmFkZF9tZXJnZV9pbnB1dF9zZWN0aW9uKAogICBnb2xkX2Fzc2Vy dCh0aGlzLT5jaGVja3BvaW50XyA9PSBOVUxMKTsKIAogICAvLyBMb29rIHVw IG1lcmdlIHNlY3Rpb25zIGJ5IHJlcXVpcmVkIHByb3BlcnRpZXMuCisgIE91 dHB1dF9tZXJnZV9iYXNlKiBwb21iOwogICBNZXJnZV9zZWN0aW9uX3Byb3Bl cnRpZXMgbXNwKGlzX3N0cmluZywgZW50c2l6ZSwgYWRkcmFsaWduKTsKICAg TWVyZ2Vfc2VjdGlvbl9ieV9wcm9wZXJ0aWVzX21hcDo6Y29uc3RfaXRlcmF0 b3IgcCA9CiAgICAgdGhpcy0+bWVyZ2Vfc2VjdGlvbl9ieV9wcm9wZXJ0aWVz X21hcF8uZmluZChtc3ApOwogICBpZiAocCAhPSB0aGlzLT5tZXJnZV9zZWN0 aW9uX2J5X3Byb3BlcnRpZXNfbWFwXy5lbmQoKSkKICAgICB7Ci0gICAgICBP dXRwdXRfbWVyZ2VfYmFzZSogbWVyZ2Vfc2VjdGlvbiA9IHAtPnNlY29uZDsK LSAgICAgIG1lcmdlX3NlY3Rpb24tPmFkZF9pbnB1dF9zZWN0aW9uKG9iamVj dCwgc2huZHgpOwotICAgICAgZ29sZF9hc3NlcnQobWVyZ2Vfc2VjdGlvbi0+ aXNfc3RyaW5nKCkgPT0gaXNfc3RyaW5nCi0JCSAgJiYgbWVyZ2Vfc2VjdGlv bi0+ZW50c2l6ZSgpID09IGVudHNpemUKLQkJICAmJiBtZXJnZV9zZWN0aW9u LT5hZGRyYWxpZ24oKSA9PSBhZGRyYWxpZ24pOwotCi0gICAgICAvLyBMaW5r IGlucHV0IHNlY3Rpb24gdG8gZm91bmQgbWVyZ2Ugc2VjdGlvbi4KLSAgICAg IENvbnN0X3NlY3Rpb25faWQgY3NpZChvYmplY3QsIHNobmR4KTsKLSAgICAg IHRoaXMtPm1lcmdlX3NlY3Rpb25fbWFwX1tjc2lkXSA9IG1lcmdlX3NlY3Rp b247Ci0gICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIHBvbWIgPSBwLT5zZWNv bmQ7CisgICAgICBnb2xkX2Fzc2VydChwb21iLT5pc19zdHJpbmcoKSA9PSBp c19zdHJpbmcKKwkJICAmJiBwb21iLT5lbnRzaXplKCkgPT0gZW50c2l6ZQor CQkgICYmIHBvbWItPmFkZHJhbGlnbigpID09IGFkZHJhbGlnbik7CiAgICAg fQotCi0gIC8vIFdlIGhhbmRsZSB0aGUgYWN0dWFsIGNvbnN0YW50IG1lcmdp bmcgaW4gT3V0cHV0X21lcmdlX2RhdGEgb3IKLSAgLy8gT3V0cHV0X21lcmdl X3N0cmluZ19kYXRhLgotICBPdXRwdXRfbWVyZ2VfYmFzZSogcG9tYjsKLSAg aWYgKCFpc19zdHJpbmcpCi0gICAgcG9tYiA9IG5ldyBPdXRwdXRfbWVyZ2Vf ZGF0YShlbnRzaXplLCBhZGRyYWxpZ24pOwogICBlbHNlCiAgICAgewotICAg ICAgc3dpdGNoIChlbnRzaXplKQorICAgICAgLy8gQ3JlYXRlIGEgbmV3IE91 dHB1dF9tZXJnZV9kYXRhIG9yIE91dHB1dF9tZXJnZV9zdHJpbmdfZGF0YS4K KyAgICAgIGlmICghaXNfc3RyaW5nKQorCXBvbWIgPSBuZXcgT3V0cHV0X21l cmdlX2RhdGEoZW50c2l6ZSwgYWRkcmFsaWduKTsKKyAgICAgIGVsc2UKIAl7 Ci0gICAgICAgIGNhc2UgMToKLQkgIHBvbWIgPSBuZXcgT3V0cHV0X21lcmdl X3N0cmluZzxjaGFyPihhZGRyYWxpZ24pOwotCSAgYnJlYWs7Ci0gICAgICAg IGNhc2UgMjoKLQkgIHBvbWIgPSBuZXcgT3V0cHV0X21lcmdlX3N0cmluZzx1 aW50MTZfdD4oYWRkcmFsaWduKTsKLQkgIGJyZWFrOwotICAgICAgICBjYXNl IDQ6Ci0JICBwb21iID0gbmV3IE91dHB1dF9tZXJnZV9zdHJpbmc8dWludDMy X3Q+KGFkZHJhbGlnbik7Ci0JICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK LQkgIHJldHVybiBmYWxzZTsKKwkgIHN3aXRjaCAoZW50c2l6ZSkKKwkgICAg eworCSAgICBjYXNlIDE6CisJICAgICAgcG9tYiA9IG5ldyBPdXRwdXRfbWVy Z2Vfc3RyaW5nPGNoYXI+KGFkZHJhbGlnbik7CisJICAgICAgYnJlYWs7CisJ ICAgIGNhc2UgMjoKKwkgICAgICBwb21iID0gbmV3IE91dHB1dF9tZXJnZV9z dHJpbmc8dWludDE2X3Q+KGFkZHJhbGlnbik7CisJICAgICAgYnJlYWs7CisJ ICAgIGNhc2UgNDoKKwkgICAgICBwb21iID0gbmV3IE91dHB1dF9tZXJnZV9z dHJpbmc8dWludDMyX3Q+KGFkZHJhbGlnbik7CisJICAgICAgYnJlYWs7CisJ ICAgIGRlZmF1bHQ6CisJICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CiAJ fQorICAgICAgLy8gQWRkIG5ldyBtZXJnZSBzZWN0aW9uIHRvIHRoaXMgb3V0 cHV0IHNlY3Rpb24gYW5kIGxpbmsgbWVyZ2UKKyAgICAgIC8vIHNlY3Rpb24g cHJvcGVydGllcyB0byBuZXcgbWVyZ2Ugc2VjdGlvbiBpbiBtYXAuCisgICAg ICB0aGlzLT5hZGRfb3V0cHV0X21lcmdlX3NlY3Rpb24ocG9tYiwgaXNfc3Ry aW5nLCBlbnRzaXplKTsKKyAgICAgIHRoaXMtPm1lcmdlX3NlY3Rpb25fYnlf cHJvcGVydGllc19tYXBfW21zcF0gPSBwb21iOwogICAgIH0KIAotICAvLyBB ZGQgbmV3IG1lcmdlIHNlY3Rpb24gdG8gdGhpcyBvdXRwdXQgc2VjdGlvbiBh bmQgbGluayBtZXJnZSBzZWN0aW9uCi0gIC8vIHByb3BlcnRpZXMgdG8gbmV3 IG1lcmdlIHNlY3Rpb24gaW4gbWFwLgotICB0aGlzLT5hZGRfb3V0cHV0X21l cmdlX3NlY3Rpb24ocG9tYiwgaXNfc3RyaW5nLCBlbnRzaXplKTsKLSAgdGhp cy0+bWVyZ2Vfc2VjdGlvbl9ieV9wcm9wZXJ0aWVzX21hcF9bbXNwXSA9IHBv bWI7Ci0KLSAgLy8gQWRkIGlucHV0IHNlY3Rpb24gdG8gbmV3IG1lcmdlIHNl Y3Rpb24gYW5kIGxpbmsgaW5wdXQgc2VjdGlvbiB0byBuZXcKLSAgLy8gbWVy Z2Ugc2VjdGlvbiBpbiBtYXAuCi0gIHBvbWItPmFkZF9pbnB1dF9zZWN0aW9u KG9iamVjdCwgc2huZHgpOwotICBDb25zdF9zZWN0aW9uX2lkIGNzaWQob2Jq ZWN0LCBzaG5keCk7Ci0gIHRoaXMtPm1lcmdlX3NlY3Rpb25fbWFwX1tjc2lk XSA9IHBvbWI7Ci0KLSAgcmV0dXJuIHRydWU7CisgIGlmIChwb21iLT5hZGRf aW5wdXRfc2VjdGlvbihvYmplY3QsIHNobmR4KSkKKyAgICB7CisgICAgICAv LyBBZGQgaW5wdXQgc2VjdGlvbiB0byBuZXcgbWVyZ2Ugc2VjdGlvbiBhbmQg bGluayBpbnB1dCBzZWN0aW9uIHRvIG5ldworICAgICAgLy8gbWVyZ2Ugc2Vj dGlvbiBpbiBtYXAuCisgICAgICBDb25zdF9zZWN0aW9uX2lkIGNzaWQob2Jq ZWN0LCBzaG5keCk7CisgICAgICB0aGlzLT5tZXJnZV9zZWN0aW9uX21hcF9b Y3NpZF0gPSBwb21iOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICBl bHNlCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAvLyBCdWlsZCBhIHJlbGF4 YXRpb24gbWFwIHRvIHNwZWVkIHVwIHJlbGF4YXRpb24gb2YgZXhpc3Rpbmcg aW5wdXQgc2VjdGlvbnMuCg== --000325561ef681ddb60483c238ed--