Closed Bug 841664 Opened 11 years ago Closed 11 years ago

Drop (32-bit) SPARC V8 processor support on Solaris

Categories

(NSS :: Build, defect, P2)

Sun
Solaris
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: wtc, Assigned: wtc)

Details

Attachments

(2 files, 1 obsolete file)

Attached patch Patch (obsolete) — Splinter Review
SPARC V8 is a 32-bit processor architecture. It is
very old. The Solaris Studio compilers dropped support
for SPARC V8 in Studio 12 Update 1.

Back in the iPlanet days we already had trouble finding
a SPARC V8 machine to test NSS on it.

The attached patch changes -xarch=v8 to -xarch=v8plus.
v8plus is essentially the next version of the SPARC
architecture. It is actually V9 with a 32-bit memory
model. This is why the GCC command line option in
SunOS5.mk says -mcpu=v9.

I will also remove the SPARC V8 assembly code file
mpv_sparcv8x.s when I check in this patch.
Attachment #714258 - Flags: review?(kaie)
Comment on attachment 714258 [details] [diff] [review]
Patch

Review of attachment 714258 [details] [diff] [review]:
-----------------------------------------------------------------

Kai, I annotated the patch to help you understand it
because I suspect you are unfamiliar with how we
build the freebl3 shared libraries for Solaris SPARC.

::: mozilla/security/nss/lib/freebl/Makefile
@@ -283,5 @@
>      ifdef USE_64
>          HAVE_ABI64_INT = 1
>          HAVE_ABI64_FPU = 1
>      else
> -        HAVE_ABI32_INT32 = 1

Remember we build three freebl3 shared libraries
for different versions of SPARC processors? The
"ABI32_INT32" flavor is the SPARC V8. It is deleted
by this patch.

@@ -387,5 @@
>      ### set flags for both GCC and Sun cc
> -    ifdef USE_ABI32_INT32
> -	# this builds for Sparc v8 pure 32-bit architecture
> -	DEFINES += -DMP_USE_UINT_DIGIT -DMP_ASSEMBLY_MULTIPLY
> -	ASFILES  = mpv_sparcv8x.s

This shows that mpv_sparcv8x.s will be obsolete
after this patch is checked in, so I will remove
this file.

::: mozilla/security/nss/lib/freebl/loader.c
@@ +35,5 @@
>  #else
>  
>  const static char fpu_hybrid_shared_lib[] = "libfreebl_32fpu_3.so";
>  const static char int_hybrid_shared_lib[] = "libfreebl_32int64_3.so";
> +const static char *non_hybrid_shared_lib  = NULL;

Setting this to NULL ensures that NSS cannot
possibly load the nonexistent libfreebl_32int_3.so
by mistake.

The reason I can't remove this variable easily
is that this variable is still needed in 64-bit
Solaris builds:

http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/security/nss/lib/freebl/loader.c&rev=1.60&mark=20,26,30,35,39,44#20

and a function shared by 32-bit and 64-bit builds
(getLibName) references this variable:

http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/security/nss/lib/freebl/loader.c&rev=1.60&mark=47,79#46
Comment on attachment 714258 [details] [diff] [review]
Patch

r=kaie
Attachment #714258 - Flags: review?(kaie) → review+
Attached patch Patch v2Splinter Review
I added a comment to lib/freebl/loader.c to explain what
non_hybrid_shared_lib was used for. I also made it a const
variable so that we can't change it to a non-NULL value by
accident.

Patch checked in on the NSS trunk (NSS 3.14.4).

