[openssl-dev] OpenSSL 1.1.0 pre 5+6: SPARCv9 assembler stack alignment problem

Rainer Jung rainer.jung at kippdata.de
Thu Aug 4 17:08:15 UTC 2016


When building OpenSSL 1.1.0 pre 5 or pre 6 on Sparc I get:

/usr/ccs/bin/as: "crypto/ec/ecp_nistz256-sparcv9.s", line 4811: warning: 
stack alignment problem; second operand is not a multiple of 8
/usr/ccs/bin/as: "crypto/ec/ecp_nistz256-sparcv9.s", line 5063: warning: 
stack alignment problem; second operand is not a multiple of 8
/usr/ccs/bin/as: "crypto/ec/ecp_nistz256-sparcv9.s", line 5539: warning: 
stack alignment problem; second operand is not a multiple of 8

The lines in question in crypto/ec/ecp_nistz256-sparcv9.s are:

  save %sp,-(2047+192)-32*10,%sp
  save %sp,-(2047+192)-32*18-32,%sp
  save %sp,-(2047+192)-32*15-32,%sp

They probably go back to the following lines in 
crypto/ec/ecp_nistz256-sparcv9.s.S:

...
#ifdef  __arch64__
.register       %g2,#scratch
.register       %g3,#scratch
# define STACK64_FRAME  STACK_FRAME
# define LOCALS64       LOCALS
#else
# define STACK64_FRAME  (2047+192)
# define LOCALS64       STACK64_FRAME
#endif
...
         save    %sp,-STACK64_FRAME-32*10,%sp
...
         save    %sp,-STACK64_FRAME-32*18-32,%sp
...
         save    %sp,-STACK64_FRAME-32*15-32,%sp

I can't judge on the validity of the "stack alignment problem", but at 
least 2047 is indeed not divisible by 8 (but all other offsets added or 
subtracted from 2047 are).

Thanks and regards,

Rainer


More information about the openssl-dev mailing list