Mans Rullgard <[email protected]> writes:

> On 32-bit ppc, the GOT pointer must be loaded manually.
> This adds a "get_got" assembler macro to compute the
> GOT address.  The "movrel" macro is updated to take an
> additional parameter containing the GOT address since
> no registers is reserved for this purpose on ppc32.
> These changes have no effect on ppc64 builds.
>
> Signed-off-by: Mans Rullgard <[email protected]>
> ---
>  libavcodec/ppc/asm.S           |   17 ++++++++++++++---
>  libavcodec/ppc/fft_altivec_s.S |    7 ++++---
>  2 files changed, 18 insertions(+), 6 deletions(-)
>
> +.macro get_got rd
> +    bcl     20, 31, .Lgot\@
> +.Lgot\@:
> +    mflr    \rd
> +    addis   \rd, \rd, _GLOBAL_OFFSET_TABLE_ - .Lgot\@@ha
> +    addi    \rd, \rd, _GLOBAL_OFFSET_TABLE_ - .Lgot\@@l
> +.endm

Come to think of it, this should probably be made conditional on PIC.
Simply making the macro a no-op in non-PIC mode will of course work,
since the only uses of the value it computes use the same condition.
It is, however, slightly fragile, should someone need the GOT value for
something else at some point.

Opinions?

-- 
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to