bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/24426] New: Binutils 2.28.1 segfault when presented (any) linker


From: kallisti5 at unixzen dot com
Subject: [Bug ld/24426] New: Binutils 2.28.1 segfault when presented (any) linker script on riscv64
Date: Mon, 08 Apr 2019 23:56:25 +0000

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:


address@hidden:/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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]