Checking in coreconf/SunOS5.mk;
/cvsroot/mozilla/security/coreconf/SunOS5.mk,v  <--  SunOS5.mk
new revision: 1.30; previous revision: 1.29
done
Checking in nss/lib/freebl/Makefile;
/cvsroot/mozilla/security/nss/lib/freebl/Makefile,v  <--  Makefile
new revision: 1.128; previous revision: 1.127
done
Checking in nss/lib/freebl/loader.c;
/cvsroot/mozilla/security/nss/lib/freebl/loader.c,v  <--  loader.c
new revision: 1.61; previous revision: 1.60
done
Removing nss/lib/freebl/mpi/mpv_sparcv8x.s;
/cvsroot/mozilla/security/nss/lib/freebl/mpi/mpv_sparcv8x.s,v  <--  mpv_sparcv8x.s
new revision: delete; previous revision: 1.3
done
Attachment #714258 - Attachment is obsolete: true
Attachment #714490 - Flags: checked-in+
(In reply to Wan-Teh Chang from comment #0)
> The Solaris Studio compilers dropped support
> for SPARC V8 in Studio 12 Update 1.

I checked the release notes of Sun Studio 12 and its updates.

In the release notes of Sun Studio 12 Update 1 and Oracle Solaris
Studio 12.2, the -xarch=v7/v8/v8a options are listed in the
"Features That Might Be Removed in a Future Release" section and
marked as obsolete.

In the release notes of Oracle Solaris Studio 12.3 (the current
release), the -xarch=v7/v8/v8a options are listed in the "Features
That Have Been Removed in This Release".

So it seems that the Solaris Studio compilers started to warn about
dropping support for SPARC V8 in Studio 12 Update 1 and truly dropped
support in Studio 12.3.
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Priority: -- → P2
Resolution: --- → FIXED
Comment on attachment 714742 [details] [diff] [review]
Remove a reference to the obsolete libfreebl_32int_3.so in tests/memleak/memleak.sh

(In reply to Wan-Teh Chang from comment #5)
> Created attachment 714742 [details] [diff] [review]
> Remove a reference to the obsolete libfreebl_32int_3.so in
> tests/memleak/memleak.sh

Note that I found libfreebl_32int_3.sl listed in loader.c for HPUX
(which is most likely something else, because of the different extension .sl vs .so)

If you are sure this patch is correct nevertheless, then r=kaie
Attachment #714742 - Flags: review?(kaie) → review+
Note mozilla/security/nss/pkg/solaris/SUNWtls/prototype_sparc also contains references to libfreebl_32int_3
Comment on attachment 714742 [details] [diff] [review]
Remove a reference to the obsolete libfreebl_32int_3.so in tests/memleak/memleak.sh

Kai: thank you for checking other references to libfreebl_32int_3
in the NSS source tree.

libfreebl_32int_3 (with the .sl file suffix) is still used by 32-bit
HP-UX PA-RISC. That shared library is also obsolete today, but I
didn't touch the HP-UX PA-RISC stuff in this round of changes. I
think it should be OK to just remove support for HP-UX PA-RISC
altogether.

I also know about the reference to libfreebl_32int_3 in
mozilla/security/nss/pkg/solaris/SUNWtls/prototype_sparc. For that,
I propose that we remove the entire mozilla/security/nss/pkg
directory. (Perhaps we just don't copy that directory to the new
Hg repository.) This is why I didn't touch that file in this bug.

Patch checked in on the NSS trunk (NSS 3.14.4).

Checking in memleak.sh;
/cvsroot/mozilla/security/nss/tests/memleak/memleak.sh,v  <--  memleak.sh
new revision: 1.42; previous revision: 1.41
done
Attachment #714742 - Flags: checked-in+
(In reply to Wan-Teh Chang from comment #8)
> (Perhaps we just don't copy that directory to the new
> Hg repository.) 

That would be more complicated.

If you don't want it to show up in hg, I'd prefer removing it prior to such a migration.
Target Milestone: 3.14.4 → 3.15
Stumbled upon this as i'm updating the nss port on OpenBSD to 3.15 - does this effectively also drops support for sparc32 support on all platforms, or only solaris ? OpenBSD/sparc is still in use, and has a nss 3.14.3 pkg right now.
Landry: this bug is Solaris only. Also, this bug drops support for 32-bit
SPARC V8 *processor*. We still support running 32-bit Solaris NSS code on
(64-bit) UltraSPARC processors.
(In reply to Wan-Teh Chang from comment #11)
> Landry: this bug is Solaris only.
> Also, this bug drops support for 32-bit SPARC V8 *processor*.

Yeah, OpenBSD still run on those processors with the sparc port. The sparc64 port for UltraSPARC processors is independent from it.

Glad to know it's solaris only, i'll make sure to get 3.15 tested on sparc v8.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: