[Bug dynamic-link/31317] New: [RISCV] static PIE crashes during self relocation

schwab@linux-m68k.org sourceware-bugzilla@sourceware.org
Tue Jan 30 13:25:27 GMT 2024


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

            Bug ID: 31317
           Summary: [RISCV] static PIE crashes during self relocation
           Product: glibc
           Version: 2.39
            Status: NEW
          Severity: normal
          Priority: P2
         Component: dynamic-link
          Assignee: unassigned at sourceware dot org
          Reporter: schwab@linux-m68k.org
  Target Milestone: ---

When running a static PIE created by the mold linker, it crashes during self
relocation while it tries to look up the __global_pointer$ symbols.  That
happens because the mold linker puts the relocation addend of a RELATIVE also
in the relocated field (unlike the BFD linker, which sets it to zero).

>From sysdeps/riscv/dl-machine.h:

  if (l->l_type == lt_executable && l->l_scope != NULL)

In elf_machine_runtime_setup the condition l->l_scope != NULL references an
unrelocated pointer (where l points to the statically initialized _dl_main_map)
which is never NULL in a static PIE produced by ld.mold.

The failure can be seen in the mold testsuite (riscv64-ifunc-static-pie and
riscv64-static-pie).

https://build.opensuse.org/package/live_build_log/devel:gcc:next/mold/openSUSE_Factory_RISCV/riscv64

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Glibc-bugs mailing list