This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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] | |
Please CC me as I'm not subscribed to the list!
Hello List,
while cross-compiling a Gentoo Linux system for an arm architecture I noticed
that in some cases the sysroot prefix is not prepended to absolute library path.
This especially can be seen after adding some debugging to ldfile.c line 311.
For linking a simple C program "int main(void) { return 0; }" you see that the
entry->sysrooted flag is set to TRUE while the filename to link is
"/lib/libc.so.6".
The toolchain sysroot is /usr/armv4tl-softfloat-linux-gnueabi. In the
following the
sysroot prefix gets prepended. However, in my interpretation the sysroot prefix
should have been prepended before if entry->sysrooted == TRUE!?
When linking against the following linker script
OUTPUT_FORMAT ( elf32-littlearm )
GROUP ( /lib/libusb.so )
you get a entry->sysrooted == FALSE and filename == "/lib/libusb.so" in the
following the prefix gets not prepended as entry->sysrooted == FALSE which
leads to sever problems during cross-compilation.
The questions are now:
- Should the sysroot prefix have been prepended when entry->sysrooted == TRUE?
- If so, why is the filename then "/lib/libc.so.6" in the first case?
- If not, why isn't the sysroot prepended to the file specified in the
linker file?
I attached a RFC patch that solves both issues for me by testing if
the sysroot was
already prepended right before ld tries to prepend the prefix and
change the condition
to if ! entry->sysrooted.
Best regards,
Sven 'sleipnir' Rebhan
Attachment:
binutils-2.19.1-ld-sysroot.patch
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |