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 -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4447 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev