#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

Reply via email to