[haiku-bugs] [Haiku] #15122: arm linker relocation issues

  • From: "Haiku" <trac@xxxxxxxxxxxx>
  • To: undisclosed-recipients: ;
  • Date: Mon, 24 Jun 2019 13:52:24 -0000

#15122: arm linker relocation issues
--------------------------+------------------------------
 Reporter:  kallisti5     |        Owner:  bonefish
     Type:  bug           |       Status:  new
 Priority:  normal        |    Milestone:  Unscheduled
Component:  Build System  |      Version:  R1/Development
 Keywords:                |   Blocked By:
 Blocking:                |  Has a Patch:  0
 Platform:  All           |
--------------------------+------------------------------
 Our gcc toolchain's linker (ld) continues to have problems with odd
 relocation issues.

 We (waddlesplash) was able to work around these issues by leveraging the
 clang linker (lld) to link the operating system.

 While the clang linker works as expected, the gcc linker throws relocation
 errors linking libbe:
 {{{
 kDir1 objects/haiku/arm/release/system/glue/arch
 MkDir1 objects/haiku/arm/release/system/glue/arch/arm
 As objects/haiku/arm/release/system/glue/arch/arm/crti.o
 Cc objects/haiku/arm/release/system/glue/init_term_dyn.o
 As objects/haiku/arm/release/system/glue/arch/arm/crtn.o
 Link objects/haiku/arm/release/system/libroot/libroot.so
 SetType1 objects/haiku/arm/release/system/libroot/libroot.so
 MimeSet1 objects/haiku/arm/release/system/libroot/libroot.so
 SetVersion1 objects/haiku/arm/release/system/libroot/libroot.so
 Chmod1 objects/haiku/arm/release/system/libroot/libroot.so
 Link objects/haiku/arm/release/kits/libbe.so
 /home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/lib/gcc/arm-
 unknown-haiku/8.3.0/../../../../arm-unknown-haiku/bin/ld:
 objects/haiku/arm/release/kits/interface/interface_kit.o: relocation
 R_ARM_REL32 against external or undefined symbol `_ZTIi' can not be used
 when making a shared object; recompile with -fPIC
 /home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/lib/gcc/arm-
 unknown-haiku/8.3.0/../../../../arm-unknown-haiku/bin/ld:
 objects/haiku/arm/release/kits/interface/interface_kit.o(.ARM.extab+0x445c):
 unresolvable R_ARM_REL32 relocation against symbol `_ZTIi'
 /home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/lib/gcc/arm-
 unknown-haiku/8.3.0/../../../../arm-unknown-haiku/bin/ld: final link
 failed: Nonrepresentable section on output
 collect2: error: ld returned 1 exit status

 export
 
"LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/alex.vongluck/Code/haiku/generated.arm/objects/linux/lib"
 ; ../build/scripts/rm_attrs objects/linux/x86_64/release/tools/rm_attrs -f
 "objects/haiku/arm/release/kits/libbe.so"
 /home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/bin/arm-
 unknown-haiku-gcc -fno-strict-aliasing -fno-delete-null-pointer-checks
 -fno-builtin-fork -fno-builtin-vfork -march=armv7-a -mfloat-abi=hard
 -Xlinker --no-undefined -shared -Xlinker -soname="libbe.so" -nostdlib
 -Xlinker --no-undefined -o "objects/haiku/arm/release/kits/libbe.so"
 "objects/haiku/arm/release/system/glue/arch/arm/crti.o"
 "/home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/lib/gcc/arm-
 unknown-haiku/8.3.0/crtbeginS.o"
 "objects/haiku/arm/release/system/glue/init_term_dyn.o"  \
 "objects/haiku/arm/release/kits/app/app_kit.o"
 "objects/haiku/arm/release/kits/interface/interface_kit.o"
 "objects/haiku/arm/release/kits/locale/locale_kit.o"
 "objects/haiku/arm/release/kits/storage/storage_kit.o"
 "objects/haiku/arm/release/kits/support/support_kit.o"
 "objects/haiku/arm/release/kits/storage/mime/libstorage_kit_mime.a"
 "objects/haiku/arm/release/libs/icon/libicon.a"
 "objects/haiku/arm/release/libs/agg/libagg.a"
 "build_packages/gcc_syslibs-8.3.0_2019_05_24-1-arm/lib/libstdc++.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicudata.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicui18n.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicuio.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicule.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libiculx.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicutu.so"
 "build_packages/icu-57.1-2-arm/develop/lib/libicuuc.so"
 "build_packages/zlib-1.2.11-1-arm/develop/lib/libz.so"
 "objects/haiku/arm/release/system/libroot/libroot.so"
 "build_packages/gcc_syslibs-8.3.0_2019_05_24-1-arm/lib/libgcc_s.so.1"
 "build_packages/gcc_syslibs_devel-8.3.0_2019_05_24-1-arm/develop/lib/libgcc.a"
 "/home/alex.vongluck/Code/haiku/generated.arm/cross-tools-arm/lib/gcc/arm-
 unknown-haiku/8.3.0/crtendS.o"
 "objects/haiku/arm/release/system/glue/arch/arm/crtn.o" \
 -Wl,--version-script,../src/kits/libbe_versions

 ...failed Link objects/haiku/arm/release/kits/libbe.so ...
 }}}


 waddlesplash discovered that changing the linker to the following in th
 BuildConfig works around the issue:

 {{{
 HAIKU_LD_arm ?= /usr/bin/ld.lld ;
 HAIKU_LINK_arm ?= /usr/bin/clang -fuse-ld=lld -target arm-unknown-freebsd
 -shared ;
 }}}

-- 
Ticket URL: <https://dev.haiku-os.org/ticket/15122>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: