bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/22920] New: Segfault in ld with RISC-V binary target


From: geoffrey at allott dot email
Subject: [Bug ld/22920] New: Segfault in ld with RISC-V binary target
Date: Sat, 03 Mar 2018 23:46:57 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=22920

            Bug ID: 22920
           Summary: Segfault in ld with RISC-V binary target
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: geoffrey at allott dot email
  Target Milestone: ---

When using the latest release (2.30) and master (2.30.51.20180303), configured
on an x86_64-linux-gnu host with --target=riscv32-unknown-elf, the following
sequence of steps will segfault:

    cat <<EOF > main.s
    la t0, addr
    EOF

    cat <<EOF > link.ld
    OUTPUT_FORMAT(binary);

    SECTIONS {
        main : { main.o }
        addr = ABSOLUTE(42);
    }
    EOF

    riscv32-unknown-elf-as main.s -o main.o
    riscv32-unknown-elf-ld -T link.ld

The backtrace at the time of the segfault is as follows:

(gdb) bt
#0  0x00005555555b42c7 in _bfd_riscv_relax_section (abfd=0x5555558e00b0,
sec=<optimized out>, info=0x5555558a4fa0 <link_info>, 
    again=0x7fffffffe460) at ./elfnn-riscv.c:3444
#1  0x0000555555583226 in lang_size_sections_1 (prev=0x5555558c9da0, 
    address@hidden,
address@hidden, dot=<optimized out>, 
    address@hidden, address@hidden) at
ldlang.c:5436
#2  0x0000555555583318 in lang_size_sections_1 (prev=<optimized out>,
address@hidden, 
    address@hidden,
fill=0x0, dot=<optimized out>, 
    address@hidden, address@hidden) at
ldlang.c:5531
#3  0x00005555555837ef in lang_size_sections_1 (prev=<optimized out>,
address@hidden <statement_list>, 
    output_section_statement=0x5555558ca300, address@hidden,
dot=<optimized out>, address@hidden, 
    address@hidden, address@hidden) at
ldlang.c:5177
#4  0x0000555555585ab4 in one_lang_size_sections_pass
(address@hidden, address@hidden)
    at ldlang.c:5604
#5  0x0000555555587326 in lang_size_sections (relax=0x7fffffffe604,
check_regions=0) at ldlang.c:5716
#6  0x00005555555875a0 in lang_relax_sections (need_layout=<optimized out>) at
ldlang.c:6967
#7  0x0000555555598673 in gldelf32lriscv_map_segments (need_layout=<optimized
out>) at eelf32lriscv.c:66
#8  gldelf32lriscv_after_allocation () at eelf32lriscv.c:143
#9  0x0000555555589c39 in lang_process () at ldlang.c:7405
#10 0x0000555555577844 in main (argc=<optimized out>, argv=<optimized out>) at
./ldmain.c:439

It appears that the variable htab is null here

(gdb) l
3439              while (h->root.type == bfd_link_hash_indirect
3440                     || h->root.type == bfd_link_hash_warning)
3441                h = (struct elf_link_hash_entry *) h->root.u.i.link;
3442    
3443              if (h->plt.offset != MINUS_ONE)
3444                symval = sec_addr (htab->elf.splt) + h->plt.offset;
3445              else if (h->root.u.def.section->output_section == NULL
3446                       || (h->root.type != bfd_link_hash_defined
3447                           && h->root.type != bfd_link_hash_defweak))
3448                continue;
(gdb) p htab
$1 = (struct riscv_elf_link_hash_table *) 0x0

-- 
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]