delorie.com/archives/browse.cgi | search |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
X-Authenticated: | #14308112 |
Date: | Thu, 10 Mar 2005 16:40:58 +0200 |
From: | Pavel Tsekov <ptsekov AT gmx DOT net> |
X-X-Sender: | ptsekov AT mordor |
To: | cygwin AT cygwin DOT com |
cc: | binutils AT sourceware DOT org |
Subject: | Possible bug in gas/ld when using .linkonce |
Message-ID: | <Pine.CYG.4.58.0503101607001.624@mordor> |
MIME-Version: | 1.0 |
X-Y-GMX-Trusted: | 0 |
X-IsSubscribed: | yes |
---559023410-1939519850-1110465452=:624 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <Pine DOT CYG DOT 4 DOT 58 DOT 0503101639161 DOT 1308 AT mordor> Hello, I found this one while playing with Cygwin's code which takes care of seamless loading of dll functions (autoload.cc). It seems that when a symbol in a section marked .linkonce is referenced, wrong relocation info is generated for that symbol. For example if you have several symbols - symbol1, symbol2 and symbol3, - which are placed like this: offset name 0 symbol1 3 symbol2 15 symbol3 References to this symbols will be generated like this: symbol1 -> 0 symbol2 -> 6 symbol3 -> 30 I am attaching a testcase. linkonce.cc is the code which demonstrates the problem. linkonce1.cc is the same code but with .linkonce directives removed and doesn't suffer from the problem. Here is also the output of `objdump -r' on both object files. $ g++ -o linkonce.o -c linkonce.cc $ objdump -r linkonce.o linkonce.o: file format pe-i386 RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 00000015 DISP32 __alloca 0000001a DISP32 ___main RELOCATION RECORDS FOR [.some_section1_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section1_text 00000007 dir32 _label_1 RELOCATION RECORDS FOR [.some_section2_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section2_text 00000007 dir32 _label_2+0xffffffee RELOCATION RECORDS FOR [.some_section3_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section3_text 00000007 dir32 _label_3+0xffffffe3 $ g++ -o linkonce1.o -c linkonce1.cc $ objdump -r linkonce1.o linkonce1.o: file format pe-i386 RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 00000015 DISP32 __alloca 0000001a DISP32 ___main RELOCATION RECORDS FOR [.some_section1_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section1_text 00000007 dir32 .some_section RELOCATION RECORDS FOR [.some_section2_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section2_text 00000007 dir32 .some_section RELOCATION RECORDS FOR [.some_section3_text]: OFFSET TYPE VALUE 00000001 dir32 .some_section3_text 00000007 dir32 .some_section ---559023410-1939519850-1110465452=:624 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="linkonce1.cc" Content-Transfer-Encoding: BASE64 Content-ID: <Pine DOT CYG DOT 4 DOT 58 DOT 0503101637320 DOT 624 AT mordor> Content-Description: Content-Disposition: ATTACHMENT; FILENAME="linkonce1.cc" X19hc21fXyAoIgkJCQkJCVxuXA0KICAuc2VjdGlvbgkuc29tZV9zZWN0aW9u LFwid1wiCQkJXG5cDQpfbGFiZWxfMToJCQkJCQlcblwNCiAgLmxvbmcJCTB4 MTIzNDU2NzgJCQkJXG5cDQogIC5hc2NpeglcIkhlbGxvLCBXb3JsZCFcIgkJ CVxuXA0KICAudGV4dAkJCQkJCQlcblwNCiIpOw0KDQpfX2FzbV9fICgiCQkJ CQkJXG5cDQogIC5zZWN0aW9uCS5zb21lX3NlY3Rpb24sXCJ3XCIJCQlcblwN Cl9sYWJlbF8yOgkJCQkJCVxuXA0KICAubG9uZwkJMHgxMjM0NTY3OAkJCQlc blwNCiAgLmFzY2l6CVwiYWJjZGVmXCIJCQkJXG5cDQogIC50ZXh0CQkJCQkJ CVxuXA0KIik7DQoNCl9fYXNtX18gKCIJCQkJCQlcblwNCiAgLnNlY3Rpb24J LnNvbWVfc2VjdGlvbixcIndcIgkJCVxuXA0KX2xhYmVsXzM6CQkJCQkJXG5c DQogIC5sb25nCQkweDEyMzQ1Njc4CQkJCVxuXA0KICAuYXNjaXoJXCJ4eXpc IgkJCQkJXG5cDQogIC50ZXh0CQkJCQkJCVxuXA0KIik7DQoNCg0KX19hc21f XyAoIgkJCQkJCVxuXA0KICAuc2VjdGlvbgkuc29tZV9zZWN0aW9uMV90ZXh0 LFwid3hcIgkJXG5cDQogIC5hbGlnbgk4CQkJCQlcblwNCiAgbW92bAkJKDFm KSwlZWF4CQkJCVxuXA0KICBjYWxsCQkqKCVlYXgpCQkJCQlcblwNCjE6Lmxv bmcJCV9sYWJlbF8xCQkJCVxuXA0KICAudGV4dAkJCQkJCQlcblwNCiIpOw0K DQpfX2FzbV9fICgiCQkJCQkJXG5cDQogIC5zZWN0aW9uCS5zb21lX3NlY3Rp b24yX3RleHQsXCJ3eFwiCQlcblwNCiAgLmFsaWduCTgJCQkJCVxuXA0KICBt b3ZsCQkoMWYpLCVlYXgJCQkJXG5cDQogIGNhbGwJCSooJWVheCkJCQkJCVxu XA0KMToubG9uZwkJX2xhYmVsXzIJCQkJXG5cDQogIC50ZXh0CQkJCQkJCVxu XA0KIik7DQoNCl9fYXNtX18gKCIJCQkJCQlcblwNCiAgLnNlY3Rpb24JLnNv bWVfc2VjdGlvbjNfdGV4dCxcInd4XCIJCVxuXA0KICAuYWxpZ24JOAkJCQkJ XG5cDQogIG1vdmwJCSgxZiksJWVheAkJCQlcblwNCiAgY2FsbAkJKiglZWF4 KQkJCQkJXG5cDQoxOi5sb25nCQlfbGFiZWxfMwkJCQlcblwNCiAgLnRleHQJ CQkJCQkJXG5cDQoiKTsNCg0KaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikNCnsNCiAgcmV0dXJuIDA7DQp9DQo= ---559023410-1939519850-1110465452=:624 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="linkonce.cc" Content-Transfer-Encoding: BASE64 Content-ID: <Pine DOT CYG DOT 4 DOT 58 DOT 0503101637321 DOT 624 AT mordor> Content-Description: Content-Disposition: ATTACHMENT; FILENAME="linkonce.cc" X19hc21fXyAoIgkJCQkJCVxuXA0KICAuc2VjdGlvbgkuc29tZV9zZWN0aW9u LFwid1wiCQkJXG5cDQogIC5saW5rb25jZQkJCQkJCVxuXA0KX2xhYmVsXzE6 CQkJCQkJXG5cDQogIC5sb25nCQkweDEyMzQ1Njc4CQkJCVxuXA0KICAuYXNj aXoJXCJIZWxsbywgV29ybGQhXCIJCQlcblwNCiAgLnRleHQJCQkJCQkJXG5c DQoiKTsNCg0KX19hc21fXyAoIgkJCQkJCVxuXA0KICAuc2VjdGlvbgkuc29t ZV9zZWN0aW9uLFwid1wiCQkJXG5cDQogIC5saW5rb25jZQkJCQkJCVxuXA0K X2xhYmVsXzI6CQkJCQkJXG5cDQogIC5sb25nCQkweDEyMzQ1Njc4CQkJCVxu XA0KICAuYXNjaXoJXCJhYmNkZWZcIgkJCQlcblwNCiAgLnRleHQJCQkJCQkJ XG5cDQoiKTsNCg0KX19hc21fXyAoIgkJCQkJCVxuXA0KICAuc2VjdGlvbgku c29tZV9zZWN0aW9uLFwid1wiCQkJXG5cDQogIC5saW5rb25jZQkJCQkJCVxu XA0KX2xhYmVsXzM6CQkJCQkJXG5cDQogIC5sb25nCQkweDEyMzQ1Njc4CQkJ CVxuXA0KICAuYXNjaXoJXCJ4eXpcIgkJCQkJXG5cDQogIC50ZXh0CQkJCQkJ CVxuXA0KIik7DQoNCg0KX19hc21fXyAoIgkJCQkJCVxuXA0KICAuc2VjdGlv bgkuc29tZV9zZWN0aW9uMV90ZXh0LFwid3hcIgkJXG5cDQogIC5hbGlnbgk4 CQkJCQlcblwNCiAgbW92bAkJKDFmKSwlZWF4CQkJCVxuXA0KICBjYWxsCQkq KCVlYXgpCQkJCQlcblwNCjE6LmxvbmcJCV9sYWJlbF8xCQkJCVxuXA0KICAu dGV4dAkJCQkJCQlcblwNCiIpOw0KDQpfX2FzbV9fICgiCQkJCQkJXG5cDQog IC5zZWN0aW9uCS5zb21lX3NlY3Rpb24yX3RleHQsXCJ3eFwiCQlcblwNCiAg LmFsaWduCTgJCQkJCVxuXA0KICBtb3ZsCQkoMWYpLCVlYXgJCQkJXG5cDQog IGNhbGwJCSooJWVheCkJCQkJCVxuXA0KMToubG9uZwkJX2xhYmVsXzIJCQkJ XG5cDQogIC50ZXh0CQkJCQkJCVxuXA0KIik7DQoNCl9fYXNtX18gKCIJCQkJ CQlcblwNCiAgLnNlY3Rpb24JLnNvbWVfc2VjdGlvbjNfdGV4dCxcInd4XCIJ CVxuXA0KICAuYWxpZ24JOAkJCQkJXG5cDQogIG1vdmwJCSgxZiksJWVheAkJ CQlcblwNCiAgY2FsbAkJKiglZWF4KQkJCQkJXG5cDQoxOi5sb25nCQlfbGFi ZWxfMwkJCQlcblwNCiAgLnRleHQJCQkJCQkJXG5cDQoiKTsNCg0KaW50IG1h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikNCnsNCiAgcmV0dXJuIDA7DQp9 DQo= ---559023410-1939519850-1110465452=:624 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ ---559023410-1939519850-1110465452=:624--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |