delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/03/10/09:42:18

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019