https://sourceware.org/bugzilla/show_bug.cgi?id=24426
Bug ID: 24426 Summary: Binutils 2.28.1 segfault when presented (any) linker script on riscv64 Product: binutils Version: 2.28 Status: UNCONFIRMED Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: kallisti5 at unixzen dot com Target Milestone: --- Providing --script= of any kind results in a segfault from ld on riscv64. An empty linker script will result in the same segfault. Removing --script= results in a linker working as expected. Here's a valgrind output to show some more backtrace information: root@47cd380129ab:/work/generated.riscv64# valgrind /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld -verbose -Bdynamic -export-dynamic -dynamic-linker /foo/bar --script=../src/haiku/src/system/ldscripts/riscv64/kernel.ld -o "objects/haiku/riscv64/release/system/kernel/kernel_riscv64" "objects/haiku/riscv64/release/system/kernel/cache/kernel_cache.o" "objects/haiku/riscv64/release/system/kernel/kernel_core.o" "objects/haiku/riscv64/release/system/kernel/debug/kernel_debug.o" "objects/haiku/riscv64/release/system/kernel/device_manager/kernel_device_manager.o" "objects/haiku/riscv64/release/system/kernel/disk_device_manager/kernel_disk_device_manager.o" "objects/haiku/riscv64/release/system/kernel/fs/kernel_fs.o" "objects/haiku/riscv64/release/system/kernel/messaging/kernel_messaging.o" "objects/haiku/riscv64/release/system/kernel/posix/kernel_posix.o" "objects/haiku/riscv64/release/system/kernel/slab/kernel_slab.o" "objects/haiku/riscv64/release/system/kernel/util/kernel_util.o" "objects/haiku/riscv64/release/system/kernel/vm/kernel_vm.o" "objects/haiku/riscv64/release/system/kernel/arch/riscv64/kernel_arch_riscv64.o" "objects/haiku/riscv64/release/system/kernel/platform/u-boot/kernel_platform_u-boot.o" "objects/haiku/riscv64/release/system/kernel/linkhack.so" "objects/haiku/riscv64/release/system/kernel/lib/kernel_os_main.o" "objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_os_arch_riscv64.o" "objects/haiku/riscv64/release/system/kernel/lib/kernel_lib_posix.o" "objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_lib_posix_arch_riscv64.o" "objects/haiku/riscv64/release/system/kernel/lib/kernel_misc.o" build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a --version-script=../src/haiku/src/system/kernel/kernel_versions ==555== Memcheck, a memory error detector ==555== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==555== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info ==555== Command: /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld -verbose -Bdynamic -export-dynamic -dynamic-linker /foo/bar --script=../src/haiku/src/system/ldscripts/riscv64/kernel.ld -o objects/haiku/riscv64/release/system/kernel/kernel_riscv64 objects/haiku/riscv64/release/system/kernel/cache/kernel_cache.o objects/haiku/riscv64/release/system/kernel/kernel_core.o objects/haiku/riscv64/release/system/kernel/debug/kernel_debug.o objects/haiku/riscv64/release/system/kernel/device_manager/kernel_device_manager.o objects/haiku/riscv64/release/system/kernel/disk_device_manager/kernel_disk_device_manager.o objects/haiku/riscv64/release/system/kernel/fs/kernel_fs.o objects/haiku/riscv64/release/system/kernel/messaging/kernel_messaging.o objects/haiku/riscv64/release/system/kernel/posix/kernel_posix.o objects/haiku/riscv64/release/system/kernel/slab/kernel_slab.o objects/haiku/riscv64/release/system/kernel/util/kernel_util.o objects/haiku/riscv64/release/system/kernel/vm/kernel_vm.o objects/haiku/riscv64/release/system/kernel/arch/riscv64/kernel_arch_riscv64.o objects/haiku/riscv64/release/system/kernel/platform/u-boot/kernel_platform_u-boot.o objects/haiku/riscv64/release/system/kernel/linkhack.so objects/haiku/riscv64/release/system/kernel/lib/kernel_os_main.o objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_os_arch_riscv64.o objects/haiku/riscv64/release/system/kernel/lib/kernel_lib_posix.o objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_lib_posix_arch_riscv64.o objects/haiku/riscv64/release/system/kernel/lib/kernel_misc.o build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a --version-script=../src/haiku/src/system/kernel/kernel_versions ==555== GNU ld (GNU Binutils) 2.28.1 Supported emulations: elf64lriscv elf32lriscv opened script file ../src/haiku/src/system/ldscripts/riscv64/kernel.ld opened script file ../src/haiku/src/system/kernel/kernel_versions using external linker script: ================================================== OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv") OUTPUT_ARCH(riscv) ENTRY(_start) SECTIONS { . = 0xFFFFFFFF80000000 + SIZEOF_HEADERS; .interp : { *(.interp) } .hash : { *(.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } .rela.got : { *(.rela.got) } .rela.ctors : { *(.rela.ctors) } .rela.dtors : { *(.rela.dtors) } .rela.init : { *(.rela.init) } .rela.fini : { *(.rela.fini) } .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rela.plt : { *(.rela.plt) } .init : { *(.init) } =0x90909090 .plt : { *(.plt) } /* text/read-only data */ .text : { *(.text .text.* .gnu.linkonce.t.*) } =0x90909090 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } . = ALIGN(0x8); altcodepatch_begin = .; .altcodepatch : { *(.altcodepatch) } altcodepatch_end = .; /* writable data */ . = ALIGN (0x1000); __data_start = .; .data : { *(.data .data.* .gnu.linkonce.d.*) } . = ALIGN(0x4); __ctor_list = .; .ctors : { *(.ctors) } __ctor_end = .; __dtor_list = .; .dtors : { *(.dtors) } __dtor_end = .; .got : { *(.got.plt) *(.got) } .dynamic : { *(.dynamic) } /* uninitialized data (in same segment as writable data) */ __bss_start = .; .bss : { *(.bss .bss.* .gnu.linkonce.b.*) } . = ALIGN(0x1000); _end = . ; /* Strip unnecessary stuff */ /DISCARD/ : { *(.comment .note .eh_frame) } } ================================================== attempt to open objects/haiku/riscv64/release/system/kernel/cache/kernel_cache.o succeeded objects/haiku/riscv64/release/system/kernel/cache/kernel_cache.o attempt to open objects/haiku/riscv64/release/system/kernel/kernel_core.o succeeded objects/haiku/riscv64/release/system/kernel/kernel_core.o attempt to open objects/haiku/riscv64/release/system/kernel/debug/kernel_debug.o succeeded objects/haiku/riscv64/release/system/kernel/debug/kernel_debug.o attempt to open objects/haiku/riscv64/release/system/kernel/device_manager/kernel_device_manager.o succeeded objects/haiku/riscv64/release/system/kernel/device_manager/kernel_device_manager.o attempt to open objects/haiku/riscv64/release/system/kernel/disk_device_manager/kernel_disk_device_manager.o succeeded objects/haiku/riscv64/release/system/kernel/disk_device_manager/kernel_disk_device_manager.o attempt to open objects/haiku/riscv64/release/system/kernel/fs/kernel_fs.o succeeded objects/haiku/riscv64/release/system/kernel/fs/kernel_fs.o attempt to open objects/haiku/riscv64/release/system/kernel/messaging/kernel_messaging.o succeeded objects/haiku/riscv64/release/system/kernel/messaging/kernel_messaging.o attempt to open objects/haiku/riscv64/release/system/kernel/posix/kernel_posix.o succeeded objects/haiku/riscv64/release/system/kernel/posix/kernel_posix.o attempt to open objects/haiku/riscv64/release/system/kernel/slab/kernel_slab.o succeeded objects/haiku/riscv64/release/system/kernel/slab/kernel_slab.o attempt to open objects/haiku/riscv64/release/system/kernel/util/kernel_util.o succeeded objects/haiku/riscv64/release/system/kernel/util/kernel_util.o attempt to open objects/haiku/riscv64/release/system/kernel/vm/kernel_vm.o succeeded objects/haiku/riscv64/release/system/kernel/vm/kernel_vm.o attempt to open objects/haiku/riscv64/release/system/kernel/arch/riscv64/kernel_arch_riscv64.o succeeded objects/haiku/riscv64/release/system/kernel/arch/riscv64/kernel_arch_riscv64.o attempt to open objects/haiku/riscv64/release/system/kernel/platform/u-boot/kernel_platform_u-boot.o succeeded objects/haiku/riscv64/release/system/kernel/platform/u-boot/kernel_platform_u-boot.o attempt to open objects/haiku/riscv64/release/system/kernel/linkhack.so succeeded objects/haiku/riscv64/release/system/kernel/linkhack.so attempt to open objects/haiku/riscv64/release/system/kernel/lib/kernel_os_main.o succeeded objects/haiku/riscv64/release/system/kernel/lib/kernel_os_main.o attempt to open objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_os_arch_riscv64.o succeeded objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_os_arch_riscv64.o attempt to open objects/haiku/riscv64/release/system/kernel/lib/kernel_lib_posix.o succeeded objects/haiku/riscv64/release/system/kernel/lib/kernel_lib_posix.o attempt to open objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_lib_posix_arch_riscv64.o succeeded objects/haiku/riscv64/release/system/kernel/lib/arch/riscv64/kernel_lib_posix_arch_riscv64.o attempt to open objects/haiku/riscv64/release/system/kernel/lib/kernel_misc.o succeeded objects/haiku/riscv64/release/system/kernel/lib/kernel_misc.o attempt to open build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a succeeded (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)class_type_info.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)dyncast.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)new_handler.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)si_class_type_info.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)tinfo.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libsupc++-kernel.a)vmi_class_type_info.o attempt to open build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a succeeded (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a)_clzsi2.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a)_bswapsi2.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a)extenddftf2.o (build_packages/gcc_bootstrap_syslibs_devel-7.3.0_2019_04_04-1-riscv64/develop/lib/libgcc-kernel.a)_clz.o ==555== Invalid read of size 8 ==555== at 0x166817: riscv_global_pointer_value.isra.11 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x166888: _bfd_riscv_relax_lui (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x164CD4: _bfd_riscv_relax_section (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x1367D5: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x1369C8: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x136B2B: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13A595: lang_size_sections (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13A817: lang_relax_sections (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x149994: gldelf64lriscv_after_allocation (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13CEC3: lang_process (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x12B641: main (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== Address 0x28 is not stack'd, malloc'd or (recently) free'd ==555== ==555== ==555== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==555== Access not within mapped region at address 0x28 ==555== at 0x166817: riscv_global_pointer_value.isra.11 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x166888: _bfd_riscv_relax_lui (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x164CD4: _bfd_riscv_relax_section (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x1367D5: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x1369C8: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x136B2B: lang_size_sections_1 (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13A595: lang_size_sections (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13A817: lang_relax_sections (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x149994: gldelf64lriscv_after_allocation (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x13CEC3: lang_process (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== by 0x12B641: main (in /work/generated.riscv64/cross-tools-riscv64/bin/riscv64-unknown-haiku-ld) ==555== If you believe this happened as a result of a stack ==555== overflow in your program's main thread (unlikely but ==555== possible), you can try to increase the size of the ==555== main thread stack using the --main-stacksize= flag. ==555== The main thread stack size used in this run was 8388608. ==555== ==555== HEAP SUMMARY: ==555== in use at exit: 7,924,448 bytes in 1,256 blocks ==555== total heap usage: 19,293 allocs, 18,037 frees, 12,478,866 bytes allocated ==555== ==555== LEAK SUMMARY: ==555== definitely lost: 11,160 bytes in 9 blocks ==555== indirectly lost: 0 bytes in 0 blocks ==555== possibly lost: 0 bytes in 0 blocks ==555== still reachable: 7,913,288 bytes in 1,247 blocks ==555== suppressed: 0 bytes in 0 blocks ==555== Rerun with --leak-check=full to see details of leaked memory ==555== ==555== For counts of detected and suppressed errors, rerun with: -v ==555== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Segmentation fault (core dumped) -- 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