#17941: build binutils fail for Target System (x86_64)
----------------------+------------------------
Reporter: Galen | Owner: developers
Type: defect | Status: new
Priority: normal | Milestone:
Component: packages | Version: Trunk
Keywords: |
----------------------+------------------------
I saw it is linking .libs/libbfd-2.24.so
but report Error:
relocation R_X86_64_32S against `_sch_istable' can not be used when making
a shared object; recompile with -fPIC
{{{
libtool: link: x86_64-openwrt-linux-uclibc-gcc -shared .libs/archive.o
.libs/archures.o .libs/bfd.o .libs/bfdio.o .libs/bfdwin.o .lib
s/cache.o .libs/coffgen.o .libs/corefile.o .libs/format.o .libs/init.o
.libs/libbfd.o .libs/opncls.o .libs/reloc.o .libs/section.o .li
bs/syms.o .libs/targets.o .libs/hash.o .libs/linker.o .libs/srec.o
.libs/binary.o .libs/tekhex.o .libs/ihex.o .libs/stabs.o .libs/stab
-syms.o .libs/merge.o .libs/dwarf2.o .libs/simple.o .libs/compress.o
.libs/verilog.o .libs/elf64-x86-64.o .libs/elf-ifunc.o .libs/elf-
nacl.o .libs/elf64.o .libs/elf.o .libs/elflink.o .libs/elf-attrs.o .libs
/elf-strtab.o .libs/elf-eh-frame.o .libs/dwarf1.o .libs/elf32-
i386.o .libs/elf-vxworks.o .libs/elf32.o .libs/i386linux.o .libs/aout32.o
.libs/pei-i386.o .libs/peigen.o .libs/cofflink.o .libs/pei-x
86_64.o .libs/pex64igen.o .libs/elf64-gen.o .libs/elf32-gen.o
.libs/cpu-i386.o .libs/cpu-l1om.o .libs/cpu-k1om.o .libs/archive64.o -
L/home/user/openwrt/staging_dir/target-x86_64_uClibc-0.9.33.2/usr/lib
-L/home/user/openwrt/staging_dir/target-x86_64_uClibc-
0.9.33.2/lib -L/home/user/openwrt/staging_dir/toolchain-
x86_64_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib -L/home/user/openwrt/s
taging_dir/toolchain-x86_64_gcc-4.8-linaro_uClibc-0.9.33.2/lib
-L/home/user/openwrt/build_dir/target-x86_64_uClibc-0.9.33.2/binut
ils-2.24/bfd/../libiberty/pic -liberty -lz -Wl,-lc -Wl,--as-needed
-Wl,-lm -Wl,--no-as-needed -Wl,-soname -Wl,libbfd-2.24.so -o .li
bs/libbfd-2.24.so
/home/user/openwrt/staging_dir/toolchain-
x86_64_gcc-4.8-linaro_uClibc-0.9.33.2/lib/gcc/x86_64-openwrt-linux-
uclibc/4.8.3/../../..
/../x86_64-openwrt-linux-uclibc/bin/ld: /home/user/openwrt/staging_dir
/toolchain-x86_64_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libibe
rty.a(cplus-dem.o): relocation R_X86_64_32S against `_sch_istable' can not
be used when making a shared object; recompile with -fPIC
/home/user/openwrt/staging_dir/toolchain-
x86_64_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libiberty.a: could not read
symbols: Bad value
collect2: error: ld returned 1 exit status
make[8]: *** [libbfd.la] Error 1
make[8]: Leaving directory `/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24/bfd'
make[7]: *** [all-recursive] Error 1
make[7]: Leaving directory `/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24/bfd'
make[6]: *** [all] Error 2
make[6]: Leaving directory `/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24/bfd'
make[5]: *** [all-bfd] Error 2
make[5]: Leaving directory `/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24'
make[3]: *** [/home/user/openwrt/build_dir/target-
x86_64_uClibc-0.9.33.2/binutils-2.24/.built] Error 2
make[3]: Leaving directory `/home/user/openwrt/package/devel/binutils'
make[2]: *** [package/devel/binutils/compile] Error 2
}}}
According to ticket and changeset:
https://dev.openwrt.org/ticket/17060
https://dev.openwrt.org/changeset/41036
https://dev.openwrt.org/changeset/42337
https://dev.openwrt.org/changeset/42338
My workaround method: don't enable shared on x86_64:
{{{
diff --git a/package/devel/binutils/Makefile
b/package/devel/binutils/Makefile
index e8d45d2..fbc133f 100644
--- a/package/devel/binutils/Makefile
+++ b/package/devel/binutils/Makefile
@@ -47,10 +47,16 @@ endef
TARGET_CFLAGS += $(FPIC)
+ifdef CONFIG_TARGET_x86_64
+CONFIGURE_ARGS += \
+ --enable-install-libiberty \
+ --enable-install-libbfd
+else
CONFIGURE_ARGS += \
--enable-shared \
--enable-install-libiberty \
--enable-install-libbfd
+endif
define Build/Install
$(call Build/Install/Default)
@@ -68,8 +74,10 @@ endef
define Package/objdump/install
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/bin/objdump $(1)/usr/bin/
+ifndef CONFIG_TARGET_x86_64
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libopcodes*.so $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libbfd*.so $(1)/usr/lib/
+endif
endef
define Package/binutils/install
}}}
--
Ticket URL: <https://dev.openwrt.org/ticket/17941>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets