From: Andy Polyakov <ap...@openssl.org>
Date: Fri, 21 Sep 2012 12:21:25 +0200

> I'll handle this, but differently. Specifically I won't go through GOT,
> but directly to variable, something like this:

I would like to politely request that you don't go down this road.

> .Lretl:
>       retl
>       nop
> ...
>       sethi   %hi(var-.Lpic),%reg
> .Lpic:        call    .Lretl
>       add     %o7,%lo(var-.Lpic),%reg

I honestly think it's easiest to to simply generate correct PIC
sequences, as my macros are trying to do.

We can add whatever ifdefs and code generation cases we need to
sparc_arch.h The code that I'm emitting is identical to what GCC
generates on Linux and Solaris under Sparc regardless of which
assembler and linker are in use.

I should know, I wrote much of the sparc GCC backend.

If you describe to me what problems your scheme ran into, I can fix
them up.

Did you test if my code sequences work for you?  It is also important
to note that they are also specifically designed to be usable in leaf
functions.

BTW, the real long term answer is mark openssl internal symbols as
"hidden" and then use GOT_DATA optimization sequences which will get
rid of the GOT reference altogether.  But that requires some configure
checks to see if the assembler and linker support these constructs.

> As for OPENSSL_sparcv9cap_P itself. I'd rather extend it to int
> OPENSSL_sparcv9cap_P[2] and save %cfr as is to  OPENSSL_sparcv9cap_P[1].
> Any objections?

I think this is code masterbation at this early stage of the sparc
crypto opcode support implementation and is something we can clean up
later.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to