So I'm wondering, what happens if you apply the attached patch?

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

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

diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 1923acc..badbdba 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -851,7 +851,12 @@ EOF
   sub src2obj {
       my %args = @_;
       my $obj = $args{obj};
-      my @srcs = map { (my $x = $_) =~ s/\.S$/.s/; $x } ( @{$args{srcs}} );
+      my @srcs = map { if ($unified_info{generate}->{$_}) {
+                           (my $x = $_) =~ s/\.S$/.s/; $x
+                       } else {
+                           $_
+                       }
+                     } ( @{$args{srcs}} );
       my $srcs = join(" ",  @srcs);
       my $deps = join(" ", @srcs, @{$args{deps}});
       my $incs = join("", map { " -I".$_ } @{$args{incs}});
-- 
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to