https://sourceware.org/bugzilla/show_bug.cgi?id=21524
Bug ID: 21524 Summary: Assert on ld.bfd with -r and --gc-sections Product: binutils Version: 2.27 Status: NEW Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: adhemerval.zanella at linaro dot org Target Milestone: --- This is a mirror of an issue against our toolchain for aarch64 [1]. The error is easily recreated with these steps (check prerequisites at https://github.com/OP-TEE/build#71-prerequisites , not all are needed for the build to succeed below): git clone https://github.com/jenswi-linaro/optee_os.git cd optee_os AARCH64_GCC=gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu TOOLCHAIN_DIR=${HOME}/aarch64-toolchain export CROSS_COMPILE64=${TOOLCHAIN_DIR}/${AARCH64_GCC}/bin/aarch64-linux-gnu- export PLATFORM=vexpress-qemu_armv8a export CFG_ARM64_core=y git checkout origin/test_compile_ok make out/arm-plat-vexpress/core/tee.elf # Compiles OK # Now add a patch on top of that that causes a the assertion in the linker # If you add V=1 as an argument to make you'll see how the linker is invoked git checkout origin/test_compile_fail make out/arm-plat-vexpress/core/tee.elf # Fails with: .../aarch64-linux-gnu-ld: BFD (Linaro_Binutils-2016.11) 2.27.0.20161019 assertion fail /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/aarch64-linux-gnu/snapshots/binutils-gdb.git~linaro_binutils-2_27-branch/bfd/elflink.c:8380 It boils down to the linker command line: /home/azanella/Projects/binutils/binutils-gdb-build-aarch64/ld/ld-new -i --gc-sections -u_start `cat out/arm-plat-vexpress/core/init_entries.txt` out/arm-plat-vexpress/core/arch/arm/kernel/user_ta.o out/arm-plat-vexpress/core/arch/arm/kernel/ree_fs_ta.o out/arm-plat-vexpress/core/arch/arm/kernel/pseudo_ta.o out/arm-plat-vexpress/core/arch/arm/kernel/elf_load.o out/arm-plat-vexpress/core/arch/arm/kernel/tee_time.o out/arm-plat-vexpress/core/arch/arm/kernel/otp_stubs.o out/arm-plat-vexpress/core/arch/arm/kernel/tee_time_arm_cntpct.o out/arm-plat-vexpress/core/arch/arm/kernel/proc_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/spin_lock_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/ssvce_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/cache_helpers_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/thread_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/thread.o out/arm-plat-vexpress/core/arch/arm/kernel/abort.o out/arm-plat-vexpress/core/arch/arm/kernel/vfp.o out/arm-plat-vexpress/core/arch/arm/kernel/vfp_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/trace_ext.o out/arm-plat-vexpress/core/arch/arm/kernel/misc_a64.o out/arm-plat-vexpress/core/arch/arm/kernel/mutex.o out/arm-plat-vexpress/core/arch/arm/kernel/wait_queue.o out/arm-plat-vexpress/core/arch/arm/kernel/pm_stubs.o out/arm-plat-vexpress/core/arch/arm/kernel/generic_boot.o out/arm-plat-vexpress/core/arch/arm/kernel/generic_entry_a64.o out/arm-plat-vexpress/core/arch/arm/mm/core_mmu.o out/arm-plat-vexpress/core/arch/arm/mm/tee_mmu.o out/arm-plat-vexpress/core/arch/arm/mm/core_mmu_lpae.o out/arm-plat-vexpress/core/arch/arm/mm/tee_mm.o out/arm-plat-vexpress/core/arch/arm/mm/pgt_cache.o out/arm-plat-vexpress/core/arch/arm/mm/mobj.o out/arm-plat-vexpress/core/arch/arm/tee/arch_svc_a64.o out/arm-plat-vexpress/core/arch/arm/tee/pta_socket.o out/arm-plat-vexpress/core/arch/arm/tee/entry_fast.o out/arm-plat-vexpress/core/arch/arm/tee/cache.o out/arm-plat-vexpress/core/arch/arm/pta/pta_invoke_tests.o out/arm-plat-vexpress/core/arch/arm/pta/core_self_tests.o out/arm-plat-vexpress/core/arch/arm/pta/interrupt_tests.o out/arm-plat-vexpress/core/arch/arm/pta/core_fs_htree_tests.o out/arm-plat-vexpress/core/arch/arm/pta/stats.o out/arm-plat-vexpress/core/arch/arm/plat-vexpress/main.o out/arm-plat-vexpress/core/arch/arm/plat-vexpress/vendor_props.o out/arm-plat-vexpress/core/kernel/assert.o out/arm-plat-vexpress/core/kernel/console.o out/arm-plat-vexpress/core/kernel/dt.o out/arm-plat-vexpress/core/kernel/tee_ta_manager.o out/arm-plat-vexpress/core/kernel/tee_misc.o out/arm-plat-vexpress/core/kernel/panic.o out/arm-plat-vexpress/core/kernel/handle.o out/arm-plat-vexpress/core/kernel/interrupt.o out/arm-plat-vexpress/core/tee/tee_cryp_utl.o out/arm-plat-vexpress/core/tee/tee_cryp_hkdf.o out/arm-plat-vexpress/core/tee/tee_cryp_concat_kdf.o out/arm-plat-vexpress/core/tee/tee_cryp_pbkdf2.o out/arm-plat-vexpress/core/tee/tee_svc.o out/arm-plat-vexpress/core/tee/tee_svc_cryp.o out/arm-plat-vexpress/core/tee/tee_svc_storage.o out/arm-plat-vexpress/core/tee/tee_ree_fs.o out/arm-plat-vexpress/core/tee/fs_htree.o out/arm-plat-vexpress/core/tee/fs_dirfile.o out/arm-plat-vexpress/core/tee/tee_fs_rpc.o out/arm-plat-vexpress/core/tee/tee_fs_rpc_cache.o out/arm-plat-vexpress/core/tee/tee_fs_key_manager.o out/arm-plat-vexpress/core/tee/tee_obj.o out/arm-plat-vexpress/core/tee/tee_pobj.o out/arm-plat-vexpress/core/tee/tee_time_generic.o out/arm-plat-vexpress/core/tee/uuid.o out/arm-plat-vexpress/core/drivers/pl011.o out/arm-plat-vexpress/core/drivers/gic.o out/arm-plat-vexpress/core/ta_pub_key.o out/arm-plat-vexpress/core/version.o -Lout/arm-plat-vexpress/core/lib/libfdt -Lout/arm-plat-vexpress/core/lib/libtomcrypt -Lout/arm-plat-vexpress/core-lib/libmpa -Lout/arm-plat-vexpress/core-lib/libutils -lfdt -ltomcrypt -lmpa -lutils /opt/cross/aarch64-linux-gnu/bin/../lib/gcc/aarch64-glibc-linux-gnu/6.2.1/libgcc.a -o out/arm-plat-vexpress/core/init.o And I could build without issue by removing --gc-sections. I also could reproduce it on master (64aaf98419a0485fe3490dfb53417ac9958c7327). [1] https://bugs.linaro.org/show_bug.cgi?id=3006 -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils