[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 21:22:45 UTC 2016


Commit 674d5858df6cd3dc5cafa25875861f4742d64608, merged to master. Closing
ticket.

Cheers,
Richard

Vid Sat, 19 Mar 2016 kl. 13.38.57, skrev rainer.jung at kippdata.de:
> Hi Richard,
>
> Am 19.03.2016 um 12:49 schrieb Richard Levitte via RT:
> > So I'm wondering, what happens if you apply the attached patch?
>
> Works like a charm, tested on Solaris 10 Sparc doing a 32bit build and a
> 64bit build. The intermediate ".s" (lower case) file no longer gets
> generated and instead the object file gets directly compiled from the .S
> (upper case) file.
>
> Builds succeed, tests pass.
>
> As always: thanks a bunch!
>
> Regards,
>
> Rainer
>
> > Vid Sat, 19 Mar 2016 kl. 11.02.09, skrev levitte:
> >> 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
> >
> >
> > --
> > Richard Levitte
> > levitte at openssl.org
>


--
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