This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
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/
Attachment:
weak-func.sh
Description: application/shellscript
-- 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
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |