Comment 2 for bug 1757457

Revision history for this message
Erlkoenig (profclonk) wrote :

I built debuggable toolchain, obtained a core dump and ran gdb on it:

Core was generated by `.../arm-none-eabi-ld'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004527a3 in arm_build_one_stub (gen_entry=0x1545370, in_arg=0x77f540 <link_info>) at .../binutils/bfd/elf32-arm.c:4731
4731 + stub_entry->target_section->output_section->vma);
(gdb) bt
#0 0x00000000004527a3 in arm_build_one_stub (gen_entry=0x1545370, in_arg=0x77f540 <link_info>) at .../binutils/bfd/elf32-arm.c:4731
#1 0x000000000043b7dc in bfd_hash_traverse (table=0x153c440, func=0x4525f6 <arm_build_one_stub>, info=0x77f540 <link_info>) at .../binutils/bfd/hash.c:656
#2 0x0000000000456c7d in elf32_arm_build_stubs (info=0x77f540 <link_info>) at ./binutils/bfd/elf32-arm.c:6722
#3 0x000000000042b260 in gldarmelf_finish () at earmelf.c:517
#4 0x00000000004237ee in ldemul_finish () at .../binutils/ld/ldemul.c:94
#5 0x00000000004193e5 in lang_process () at .../binutils/ld/ldlang.c:7402
#6 0x000000000041d52e in main (argc=23, argv=0x7ffd7f69b3b8) at .../binutils/ld/ldmain.c:432
(gdb) print stub_entry->target_section->output_section
$1 = (struct bfd_section *) 0x0

The code in question is:

  /* This is the address of the stub destination. */
  sym_value = (stub_entry->target_value
        + stub_entry->target_section->output_offset
        + stub_entry->target_section->output_section->vma);

Since stub_entry->target_section->output_section is 0, this is a classic null-pointer dereferencing bug.