std.pie: fix register constraint in getDynamicSymbol() for s390x (#25327)
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.
This commit is contained in:
@@ -177,7 +177,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
|
|||||||
\\ jg 2f
|
\\ jg 2f
|
||||||
\\ 1: .quad _DYNAMIC - .
|
\\ 1: .quad _DYNAMIC - .
|
||||||
\\ 2:
|
\\ 2:
|
||||||
: [ret] "=r" (-> [*]const elf.Dyn),
|
: [ret] "=a" (-> [*]const elf.Dyn),
|
||||||
),
|
),
|
||||||
// The compiler does not necessarily have any obligation to load the `l7` register (pointing
|
// The compiler does not necessarily have any obligation to load the `l7` register (pointing
|
||||||
// to the GOT), so do it ourselves just in case.
|
// to the GOT), so do it ourselves just in case.
|
||||||
|
|||||||
Reference in New Issue
Block a user