]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Document the degree of position independence that medany affords
authorPalmer Dabbelt <palmer@rivosinc.com>
Fri, 14 Jan 2022 02:10:19 +0000 (18:10 -0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 24 Feb 2022 19:29:43 +0000 (11:29 -0800)
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>
gcc/doc/invoke.texi

index fb3dec4ab0c37810d4409fa6da6a82f0154b0a3a..ec291c0654266f840aa025b971cec72c3453cac5 100644 (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
 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
 @itemx -mno-exlicit-relocs
 Use or do not use assembler relocation operators when dealing with symbolic