From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22668 invoked by alias); 12 Feb 2005 00:20:15 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 21879 invoked from network); 12 Feb 2005 00:19:09 -0000 Received: from unknown (HELO mail.codesourcery.com) (65.74.133.9) by sourceware.org with SMTP; 12 Feb 2005 00:19:09 -0000 Received: (qmail 14381 invoked from network); 12 Feb 2005 00:19:09 -0000 Received: from localhost (HELO tazendra) (zack@127.0.0.1) by mail.codesourcery.com with SMTP; 12 Feb 2005 00:19:09 -0000 Received: by tazendra (sSMTP sendmail emulation); Fri, 11 Feb 2005 16:25:16 -0800 Subject: Re: Better diagnostics for undefined symbols in assignments to dot From: Zack Weinberg To: Binutils Mailing List In-Reply-To: <873bw6u5yr.fsf@codesourcery.com> References: <873bw6u5yr.fsf@codesourcery.com> Content-Type: multipart/mixed; boundary="=-Sha7V/TK+MzhjURhd1jj" Organization: CodeSourcery, LLC Date: Sun, 13 Feb 2005 12:36:00 -0000 Message-Id: <1108167916.4309.55.camel@localhost.localdomain> Mime-Version: 1.0 X-SW-Source: 2005-02/txt/msg00275.txt.bz2 --=-Sha7V/TK+MzhjURhd1jj Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 1565 On Tue, 2005-02-08 at 12:55 -0800, Zack Weinberg wrote: > Currently, if you write a linker script which assigns dot to an > expression involving a symbol, and that symbol is undefined, you get > the not-terribly-helpful diagnostic "invalid assignment to location > counter". For instance: [...] Since no one seems interested in helping me with this, I have redone it in a way which at least does not break anything. I'm not hugely enthused about adding a file-global state flag, but then neither am I enthused about the alternative of adding another argument to just about every function in ldexp.c (it wouldn't be used in most of them, but who knows, my clients may come back next week with another place where the diagnostics would be better if we knew we were processing an assignment to the location counter). I've also added a full set of tests for both the good diagnostic and the construct that raised the issue in the first place. OK to commit? zw * ldexp.c (assigning_to_dot): New global flag. (fold_name): If assigning_to_dot is true, object immediately to an undefined symbol. (exp_fold_tree): Set and clear assigning_to_dot around the recursive call to exp_fold_tree to process the right-hand side of an assignment to the location counter. testsuite: * ld-scripts/align.exp: Rename existing "ALIGN" test to "align1". Add dump tests "align2a", "align2b", "align2c". * ld-scripts/align2.t, ld-scripts/align2a.s, ld-scripts/align2a.d * ld-scripts/align2b.s, ld-scripts/align2b.d * ld-scripts/align2c.s, ld-scripts/align2c.d: New files. --=-Sha7V/TK+MzhjURhd1jj Content-Description: Content-Disposition: inline; filename=ld-better-diagnostic-assign-dot.diff Content-Transfer-Encoding: base64 Content-Type: text/x-patch; charset=utf-8 Content-length: 6723 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KSW5kZXg6IGxkZXhwLmMNCi0tLSBs ZGV4cC5jCTIxIEphbiAyMDA1IDA0OjE1OjU4IC0wMDAwCTEuNDINCisrKyBs ZGV4cC5jCTEyIEZlYiAyMDA1IDAwOjExOjUxIC0wMDAwDQpAQCAtNTAsNiAr NTAsOSBAQCBzdHJ1Y3QgZXhwX2RhdGFfc2VnIGV4cF9kYXRhX3NlZzsNCiAN CiBzZWdtZW50X3R5cGUgKnNlZ21lbnRzOw0KIA0KKy8qIFByaW5jaXBhbGx5 IHVzZWQgZm9yIGRpYWdub3N0aWNzLiAgKi8NCitzdGF0aWMgYmZkX2Jvb2xl YW4gYXNzaWduaW5nX3RvX2RvdCA9IEZBTFNFOw0KKw0KIC8qIFByaW50IHRo ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHRva2VuLiAg U3Vycm91bmQgaXQNCiAgICB3aXRoIHNwYWNlcyBpZiBJTkZJWF9QIGlzIFRS VUUuICAqLw0KIA0KQEAgLTU5NSw3ICs1OTgsOCBAQCBmb2xkX25hbWUgKGV0 cmVlX3R5cGUgKnRyZWUsDQogCQkgICAgfQ0KIAkJfQ0KIAkgICAgfQ0KLQkg IGVsc2UgaWYgKGFsbG9jYXRpb25fZG9uZSA9PSBsYW5nX2ZpbmFsX3BoYXNl X2VudW0pDQorCSAgZWxzZSBpZiAoYWxsb2NhdGlvbl9kb25lID09IGxhbmdf ZmluYWxfcGhhc2VfZW51bQ0KKwkJICAgfHwgYXNzaWduaW5nX3RvX2RvdCkN CiAJICAgIGVpbmZvIChfKCIlRiVTOiB1bmRlZmluZWQgc3ltYm9sIGAlcycg cmVmZXJlbmNlZCBpbiBleHByZXNzaW9uXG4iKSwNCiAJCSAgIHRyZWUtPm5h bWUubmFtZSk7DQogCSAgZWxzZSBpZiAoaC0+dHlwZSA9PSBiZmRfbGlua19o YXNoX25ldykNCkBAIC03NTQsMTAgKzc1OCwxMyBAQCBleHBfZm9sZF90cmVl IChldHJlZV90eXBlICp0cmVlLA0KIAkgICAgICB8fCAoYWxsb2NhdGlvbl9k b25lID09IGxhbmdfZmluYWxfcGhhc2VfZW51bQ0KIAkJICAmJiBjdXJyZW50 X3NlY3Rpb24gPT0gYWJzX291dHB1dF9zZWN0aW9uKSkNCiAJICAgIHsNCisJ ICAgICAgLyogTm90aWZ5IHRoZSBmb2xkZXIgdGhhdCB0aGlzIGlzIGFuIGFz c2lnbm1lbnQgdG8gZG90LiAgKi8NCisJICAgICAgYXNzaWduaW5nX3RvX2Rv dCA9IFRSVUU7DQogCSAgICAgIHJlc3VsdCA9IGV4cF9mb2xkX3RyZWUgKHRy ZWUtPmFzc2lnbi5zcmMsDQogCQkJCSAgICAgIGN1cnJlbnRfc2VjdGlvbiwN Ci0JCQkJICAgICAgYWxsb2NhdGlvbl9kb25lLCBkb3QsDQotCQkJCSAgICAg IGRvdHApOw0KKwkJCQkgICAgICBhbGxvY2F0aW9uX2RvbmUsIGRvdCwgZG90 cCk7DQorCSAgICAgIGFzc2lnbmluZ190b19kb3QgPSBGQUxTRTsNCisNCiAJ ICAgICAgaWYgKCEgcmVzdWx0LnZhbGlkX3ApDQogCQllaW5mbyAoXygiJUYl UyBpbnZhbGlkIGFzc2lnbm1lbnQgdG8gbG9jYXRpb24gY291bnRlclxuIikp Ow0KIAkgICAgICBlbHNlDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpJbmRl eDogdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24uZXhwDQotLS0gdGVzdHN1 aXRlL2xkLXNjcmlwdHMvYWxpZ24uZXhwCTggQXByIDIwMDQgMDA6NTE6Mzcg LTAwMDAJMS4yDQorKysgdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24uZXhw CTEyIEZlYiAyMDA1IDAwOjExOjUxIC0wMDAwDQpAQCAtMjIsNyArMjIsNyBA QCBpZiBbaXN0YXJnZXQgInJzNjAwMC0qLWFpeCoiXSB7DQogICAgIHJldHVy bg0KIH0NCiANCi1zZXQgdGVzdG5hbWUgIkFMSUdOIg0KK3NldCB0ZXN0bmFt ZSAiYWxpZ24xIg0KIA0KIGlmICFbbGRfYXNzZW1ibGUgJGFzICRzcmNkaXIv JHN1YmRpci9hbGlnbi5zIHRtcGRpci9hbGlnbi5vXSB7DQogICAgIHVucmVz b2x2ZWQgJHRlc3RuYW1lDQpAQCAtMzQsMyArMzQsNyBAQCBpZiAhW2xkX3Np bXBsZV9saW5rICRsZCB0bXBkaXIvYWxpZ24gIi1UDQogfSBlbHNlIHsNCiAg ICAgcGFzcyAkdGVzdG5hbWUNCiB9DQorDQorcnVuX2R1bXBfdGVzdCBhbGln bjJhDQorcnVuX2R1bXBfdGVzdCBhbGlnbjJiDQorcnVuX2R1bXBfdGVzdCBh bGlnbjJjDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpJbmRleDogdGVzdHN1 aXRlL2xkLXNjcmlwdHMvYWxpZ24yLnQNCi0tLSB0ZXN0c3VpdGUvbGQtc2Ny aXB0cy9hbGlnbjIudAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwDQorKysg dGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yLnQJMTIgRmViIDIwMDUgMDA6 MTE6NTEgLTAwMDANCkBAIC0wLDAgKzEsNiBAQA0KK1NFQ1RJT05TDQorew0K KyAgLnRleHQgOiB7KigudGV4dCl9DQorICAuID0gQUxJR04oZGF0YV9hbGln bik7DQorICAuZGF0YSA6IHsqKC5kYXRhKX0NCit9DQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpJbmRleDogdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24y YS5kDQotLS0gdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yYS5kCTEgSmFu IDE5NzAgMDA6MDA6MDAgLTAwMDANCisrKyB0ZXN0c3VpdGUvbGQtc2NyaXB0 cy9hbGlnbjJhLmQJMTIgRmViIDIwMDUgMDA6MTE6NTEgLTAwMDANCkBAIC0w LDAgKzEsMTMgQEANCisjIGxkOiAtLWRlZnN5bSBkYXRhX2FsaWduPTE2IC1U IGFsaWduMi50DQorIyBvYmpkdW1wOiAtLXNlY3Rpb24taGVhZGVycw0KKw0K K1teOl0rOiArZmlsZSBmb3JtYXQuKg0KKw0KK1NlY3Rpb25zOg0KK0lkeCAr TmFtZSArU2l6ZSArVk1BICtMTUEgK0ZpbGUgK29mZiArQWxnbg0KKyArMCAr XC50ZXh0ICswMDAwMDAwNCArMDAwMDAwMDAgKzAwMDAwMDAwICswMDAwMTAw MCArMlwqXCoyDQorICtDT05URU5UUywgK0FMTE9DLCArTE9BRCwgK1JFQURP TkxZLCArQ09ERQ0KKyArMSArXC5kYXRhICswMDAwMDAwNCArMDAwMDAwMTAg KzAwMDAwMDEwICswMDAwMTAxMCArMlwqXCoyDQorICtDT05URU5UUywgK0FM TE9DLCArTE9BRCwgK0RBVEENCisgKzIgK1wuYnNzICswMDAwMDAwMCArMDAw MDAwMTQgKzAwMDAwMDE0ICswMDAwMTAxNCArMlwqXCoyDQorICtBTExPQw0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KSW5kZXg6IHRlc3RzdWl0ZS9sZC1z Y3JpcHRzL2FsaWduMmEucw0KLS0tIHRlc3RzdWl0ZS9sZC1zY3JpcHRzL2Fs aWduMmEucwkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwDQorKysgdGVzdHN1 aXRlL2xkLXNjcmlwdHMvYWxpZ24yYS5zCTEyIEZlYiAyMDA1IDAwOjExOjUx IC0wMDAwDQpAQCAtMCwwICsxLDQgQEANCisJLnRleHQNCisJLmxvbmcgMA0K KwkuZGF0YQ0KKwkubG9uZyAweDEyMzQ1Njc4DQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpJbmRleDogdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yYi5k DQotLS0gdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yYi5kCTEgSmFuIDE5 NzAgMDA6MDA6MDAgLTAwMDANCisrKyB0ZXN0c3VpdGUvbGQtc2NyaXB0cy9h bGlnbjJiLmQJMTIgRmViIDIwMDUgMDA6MTE6NTEgLTAwMDANCkBAIC0wLDAg KzEsMTMgQEANCisjIGxkOiAtLWRlZnN5bSBkYXRhX2FsaWduPTMyIC1UIGFs aWduMi50DQorIyBvYmpkdW1wOiAtLXNlY3Rpb24taGVhZGVycw0KKw0KK1te Ol0rOiArZmlsZSArZm9ybWF0LioNCisNCitTZWN0aW9uczoNCitJZHggK05h bWUgK1NpemUgK1ZNQSArTE1BICtGaWxlIG9mZiArQWxnbg0KKyArMCArXC50 ZXh0ICswMDAwMDAwNCArMDAwMDAwMDAgKzAwMDAwMDAwICswMDAwMTAwMCAr MlwqXCoyDQorICtDT05URU5UUywgK0FMTE9DLCArTE9BRCwgK1JFQURPTkxZ LCArQ09ERQ0KKyArMSArXC5kYXRhICswMDAwMDAwNCArMDAwMDAwMjAgKzAw MDAwMDIwICswMDAwMTAyMCArMlwqXCoyDQorICtDT05URU5UUywgK0FMTE9D LCArTE9BRCwgK0RBVEENCisgKzIgK1wuYnNzICswMDAwMDAwMCArMDAwMDAw MjQgKzAwMDAwMDI0ICswMDAwMTAyNCArMlwqXCoyDQorICtBTExPQw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KSW5kZXg6IHRlc3RzdWl0ZS9sZC1zY3Jp cHRzL2FsaWduMmIucw0KLS0tIHRlc3RzdWl0ZS9sZC1zY3JpcHRzL2FsaWdu MmIucwkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwDQorKysgdGVzdHN1aXRl L2xkLXNjcmlwdHMvYWxpZ24yYi5zCTEyIEZlYiAyMDA1IDAwOjExOjUxIC0w MDAwDQpAQCAtMCwwICsxLDQgQEANCisJLnRleHQNCisJLmxvbmcgMA0KKwku ZGF0YQ0KKwkubG9uZyAweDEyMzQ1Njc4DQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpJbmRleDogdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yYy5kDQot LS0gdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24yYy5kCTEgSmFuIDE5NzAg MDA6MDA6MDAgLTAwMDANCisrKyB0ZXN0c3VpdGUvbGQtc2NyaXB0cy9hbGln bjJjLmQJMTIgRmViIDIwMDUgMDA6MTE6NTEgLTAwMDANCkBAIC0wLDAgKzEs MiBAQA0KKyMgbGQ6IC1UIGFsaWduMi50DQorIyBlcnJvcjogdW5kZWZpbmVk IHN5bWJvbC4qaW4gZXhwcmVzc2lvbg0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KSW5kZXg6IHRlc3RzdWl0ZS9sZC1zY3JpcHRzL2FsaWduMmMucw0KLS0t IHRlc3RzdWl0ZS9sZC1zY3JpcHRzL2FsaWduMmMucwkxIEphbiAxOTcwIDAw OjAwOjAwIC0wMDAwDQorKysgdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24y Yy5zCTEyIEZlYiAyMDA1IDAwOjExOjUxIC0wMDAwDQpAQCAtMCwwICsxLDQg QEANCisJLnRleHQNCisJLmxvbmcgMA0KKwkuZGF0YQ0KKwkubG9uZyAweDEy MzQ1Njc4DQo= --=-Sha7V/TK+MzhjURhd1jj--