| 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 |