Why are arm libs branded as SYSV?
YAMAMOTO Shigeru
shigeru at os-hackers.jp
Tue Oct 7 16:24:35 UTC 2014
Hi,
>>>>> "Ronald" == Ronald Klop <ronald-lists at klop.ws> writes:
> On my ARM Sheevaplug:
> # file /usr/local/lib/libpcre.so.3
> /usr/local/lib/libpcre.so.3: ELF 32-bit LSB shared object, ARM,
> EABI5 version 1 (SYSV), dynamically linked, stripped
> On my amd64 computer: file /usr/local/lib/libpcre.so.3
> /usr/local/lib/libpcre.so.3: ELF 64-bit LSB shared object, x86-64,
> version 1 (FreeBSD), dynamically linked, stripped
> Because of this I can not run ldd on a shared library on my ARM
> system.
> # ldd -a /usr/local/lib/libpcre.so.3 ldd:
> /usr/local/lib/libpcre.so.3: not a FreeBSD ELF shared object
I modify src for RaspberryPi.
# uname -a
FreeBSD rpi.devel.os-hackers.jp 11.0-CURRENT FreeBSD 11.0-CURRENT #0
2b4736f34c78 (shigeru_raspberry_pi) tip: Sun Oct 5 12:18:07 JST 2014
root at nemesis.os-hackers.jp:/root/rpi/build/work/obj/arm.armv6/root/rpi/build/work/src.hg/sys/RPI-B-VIMAGE arm
# ldd /usr/local/lib/libpcre.so.3
/usr/local/lib/libpcre.so.3:
libthr.so.3 => /lib/libthr.so.3 (0x20297000)
libc.so.7 => /lib/libc.so.7 (0x20100000)
I change src follows,
- 1. copy contrib/binutils/bfd/elf32-arm.c to gnu/usr.bin/binutils/libbfd/elf32-arm.c
- 2. change gnu/usr.bin/binutils/libbfd/elf32-arm.c by following diff,
diff -u contrib/binutils/bfd/elf32-arm.c
- gnu/usr.bin/binutils/libbfd/elf32-arm.c
--- contrib/binutils/bfd/elf32-arm.c 2014-10-05 03:00:54.100351377 +0900
+++ gnu/usr.bin/binutils/libbfd/elf32-arm.c 2014-10-05
- 03:00:54.147901348 +0900
@@ -9343,7 +9343,8 @@
i_ehdrp = elf_elfheader (abfd);
- if (EF_ARM_EABI_VERSION (i_ehdrp->e_flags) == EF_ARM_EABI_UNKNOWN)
+ if (EF_ARM_EABI_VERSION (i_ehdrp->e_flags) == EF_ARM_EABI_UNKNOWN
+ || EF_ARM_EABI_VERSION (i_ehdrp->e_flags) == EF_ARM_EABI_VER5)
i_ehdrp->e_ident[EI_OSABI] = ARM_ELF_OS_ABI_VERSION;
else
i_ehdrp->e_ident[EI_OSABI] = 0;
---
YAMAMOTO Shigeru <shigeru at os-hackers.jp>
More information about the freebsd-arm
mailing list