| author | |
| committer | |
| log | 7b92d5f4052be651e9bc5cd4ad78a69ccbee865d |
| tree | f5a1113435e60fbf691774ce7d36399ad90bc96d |
| parent | 26825e95066c104585d248787c0e56ce4e8413e0 |
| signature |
If the compiler happens to pick `ret = r0`, then this will assemble to
`ag r0, 0` which is obviously not what we want. Using `a` instead of `r` will
ensure that we get an appropriate address register, i.e. `r1` through `r15`.
Re-enable pie_linux for s390x-linux which was disabled in
ed7ff0b693037078f451a7c6c1124611060f4892.2 files changed, 2 insertions(+), 2 deletions(-)
lib/std/pie.zig+1-1| ... | @@ -177,7 +177,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { | ... | @@ -177,7 +177,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { |
| 177 | \\ jg 2f | 177 | \\ jg 2f |
| 178 | \\ 1: .quad _DYNAMIC - . | 178 | \\ 1: .quad _DYNAMIC - . |
| 179 | \\ 2: | 179 | \\ 2: |
| 180 | : [ret] "=r" (-> [*]const elf.Dyn), | 180 | : [ret] "=a" (-> [*]const elf.Dyn), |
| 181 | ), | 181 | ), |
| 182 | // The compiler does not necessarily have any obligation to load the `l7` register (pointing | 182 | // The compiler does not necessarily have any obligation to load the `l7` register (pointing |
| 183 | // to the GOT), so do it ourselves just in case. | 183 | // to the GOT), so do it ourselves just in case. |
test/cases/pie_linux.zig+1-1| ... | @@ -6,5 +6,5 @@ pub fn main() void {} | ... | @@ -6,5 +6,5 @@ pub fn main() void {} |
| 6 | 6 | ||
| 7 | // run | 7 | // run |
| 8 | // backend=llvm | 8 | // backend=llvm |
| 9 | // target=arm-linux,armeb-linux,thumb-linux,thumbeb-linux,aarch64-linux,aarch64_be-linux,loongarch64-linux,mips-linux,mipsel-linux,mips64-linux,mips64el-linux,powerpc-linux,powerpcle-linux,powerpc64-linux,powerpc64le-linux,riscv32-linux,riscv64-linux,x86-linux,x86_64-linux | 9 | // target=arm-linux,armeb-linux,thumb-linux,thumbeb-linux,aarch64-linux,aarch64_be-linux,loongarch64-linux,mips-linux,mipsel-linux,mips64-linux,mips64el-linux,powerpc-linux,powerpcle-linux,powerpc64-linux,powerpc64le-linux,riscv32-linux,riscv64-linux,s390x-linux,x86-linux,x86_64-linux |
| 10 | // pie=true | 10 | // pie=true |