[openssl-dev] [openssl.org #4447] Missing generators for sparcv8plus.s, sparcv8.s and sparccpuid.s (OpenSSL 1.1.0 pre4)

Richard Levitte via RT rt at openssl.org
Sat Mar 19 11:02:09 UTC 2016


Hmmm...

Actually, I'm thinkg that src2obj() should check if the original file exists as
given before changing .S to .s... That should work, since we're always
generating 'foo.s' from 'asm/foo.S' (or 'asm/foo.pl', but that's not applicable
here)... The directory difference should make it safe.

I'll experiment a little, there's also the question of the assembler files in
crypto/, but they are a problem in other builds as well...

So, fix coming up! But not quite your solution.

Vid Fre, 18 Mar 2016 kl. 21.56.37, skrev rainer.jung at kippdata.de:
> When building OpenSSL 1.1.0 pre4 on Solaris Sparc for 64 Bits I get an
> error, because before building crypto/bn/sparcv8plus.o first generates
> crypto/bn/asm/sparcv8plus.s from crypto/bn/asm/sparcv8plus.S with the
> following command
>
> gcc -E crypto/bn/asm/sparcv8plus.S > crypto/bn/asm/sparcv8plus.s
>
> This command is missing CFLAGS. As a consequence, the generated .s file
> does not work for 64 bit compilation and compiling it fails with lots of
> errors of type:
>
> /usr/ccs/bin/as: "crypto/bn/asm/sparcv8plus.s", line ...: error: detect
> global register use not covered .register pseudo-op
>
> The pre3 version compiled crypto/bn/asm/sparcv8plus.o directly from
> crypto/bn/asm/sparcv8plus.S (upper case ".S") using "gcc -c" and all
> CFLAGS, include flags etc.
>
> So either one does the same for pre4 or one adds a Makefile rule for
> crypto/bn/asm/sparcv8plus.s generating it from
> crypto/bn/asm/sparcv8plus.S respecting CFLAGS, include dirs etc. or
> simply copying it from the .S file.
>
> I think the switch from .S to .s happens in src2obj() inside
> Configurations/unix-Makefile.tmpl. So if it is intentional, you need to
> define and use a generator from .S to .s.
>
> The following patch worked for me, but I don't know whether it is how it
> should work:
>
>
> --- Configurations/00-base-templates.conf Wed Mar 16 19:18:09 2016
> +++ Configurations/00-base-templates.conf Fri Mar 18 22:31:59 2016
> @@ -198,8 +198,8 @@
> },
> sparcv9_asm => {
> template => 1,
> - cpuid_asm_src => "sparcv9cap.c sparccpuid.S",
> - bn_asm_src => "asm/sparcv8plus.S sparcv9-mont.S
> sparcv9a-mont.S vis3-mont.S sparct4-mont.S sparcv9-gf2m.S",
> + cpuid_asm_src => "sparcv9cap.c sparccpuid.s",
> + bn_asm_src => "sparcv8plus.s sparcv9-mont.S sparcv9a-mont.S
> vis3-mont.S sparct4-mont.S sparcv9-gf2m.S",
> ec_asm_src => "ecp_nistz256.c ecp_nistz256-sparcv9.S",
> des_asm_src => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.S",
> aes_asm_src => "aes_core.c aes_cbc.c aes-sparcv9.S
> aest4-sparcv9.S",
> @@ -213,7 +213,7 @@
> sparcv8_asm => {
> template => 1,
> cpuid_asm_src => "",
> - bn_asm_src => "asm/sparcv8.S",
> + bn_asm_src => "sparcv8.s",
> des_asm_src => "des_enc-sparc.S fcrypt_b.c",
> perlasm_scheme => "void"
> },
>
>
> (upper case ".S" to lower case ".s" and removal of "asm/").
>
> and two build.info changes:
>
>
> --- crypto/build.info Wed Mar 16 19:18:08 2016
> +++ crypto/build.info Fri Mar 18 22:11:43 2016
> @@ -21,6 +21,8 @@
>
> GENERATE[x86_64cpuid.s]=x86_64cpuid.pl $(PERLASM_SCHEME)
>
> +GENERATE[sparccpuid.s]=sparccpuid.S
> +
> GENERATE[ia64cpuid.s]=ia64cpuid.S
> GENERATE[ppccpuid.s]=ppccpuid.pl $(PERLASM_SCHEME)
> GENERATE[pariscid.s]=pariscid.pl $(PERLASM_SCHEME)
>
>
> --- crypto/bn/build.info Wed Mar 16 19:18:09 2016
> +++ crypto/bn/build.info Fri Mar 18 22:11:43 2016
> @@ -24,6 +24,9 @@
> $(PERLASM_SCHEME) $(CFLAGS) $(LIB_CFLAGS) $(PROCESSOR)
> DEPEND[x86-gf2m.s]=../perlasm/x86asm.pl
>
> +GENERATE[sparcv8.s]=asm/sparcv8.S
> +GENERATE[sparcv8plus.s]=asm/sparcv8plus.S
> +
> GENERATE[sparcv9a-mont.S]=asm/sparcv9a-mont.pl $(PERLASM_SCHEME)
> INCLUDE[sparcv9a-mont.o]=..
> GENERATE[sparcv9-mont.S]=asm/sparcv9-mont.pl $(PERLASM_SCHEME)
>
>
> This seems to be consistent with how it is done for
>
> crypto/ia64cpuid.S
> crypto/aes/asm/aes-ia64.S
> crypto/bn/asm/ia64.S
>
> The same changes probably need to be done for
>
> crypto/s390xcpuid.S
> crypto/bn/asm/s390x.S
>
> Regards,
>
> Rainer
>


--
Richard Levitte
levitte at openssl.org

-- 
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4447
Please log in as guest with password guest if prompted



More information about the openssl-dev mailing list