RISC-V: Document the degree of position independence that medany affords

The code generated by -mcmodel=medany is defined to be
position-independent, but is not guaranteed to function correctly when
linked into position-independent executables or libraries.  See the
recent discussion at the psABI specification [1] for more details.

It would be better to reject these invalid sequences when linking, but
as pointed out in a recent LD bug [2] there may be some compatibility
issues related to the PCREL_HI20 relocations used to initialize GP.
Given the complexity here it's unlikely we'll be able to reject these
sequences any time soon, so instead just document that these may not
work.

[1]: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/245
[2]: https://sourceware.org/bugzilla/show_bug.cgi?id=28789

gcc/ChangeLog:

	* doc/invoke.texi (RISC-V -mcmodel=medany): Document the degree
	of position independence that -mcmodel=medany affords.

Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
Palmer Dabbelt 2022-01-13 18:10:19 -08:00
parent 157cc4e011
commit 8645370af1
No known key found for this signature in database
GPG Key ID: 2E1319F35FBB1889

View File

@ -27772,6 +27772,10 @@ Generate code for the medium-any code model. The program and its statically
defined symbols must be within any single 2 GiB address range. Programs can be defined symbols must be within any single 2 GiB address range. Programs can be
statically or dynamically linked. statically or dynamically linked.
The code generated by the medium-any code model is position-independent, but is
not guaranteed to function correctly when linked into position-independent
executables or libraries.
@item -mexplicit-relocs @item -mexplicit-relocs
@itemx -mno-exlicit-relocs @itemx -mno-exlicit-relocs
Use or do not use assembler relocation operators when dealing with symbolic Use or do not use assembler relocation operators when dealing with symbolic