| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:to:from:subject:message-id:date:mime-version | |
| :content-type; q=dns; s=default; b=OwFGenXfxZgLSdP6ATvEyaf48Av2/ | |
| J6XeZeiaUluDugV6GIdVLRESVHwuq2cVOLhvFjghXGWUAQEIZXZUjk4ZezV4+Cyt | |
| PI46damjCHx0dlOMAMVBMp9ZCaZLDIxf44aCB1K+6oiIbJvkUtQaVQp5YaoJ4c0B | |
| pbwjBcOLO2ub5c= | |
| DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:to:from:subject:message-id:date:mime-version | |
| :content-type; s=default; bh=ZJr+MVMrtIBweuaA4D4wKfbq1ZI=; b=cr4 | |
| 6tgGP6J0tW6druPhYEI8pnQYA/3ABctT+yAJ0zG13SdTmME9udRMA60RcHBNCHGk | |
| apA4bMS+wncV3dAoug/44hmWd6l3LitVR+2NQAfE2igQEArSCzhOJv6gUiTbU2Jc | |
| Hh0S1csW7abXXbOhJYYkNepgv7r9HbWLLLWyyArE= | |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| 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 |
| Authentication-Results: | sourceware.org; auth=none |
| X-Spam-SWARE-Status: | No, score=-6.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= |
| X-HELO: | atfriesa01.ssi-schaefer.com |
| To: | cygwin AT cygwin DOT com |
| From: | Michael Haubenwallner <michael DOT haubenwallner AT ssi-schaefer DOT com> |
| Subject: | linker (binutils ld) is unable to resolve weak symbol, depends on object file order |
| Openpgp: | preference=signencrypt |
| Message-ID: | <c302ea94-ae7b-f7b1-9d8f-0c2e31dc6bc7@ssi-schaefer.com> |
| Date: | Fri, 7 Jun 2019 12:04:43 +0200 |
| User-Agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 |
| MIME-Version: | 1.0 |
--------------DE594A2A9434DC3CF1F20BD3
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Hi,
so I'm encountering a strange problem related to object file order passed to
the linker, with any binutils and gcc version available to setup-x86_64.exe:
$ cat weak-func.c
extern void weakfunc() __attribute__((weak));
void weakfunc() {}
$ cat weak-main.c
extern void weakfunc() __attribute__((weak));
int main() { weakfunc(); }
$ gcc -o weak.exe weak-func.c weak-main.c
SUCCESS
But then, changing the order of input files on the command line does break
(does work on Linux of course):
$ gcc -o weak.exe weak-main.c weak-func.c
/usr/lib/gcc/x86_64-pc-cygwin/8.3.0/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccIthYHe.o:weak-main.c:(.text+0xe): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `weakfunc'
collect2: error: ld returned 1 exit status
So the difference is that the object providing weakfunc is passed to
the linker after the object requiring weakfunc.
Attached is the weak-func.sh script that does perform these commands.
Thanks!
/haubi/
--------------DE594A2A9434DC3CF1F20BD3
Content-Type: application/x-shellscript;
name="weak-func.sh"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="weak-func.sh"
IyEgL3Vzci9iaW4vZW52IGJhc2gKCnNldCAtZXgKCmNhdCA+IHdlYWstZnVu
Yy5jIDw8J0VPRicKZXh0ZXJuIHZvaWQgd2Vha2Z1bmMoKSBfX2F0dHJpYnV0
ZV9fKCh3ZWFrKSk7CnZvaWQgd2Vha2Z1bmMoKSB7fQpFT0YKCmNhdCA+IHdl
YWstbWFpbi5jIDw8J0VPRicKZXh0ZXJuIHZvaWQgd2Vha2Z1bmMoKSBfX2F0
dHJpYnV0ZV9fKCh3ZWFrKSk7CmludCBtYWluKCkgeyB3ZWFrZnVuYygpOyB9
CkVPRgoKJHtDQzotZ2NjfSAtbyB3ZWFrLmV4ZSB3ZWFrLWZ1bmMuYyB3ZWFr
LW1haW4uYyAmJiA6ICdQQVNTJyB8fCA6ICdGQUlMJwoke0NDOi1nY2N9IC1v
IHdlYWsuZXhlIHdlYWstbWFpbi5jIHdlYWstZnVuYy5jICYmIDogJ1BBU1Mn
IHx8IDogJ0ZBSUwnCg==
--------------DE594A2A9434DC3CF1F20BD3
Content-Type: text/plain; charset=us-ascii
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
--------------DE594A2A9434DC3CF1F20BD3--
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |