Closed Bug 20297 Opened 25 years ago Closed 25 years ago

xptcall vtable lossage on solaris WS5

Categories

(SeaMonkey :: Build Config, defect, P3)

Sun
Solaris
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: dmosedale, Assigned: dmosedale)

References

Details

Attachments

(3 files)

When using Solaris Workshop 5, configure.in needs to either automatically use the "-compat=4" switch or else automatically use the SUNW xptcall code. The WorkShop 5.0 vtable format is different than the Workshop 4.2 version. The 4.2 version is also the same vtable format as GCC 2.7.2.3. I don't know what sort of vtable format the latest (egcs-based) GCC's use. Does anyone know? One of the Mozilla goals here is that people should be able to build plugins or components with a freely available compiler that works with generically built binaries, and that effects our decision here.
From the CVS log of configure.in: > revision 1.25 > date: 1999/08/09 21:07:57; author: rogerl%netscape.com; > > Backing away from SUNW 5.0 version - the 4.2 workshop is the same as GCC > output and Matthias has a way to get the 5.0 workshop to produce 4.2 (and > hence GCC) compatible vtables. I'm leaving the structure intact for now in > case we need to use it for flag setting or whatever. I've added rogerl and a few other folks who might have some insight or interest to the CC list of this bug. I was going to add Matthias Spycher (sp?) as well, since Roger metioned him in the Changelog, but he doesn't appear to have a bugzilla account. Comments, anyone? It would also be interesting to know whether the WorkShop 6 compiler still supports the -compat=4 flag, as well as what its native vtable format is.
Matthias has since left Sun. I will try and find out more about workshop6 and its vtable layout.
Found out that currently there are no plans to stop supporting the -compat=4 option. Note that this option exists for compatibility with version 4 of the compiler, and just happens to also work with gcc/egcs. The compiler group recommends that we fix our code so that we do not depend upon the vtable layout.
Someone (tor, I think) said that even with the same vtable format, 4.2 and gcc do different name-mangling. Does this then mean that plugin compatibility is impossible anyway? Now, as I understand it, the reason the vtable format had to change between workshop 4.2 and 5.0 is that the old vtable format was inadequate for implementing the current ANSI C++ spec. This means that if gcc wants to stay with the standard, they'll need to get a new vtable format as well. If we're lucky, they will have chosen the same format as 5.0. It would be interesting to know what the latest egcs/gcc does use, and if it's format has actually changed.
Status: NEW → ASSIGNED
I have seen a few people attempt to compile mozilla with SUNWspro5.0 without the -compat=4 flag and get burned because the xptcall makefile unconditially includes the gcc assembly. The attached patch makes changes to autoconf to check what style vtables are being used by ${CXX} and selects the appropriate code to compile. This patch has been tested with the following values of CXX: g++ (egcs-1.1) /opt/SUNWspro4.2/bin/CC /opt/SUNWspro5.0/bin/CC -compat=4 /opt/SUNWspro5.0/bin/CC Could someone please review the patch and give a go/no-go for checkin?
Keywords: patch
Updated patch to only use the -library=iostream workaround when needed (SUNWspro5.0 in non-compat=4 mode).
This is good. We definitely want to ensure that people can build the product with whatever their compiler of choice is ... where that's possible. We _always_ want to make sure that we can be built with the leading freely available compilers. In particular, outside developers must be able to use any reasonable compiler to build plugins or components that work with our binaries built with _our_ choice of compiler. Only this will ensure a good binary distribution model for 3rd party components.
Updated patch that switches control variable to SUNWSPRO5_VTABLE and grabs the appropriate C++ libraries for the Workshop5.0 compilers.
Forgot to mention - tested on gcc-2.95.1, SUNWspro4.2, and SUNWspro5.0 (with and without -compat=4).
I have successfully built M13 with the 02/09/00 patch using Workshop 5.0 without the option -compat=4.
Target Milestone: M14
cls gave the patch(es) for this bug his r=cls seal of approval via email, so this is good to check in once the tree opens this afternoon.
Patch checked in.
wensleydale (gcc) and nebiros (SUNWspro5.0) are happy (green) with the patch, as is my usual SUNWspro4.2 build tree. Closing bug.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
yeah, baby!
You are The Man (tm)!
*** Bug 24922 has been marked as a duplicate of this bug. ***
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: