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.j...@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
levi...@openssl.org


--
Richard Levitte
levi...@openssl.org
--
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to