We can't relocate entries in dynamic section if it is readonly:
1. Add a l_ld_readonly field to struct link_map to indicate if dynamic
section is readonly and set it based on p_flags of PT_DYNAMIC segment.
2. Replace DL_RO_DYN_SECTION with dl_relocate_ld to decide if dynamic
section should be relocated.
3. Remove DL_RO_DYN_TEMP_CNT.
4. Don't use a static dynamic section to make readonly dynamic section
in vDSO writable.
5. Remove the temp argument from elf_get_dynamic_info.
This fixes BZ #28340.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
(cherry picked from commit b413280cfb)
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 6694 files FOO.
I then removed trailing white space from benchtests/bench-pthread-locks.c
and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this
diagnostic from Savannah:
remote: *** pre-commit check failed ...
remote: *** error: lines with trailing whitespace found
remote: error: hook declined to update refs/heads/master
While working on enabling D front-end (GDC) in GCC we noticed that
druntime was segfaulting if it is linked dynamically. This was tracked
to DL_RO_DYN_SECTION.
DL_RO_DYN_SECTION lines seem to be copied from MIPS file (which is the
only user of it), but the comment doesn't apply to RISC-V. There is no
such requirement in RISC-V ABI.
[BZ#24484]
* sysdeps/riscv/ldsodefs.h: Remove DL_RO_DYN_SECTION as it is not
required by RISC-V ABI.
This patch contains code that needs to directly know about the RISC-V
ABI, which is specified in a work-in-progress psABI document:
https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md
This is meant to contain all the RISC-V code that needs to explicitly
name registers or manage in-memory structure layout. This does not
contain any of the Linux-specific code.
2018-01-29 Palmer Dabbelt <palmer@sifive.com>
* sysdeps/riscv/__longjmp.S: New file.
* sysdeps/riscv/backtrace.c: Likewise.
* sysdeps/riscv/bits/endian.h: Likewise.
* sysdeps/riscv/bits/setjmp.h: Likewise.
* sysdeps/riscv/bits/wordsize.h: Likewise.
* sysdeps/riscv/bsd-_setjmp.c: Likewise.
* sysdeps/riscv/bsd-setjmp.c: Likewise.
* sysdeps/riscv/dl-trampoline.S: Likewise.
* sysdeps/riscv/gccframe.h: Likewise.
* sysdeps/riscv/jmpbuf-offsets.h: Likewise.
* sysdeps/riscv/jmpbuf-unwind.h: Likewise.
* sysdeps/riscv/machine-gmon.h: Likewise.
* sysdeps/riscv/memusage.h: Likewise.
* sysdeps/riscv/setjmp.S: Likewise.
* sysdeps/riscv/sys/asm.h: Likewise.
* sysdeps/riscv/tls-macros.h: Likewise.