Firefox 3.0.19 Tru64 finally finished !

HP/DEC/Compaq workstations/servers and operating systems (HP-UX, Tru64, OpenVMS, NonStop, etc.)
Forum rules
Any posts concerning pirated software or offering to buy/sell/trade commercial software are subject to removal.
User avatar
rosehillbob
Posts: 57
Joined: Sat Apr 11, 2015 6:25 am

Firefox 3.0.19 Tru64 finally finished !

Unread postby rosehillbob » Thu Nov 23, 2017 12:58 am

Well this took a lot longer to make the necessary source code changes and build new tools to finish the build. I am currently seeding the torrent now. I have a "big pipe" to push the bits to the world so start downloading and seeding now.
This is first new web browser announcement for Tru64 in eight years!
The resulting download is the three tar files. Two of the tar files are for firefox. One is "generic" the other is a build "tuned" for ev6 or later cpu's used in models like DS10,DS20,ES40,ES47,etc. The last tar file is for hardware to old to run firefox so I uploaded a revised seamonkey 1.1.18. I will mention on my ES47 the generic build when first started takes about a minute to build the registry and startup. The next time it takes 45 seconds to startup. The version tuned for the EV6 take 45 seconds to build the registry to first bild the registry and then takes only 15 seconds to startup.. I was surprised to find the EV6 build was three times as fast as the generic build when run on a alpha with a EV6 or later cpu. I thought the speed improvement would only be 10-15% at most.


Firefox3.0.19.torrent
(14.43 KiB) Downloaded 11 times
:Onyx2: :O2: :Octane:

User avatar
jimmer
Donor
Donor
Posts: 483
Joined: Tue Oct 12, 2004 3:54 pm
Location: London, Ingerlund

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby jimmer » Thu Nov 23, 2017 1:38 am

Chapeau!
:Fuel: redbox 800Mhz 4Gb V12
:O2: bluebox 200Mhz 256Mb AV1+O2Cam

User avatar
foetz
Moderator
Moderator
Posts: 6593
Joined: Mon Apr 14, 2003 4:34 am
Contact:

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby foetz » Thu Nov 23, 2017 2:18 am

ooh very nice work. much thanks :D

User avatar
rosehillbob
Posts: 57
Joined: Sat Apr 11, 2015 6:25 am

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby rosehillbob » Thu Nov 23, 2017 10:12 am

I just noticed I didn't mention is after downloading and gunziping everything you need to change to root cd to / then use gtar to properly install the two directory's "/usr/opt/FSF and /usr/opt/ff3". You should also do a "chown -R root:system /usr/opt/ff3" although firefox will run OK if you don't. The reason for changing the owner of /usr/opt/ff3 is to force multiple users to register the application in their own home directories instead of using a "common one" in /usr/opt/ff3.
:Onyx2: :O2: :Octane:

User avatar
rosehillbob
Posts: 57
Joined: Sat Apr 11, 2015 6:25 am

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby rosehillbob » Thu Nov 23, 2017 9:22 pm

Well this post is only for those curious on how I built FireFox 3.0 since it was originally released when Tru64 was still a supported product. Well it was never released since firefox2 was the last release you could build with Compaq's c++ compiler. What is needed to build it is GCC4.7.4, a replacement for the the bourne shell /bin/sh (I used bash 4.1), gmake, glib2.2.28, gtk+-2.12.2, libidl, jpeg-turbo, libpng and tiff.
you will also need a .mozconfig file and various compiler flags set to build everything.
contents of .mozconfig:

Code: Select all

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-shared
ac_add_options --enable-application=browser
ac_add_options --enable-optimize
ac_add_options --enable-strip
ac_add_options --enable-strip-libs
ac_add_options --enable-shared
ac_add_options --with-xprint
ac_add_options --disable-debug
ac_add_options --disable-ldap
ac_add_options --with-pthreads
ac_add_options --with-system-sqlite
ac_add_options --disable-tests
ac_add_options --disable-mochitest
ac_add_options --enable-system-cairo
ac_add_options --disable-updater
ac_add_options --disable-update-channel
ac_add_options --disable-dbus
ac_add_options --disable-gnomevfs
ac_add_options --disable-gnomeui
ac_add_options --enable-plugins
ac_add_options --disable-accessibility
ac_add_options --disable-extensions
ac_add_options --disable-inspector-apis
ac_add_options --disable-pref-extensions
ac_add_options --disable-installer
ac_add_options --disable-official-branding
ac_add_options --disable-parental-controls
ac_add_options --disable-javaxpcom
ac_add_options --disable-safe-browsing
ac_add_options --disable-url-classifier
ac_add_options --disable-ogg
ac_add_options --disable-wave
ac_add_options --disable-crashreporter
ac_add_options --disable-xft
ac_add_options --disable-libxul
ac_add_options --enable-freetype2
mk_add_options MOZ_MAKE_FLAGS="-j8"


contents of .profile

Code: Select all

if [ ! "$DT" ]; then
   stty dec
   tset -I -Q
fi
PS1="`hostname`> "
MAIL=/usr/spool/mail/$USER
echo $PATH | /bin/grep -q "$HOME/bin" ||
{
   #PATH=$HOME/bin:${PATH:-/usr/bin:.}
   PATH=$HOME/bin:/usr/opt/gcc4.7/bin:/usr/opt/FSF/bin:${PATH:-/usr/bin:.}
   export PATH
}


CFLAGS="-pthread -O3 -arch ev6"
CXXFLAGS="-pthread -fpermissive -Ofast -mcpu=ev6"

LDFLAGS="-L/usr/opt/FSF/lib"
#LD_LIBRARY_PATH=/usr/opt/FSF/lib
CPPFLAGS=-I/usr/opt/FSF/include


CC=cc
CXX=g++

export CPPFLAGS CC CXX CFLAGS CXXFLAGS LDFLAGS LD_LIBRARY_PATH


Finally a diff file of the changes to firefox3.0.19

Code: Select all

diff -c -r mozilla.old/configure mozilla/configure
*** mozilla.old/configure   Sat Nov  4 15:01:46 2017
--- mozilla/configure   Thu Nov 23 18:29:32 2017
***************
*** 5365,5370 ****
--- 5365,5371 ----
          OS_RELEASE=V4.0D
          ;;
      esac
+     OS_RELEASE=V5.0
      ;;
  *OpenVMS*)
      OS_ARCH=OpenVMS
***************
*** 5468,5474 ****
          # Don't allow undefined symbols in libraries
          DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
      fi
!     WARNINGS_AS_ERRORS='-Werror'
      DSO_CFLAGS=''
      DSO_PIC_CFLAGS='-fPIC'
      _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
--- 5469,5475 ----
          # Don't allow undefined symbols in libraries
          DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
      fi
! #    WARNINGS_AS_ERRORS='-Werror'
      DSO_CFLAGS=''
      DSO_PIC_CFLAGS='-fPIC'
      _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
***************
*** 5485,5491 ****
      # -Wconversion - complained when char's or short's were used a function args
      # -Wshadow - removed because it generates more noise than help --pete
      _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
!     if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
         && test -z "$INTEL_CC"; then
          # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
          # icc doesn't support this flag.
--- 5486,5492 ----
      # -Wconversion - complained when char's or short's were used a function args
      # -Wshadow - removed because it generates more noise than help --pete
      _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
!     if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc"  && test "$CPU_ARCH" != "alpha"\
         && test -z "$INTEL_CC"; then
          # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
          # icc doesn't support this flag.
***************
*** 7053,7073 ****
 
  alpha*-*-osf*)
      if test "$GNU_CC"; then
!       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
!       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
!
      else
     MOZ_DEBUG_FLAGS='-g'
!    ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
     CFLAGS="$CFLAGS -ieee"
!    CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
!    DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
     DSO_CFLAGS=
     DSO_PIC_CFLAGS=
!    MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
!    MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
!    MKSHLIB_FORCE_ALL='-all'
!    MKSHLIB_UNFORCE_ALL='-none'
        cat >> confdefs.h <<\EOF
  #define NSCAP_DISABLE_TEST_DONTQUERY_CASES 1
  EOF
--- 7054,7083 ----
 
  alpha*-*-osf*)
      if test "$GNU_CC"; then
! #building with GNU C and GNU C++   
!      MOZ_DEBUG_FLAGS='-g'
!      CFLAGS="$CFLAGS -mieee"
!      CXXFLAGS="$CXXFLAGS -mieee"
!      MOZ_FIX_LINK_PATHS='-Wl,-rpath,$(LIBXUL_DIST)/bin -Wl,-rpath,$(prefix)/lib'
!      DSO_LDOPTS='-shared -Wl,-msym -Wl,-expect_unresolved,* -Wl,-update_registry,$(DIST)/so_locations'
!      MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS)  -o $@'
!      MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS)  -o $@'
!      AS=cc
!      ASFLAGS='-std1 -D__GNUC__ -I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
      else
+ #building with native C and GNU C++   
     MOZ_DEBUG_FLAGS='-g'
!    MOZ_FIX_LINK_PATHS='-Wl,-rpath,$(LIBXUL_DIST)/bin'
!    ASFLAGS='-std1 -D__GNUC__ -I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
     CFLAGS="$CFLAGS -ieee"
!    CXXFLAGS="$CXXFLAGS  -fno-exceptions "
!       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) -shared  -Wl,-msym -Wl,-expect_unresolved,* -Wl,-update_registry,$(DIST)/so_locations  -o $@'
!    DSO_LDOPTS=-shared
     DSO_CFLAGS=
     DSO_PIC_CFLAGS=
!    MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) -shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations -soname $@ -o $@'
!    MKSHLIB_FORCE_ALL=
!    MKSHLIB_UNFORCE_ALL=
        cat >> confdefs.h <<\EOF
  #define NSCAP_DISABLE_TEST_DONTQUERY_CASES 1
  EOF
diff -c -r mozilla.old/gfx/src/thebes/nsThebesDeviceContext.cpp mozilla/gfx/src/thebes/nsThebesDeviceContext.cpp
*** mozilla.old/gfx/src/thebes/nsThebesDeviceContext.cpp   Tue May 27 11:22:38 2008
--- mozilla/gfx/src/thebes/nsThebesDeviceContext.cpp   Thu Nov 23 18:00:00 2017
***************
*** 63,68 ****
--- 63,73 ----
  #include <pango/pango-fontmap.h>
  #endif /* GTK2 */
 
+ #undef round
+ extern "C" {
+ extern double round(double __x);
+ }
+
  #include "gfxImageSurface.h"
 
  #ifdef MOZ_ENABLE_GTK2
diff -c -r mozilla.old/js/src/jsgc.c mozilla/js/src/jsgc.c
*** mozilla.old/js/src/jsgc.c   Thu Nov 23 18:09:27 2017
--- mozilla/js/src/jsgc.c   Thu Nov 23 18:04:46 2017
***************
*** 98,104 ****
  JS_END_EXTERN_C
  #endif
 
!
  /*
   * Include the headers for mmap unless we have posix_memalign and do not
   * insist on mmap.
--- 98,104 ----
  JS_END_EXTERN_C
  #endif
 
! #if 0
  /*
   * Include the headers for mmap unless we have posix_memalign and do not
   * insist on mmap.
***************
*** 131,137 ****
  # endif
  #endif
 
!
  /*
   * A GC arena contains a fixed number of flag bits for each thing in its heap,
   * and supports O(1) lookup of a flag given its thing's address.
--- 131,140 ----
  # endif
  #endif
 
! #endif
! /* go conservative on alpha OSF1 for now */
! #define JS_GC_USE_MMAP 0
! #define HAS_POSIX_MEMALIGN 0
  /*
   * A GC arena contains a fixed number of flag bits for each thing in its heap,
   * and supports O(1) lookup of a flag given its thing's address.
diff -c -r mozilla.old/netwerk/cache/src/nsDiskCacheDeviceSQL.cpp mozilla/netwerk/cache/src/nsDiskCacheDeviceSQL.cpp
*** mozilla.old/netwerk/cache/src/nsDiskCacheDeviceSQL.cpp   Thu Feb  7 01:04:30 2008
--- mozilla/netwerk/cache/src/nsDiskCacheDeviceSQL.cpp   Thu Nov 23 18:28:28 2017
***************
*** 132,138 ****
        mEvictionFunction->Reset();
      }
 
!     void Apply() { return mEvictionFunction->Apply(); }
 
    private:
      mozIStorageConnection *mDB;
--- 132,138 ----
        mEvictionFunction->Reset();
      }
 
!     void Apply() {  mEvictionFunction->Apply(); }
 
    private:
      mozIStorageConnection *mDB;
diff -c -r mozilla.old/widget/src/gtk2/nsWindow.cpp mozilla/widget/src/gtk2/nsWindow.cpp
*** mozilla.old/widget/src/gtk2/nsWindow.cpp   Sun Apr 19 20:17:56 2009
--- mozilla/widget/src/gtk2/nsWindow.cpp   Sun Nov  5 21:22:24 2017
***************
*** 59,65 ****
  #include <gtk/gtkwindow.h>
  #include <gdk/gdkx.h>
  #include <gdk/gdkkeysyms.h>
! #include <X11/XF86keysym.h>
 
  #include "nsWidgetAtoms.h"
 
--- 59,73 ----
  #include <gtk/gtkwindow.h>
  #include <gdk/gdkx.h>
  #include <gdk/gdkkeysyms.h>
! //#include <X11/XF86keysym.h>
! #include <X11/keysym.h>
! #define XF86XK_Back      0x1008FF26   /* Like back on a browser     */
! #define XF86XK_Forward      0x1008FF27   /* Like forward on a browser  */
! #define XF86XK_Stop      0x1008FF28   /* Stop current operation     */
! #define XF86XK_Refresh      0x1008FF29   /* Refresh the page           */
! #define XF86XK_Favorites   0x1008FF30   /* Show favorite locations    */
! #define XF86XK_Search      0x1008FF1B   /* Search                     */
! #define XF86XK_HomePage      0x1008FF18   /* Display user's home page   */
 
  #include "nsWidgetAtoms.h"
 
diff -c -r mozilla.old/widget/src/gtkxtbin/gtk2xtbin.c mozilla/widget/src/gtkxtbin/gtk2xtbin.c
*** mozilla.old/widget/src/gtkxtbin/gtk2xtbin.c   Sat Sep 29 00:08:14 2007
--- mozilla/widget/src/gtkxtbin/gtk2xtbin.c   Thu Nov 23 18:26:12 2017
***************
*** 210,216 ****
      XtAppProcessEvent(ac, XtIMAll);
    return TRUE;
  }
!
  GtkType
  gtk_xtbin_get_type (void)
  {
--- 210,216 ----
      XtAppProcessEvent(ac, XtIMAll);
    return TRUE;
  }
! #define GTK_TYPE_SOCKET            (gtk_socket_get_type ())
  GtkType
  gtk_xtbin_get_type (void)
  {
diff -c -r mozilla.old/xpcom/base/nsStackWalk.cpp mozilla/xpcom/base/nsStackWalk.cpp
*** mozilla.old/xpcom/base/nsStackWalk.cpp   Tue Mar 11 15:46:31 2008
--- mozilla/xpcom/base/nsStackWalk.cpp   Sun Nov  5 15:25:32 2017
***************
*** 1124,1132 ****
  #define __USE_GNU
  #endif
 
! #if defined(HAVE_LIBDL) || defined(XP_MACOSX)
  #include <dlfcn.h>
! #endif
 
 
 
--- 1124,1133 ----
  #define __USE_GNU
  #endif
 
! //#if defined(HAVE_LIBDL) || defined(XP_MACOSX)
! #define __EXTENSIONS__
  #include <dlfcn.h>
! //#endif
 
 
 
diff -c -r mozilla.old/xpcom/reflect/xptcall/src/md/unix/Makefile.in mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in
*** mozilla.old/xpcom/reflect/xptcall/src/md/unix/Makefile.in   Tue Apr  8 23:34:20 2008
--- mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in   Thu Nov 23 18:11:44 2017
***************
*** 145,154 ****
  #
  # Tru64/Alpha
  #
! ifeq ($(OS_ARCH)$(OS_TEST),OSF1alpha)
! CPPSRCS      := xptcinvoke_osf1_alpha.cpp xptcstubs_osf1_alpha.cpp
! ASFILES      := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
! endif
  #
  # Linux/Alpha
  #
--- 145,157 ----
  #
  # Tru64/Alpha
  #
! # Tru/64 fails following test when building with gnu c++ so we force the build
! #ifeq ($(OS_ARCH)$(OS_TEST),OSF1alpha)
! #CPPSRCS      := xptcinvoke_osf1_alpha.cpp xptcstubs_osf1_alpha.cpp
! #ASFILES      := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
! CPPSRCS      := xptcinvoke_osf1_gcc_alpha.cpp xptcstubs_osf1_gcc_alpha.cpp
!
! #endif
  #
  # Linux/Alpha
  #
diff -c -r mozilla.old/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_osf1_gcc_alpha.cpp mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_osf1_gcc_alpha.cpp
*** mozilla.old/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_osf1_gcc_alpha.cpp   Thu Nov 23 18:50:16 2017
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_osf1_gcc_alpha.cpp   Thu Nov 23 18:15:56 2017
***************
*** 0 ****
--- 1,177 ----
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /* ***** BEGIN LICENSE BLOCK *****
+  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+  *
+  * The contents of this file are subject to the Mozilla Public License Version
+  * 1.1 (the "License"); you may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at
+  * http://www.mozilla.org/MPL/
+  *
+  * Software distributed under the License is distributed on an "AS IS" basis,
+  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+  * for the specific language governing rights and limitations under the
+  * License.
+  *
+  * The Original Code is mozilla.org code.
+  *
+  * The Initial Developer of the Original Code is
+  * Netscape Communications Corporation.
+  * Portions created by the Initial Developer are Copyright (C) 1998
+  * the Initial Developer. All Rights Reserved.
+  *
+  * Contributor(s):
+  *   Glen Nakamura <glen@imodulo.com>
+  *
+  * Alternatively, the contents of this file may be used under the terms of
+  * either of the GNU General Public License Version 2 or later (the "GPL"),
+  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+  * in which case the provisions of the GPL or the LGPL are applicable instead
+  * of those above. If you wish to allow use of your version of this file only
+  * under the terms of either the GPL or the LGPL, and not to allow others to
+  * use your version of this file under the terms of the MPL, indicate your
+  * decision by deleting the provisions above and replace them with the notice
+  * and other provisions required by the GPL or the LGPL. If you do not delete
+  * the provisions above, a recipient may use your version of this file under
+  * the terms of any one of the MPL, the GPL or the LGPL.
+  *
+  * ***** END LICENSE BLOCK ***** */
+
+ /* Platform specific code to invoke XPCOM methods on native objects */
+
+ #include "xptcprivate.h"
+
+ /* Prototype specifies unmangled function name and disables unused warning */
+ static void
+ invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+ __asm__("invoke_copy_to_stack") __attribute__((used));
+
+ static void
+ invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+ {
+     const PRUint8 NUM_ARG_REGS = 6-1;        // -1 for "this" pointer
+
+     for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+     {
+         if(s->IsPtrData())
+         {
+             *d = (PRUint64)s->ptr;
+             continue;
+         }
+         switch(s->type)
+         {
+         case nsXPTType::T_I8     : *d = (PRUint64)s->val.i8;     break;
+         case nsXPTType::T_I16    : *d = (PRUint64)s->val.i16;    break;
+         case nsXPTType::T_I32    : *d = (PRUint64)s->val.i32;    break;
+         case nsXPTType::T_I64    : *d = (PRUint64)s->val.i64;    break;
+         case nsXPTType::T_U8     : *d = (PRUint64)s->val.u8;     break;
+         case nsXPTType::T_U16    : *d = (PRUint64)s->val.u16;    break;
+         case nsXPTType::T_U32    : *d = (PRUint64)s->val.u32;    break;
+         case nsXPTType::T_U64    : *d = (PRUint64)s->val.u64;    break;
+         case nsXPTType::T_FLOAT  :
+             if(i < NUM_ARG_REGS)
+             {
+                 // convert floats to doubles if they are to be passed
+                 // via registers so we can just deal with doubles later
+                 union { PRUint64 u64; double d; } t;
+                 t.d = (double)s->val.f;
+                 *d = t.u64;
+             }
+             else
+                 // otherwise copy to stack normally
+                 *d = (PRUint64)s->val.u32;
+             break;
+         case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64;    break;
+         case nsXPTType::T_BOOL   : *d = (PRUint64)s->val.b;      break;
+         case nsXPTType::T_CHAR   : *d = (PRUint64)s->val.c;      break;
+         case nsXPTType::T_WCHAR  : *d = (PRUint64)s->val.wc;     break;
+         default:
+             // all the others are plain pointer types
+             *d = (PRUint64)s->val.p;
+             break;
+         }
+     }
+ }
+
+ /*
+  * EXPORT_XPCOM_API(nsresult)
+  * NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
+  *                  PRUint32 paramCount, nsXPTCVariant* params)
+  */
+ __asm__(
+     "#### NS_InvokeByIndex_P ####\n"
+ ".text\n\t"
+     ".align 5\n\t"
+     ".globl NS_InvokeByIndex_P\n\t"
+     ".ent NS_InvokeByIndex_P\n"
+ "NS_InvokeByIndex_P:\n\t"
+     ".frame $15,32,$26,0\n\t"
+     ".mask 0x4008000,-32\n\t"
+     "ldgp $29,0($27)\n"
+ "$NS_InvokeByIndex_P..ng:\n\t"
+     "subq $30,32,$30\n\t"
+     "stq $26,0($30)\n\t"
+     "stq $15,8($30)\n\t"
+     "bis $30,$30,$15\n\t"
+     ".prologue 1\n\t"
+
+     /*
+      * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+      * parameters. (+1 for "this" pointer)  Room for at least 6 parameters
+      * is required for storage of those passed via registers.
+      */
+
+     "bis $31,5,$2\n\t"      /* count = MAX(5, "paramCount") */
+     "cmplt $2,$18,$1\n\t"
+     "cmovne $1,$18,$2\n\t"
+     "s8addq $2,16,$1\n\t"   /* room for count+1 params (8 bytes each) */
+     "bic $1,15,$1\n\t"      /* stack space is rounded up to 0 % 16 */
+     "subq $30,$1,$30\n\t"
+
+     "stq $16,0($30)\n\t"    /* save "that" (as "this" pointer) */
+     "stq $17,16($15)\n\t"   /* save "methodIndex" */
+
+     "addq $30,8,$16\n\t"    /* pass stack pointer */
+     "bis $18,$18,$17\n\t"   /* pass "paramCount" */
+     "bis $19,$19,$18\n\t"   /* pass "params" */
+     "bsr $26,$invoke_copy_to_stack..ng\n\t"     /* call invoke_copy_to_stack */
+
+     /*
+      * Copy the first 6 parameters to registers and remove from stack frame.
+      * Both the integer and floating point registers are set for each parameter
+      * except the first which is the "this" pointer.  (integer only)
+      * The floating point registers are all set as doubles since the
+      * invoke_copy_to_stack function should have converted the floats.
+      */
+     "ldq $16,0($30)\n\t"    /* integer registers */
+     "ldq $17,8($30)\n\t"
+     "ldq $18,16($30)\n\t"
+     "ldq $19,24($30)\n\t"
+     "ldq $20,32($30)\n\t"
+     "ldq $21,40($30)\n\t"
+     "ldt $f17,8($30)\n\t"   /* floating point registers */
+     "ldt $f18,16($30)\n\t"
+     "ldt $f19,24($30)\n\t"
+     "ldt $f20,32($30)\n\t"
+     "ldt $f21,40($30)\n\t"
+
+     "addq $30,48,$30\n\t"   /* remove params from stack */
+
+     /*
+      * Call the virtual function with the constructed stack frame.
+      */
+     "bis $16,$16,$1\n\t"    /* load "this" */
+     "ldq $2,16($15)\n\t"    /* load "methodIndex" */
+     "ldq $1,0($1)\n\t"      /* load vtable */
+     "s8addq $2,$31,$2\n\t"  /* vtable index = "methodIndex" * 8 */
+     "addq $1,$2,$1\n\t"
+     "ldq $27,0($1)\n\t"     /* load address of function */
+     "jsr $26,($27),0\n\t"   /* call virtual function */
+     "ldgp $29,0($26)\n\t"
+
+     "bis $15,$15,$30\n\t"
+     "ldq $26,0($30)\n\t"
+     "ldq $15,8($30)\n\t"
+     "addq $30,32,$30\n\t"
+     "ret $31,($26),1\n\t"
+     ".end NS_InvokeByIndex_P"
+     );
diff -c -r mozilla.old/xpcom/reflect/xptcall/src/md/unix/xptcstubs_osf1_gcc_alpha.cpp mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_osf1_gcc_alpha.cpp
*** mozilla.old/xpcom/reflect/xptcall/src/md/unix/xptcstubs_osf1_gcc_alpha.cpp   Thu Nov 23 18:50:38 2017
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_osf1_gcc_alpha.cpp   Thu Nov 23 18:14:12 2017
***************
*** 0 ****
--- 1,220 ----
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /* ***** BEGIN LICENSE BLOCK *****
+  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+  *
+  * The contents of this file are subject to the Mozilla Public License Version
+  * 1.1 (the "License"); you may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at
+  * http://www.mozilla.org/MPL/
+  *
+  * Software distributed under the License is distributed on an "AS IS" basis,
+  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+  * for the specific language governing rights and limitations under the
+  * License.
+  *
+  * The Original Code is mozilla.org code.
+  *
+  * The Initial Developer of the Original Code is
+  * Netscape Communications Corporation.
+  * Portions created by the Initial Developer are Copyright (C) 1999
+  * the Initial Developer. All Rights Reserved.
+  *
+  * Contributor(s):
+  *   Glen Nakamura <glen@imodulo.com>
+  *   Modified by Robert Meader for OSF
+  * Alternatively, the contents of this file may be used under the terms of
+  * either of the GNU General Public License Version 2 or later (the "GPL"),
+  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+  * in which case the provisions of the GPL or the LGPL are applicable instead
+  * of those above. If you wish to allow use of your version of this file only
+  * under the terms of either the GPL or the LGPL, and not to allow others to
+  * use your version of this file under the terms of the MPL, indicate your
+  * decision by deleting the provisions above and replace them with the notice
+  * and other provisions required by the GPL or the LGPL. If you do not delete
+  * the provisions above, a recipient may use your version of this file under
+  * the terms of any one of the MPL, the GPL or the LGPL.
+  *
+  * ***** END LICENSE BLOCK ***** */
+
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
+ #include "xptiprivate.h"
+
+ /* Prototype specifies unmangled function name and disables unused warning */
+ static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+ __asm__("PrepareAndDispatch") __attribute__((used));
+
+ static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+ {
+     const PRUint8 PARAM_BUFFER_COUNT = 16;
+     const PRUint8 NUM_ARG_REGS = 6-1;        // -1 for "this" pointer
+
+     nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+     nsXPTCMiniVariant* dispatchParams = NULL;
+     const nsXPTMethodInfo* info;
+     PRUint8 paramCount;
+     PRUint8 i;
+     nsresult result = NS_ERROR_FAILURE;
+
+     NS_ASSERTION(self,"no self");
+
+     self->mEntry->GetMethodInfo(PRUint16(methodIndex), &info);
+
+     paramCount = info->GetParamCount();
+
+     // setup variant array pointer
+     if(paramCount > PARAM_BUFFER_COUNT)
+         dispatchParams = new nsXPTCMiniVariant[paramCount];
+     else
+         dispatchParams = paramBuffer;
+     NS_ASSERTION(dispatchParams,"no place for params");
+
+     // args[0] to args[NUM_ARG_REGS] hold floating point register values
+     PRUint64* ap = args + NUM_ARG_REGS;
+     for(i = 0; i < paramCount; i++, ap++)
+     {
+         const nsXPTParamInfo& param = info->GetParam(i);
+         const nsXPTType& type = param.GetType();
+         nsXPTCMiniVariant* dp = &dispatchParams[i];
+
+         if(param.IsOut() || !type.IsArithmetic())
+         {
+             dp->val.p = (void*) *ap;
+             continue;
+         }
+         // else
+         switch(type)
+         {
+         case nsXPTType::T_I8     : dp->val.i8  = (PRInt8)    *ap;    break;
+         case nsXPTType::T_I16    : dp->val.i16 = (PRInt16)   *ap;    break;
+         case nsXPTType::T_I32    : dp->val.i32 = (PRInt32)   *ap;    break;
+         case nsXPTType::T_I64    : dp->val.i64 = (PRInt64)   *ap;    break;
+         case nsXPTType::T_U8     : dp->val.u8  = (PRUint8)   *ap;    break;
+         case nsXPTType::T_U16    : dp->val.u16 = (PRUint16)  *ap;    break;
+         case nsXPTType::T_U32    : dp->val.u32 = (PRUint32)  *ap;    break;
+         case nsXPTType::T_U64    : dp->val.u64 = (PRUint64)  *ap;    break;
+         case nsXPTType::T_FLOAT  :
+             if(i < NUM_ARG_REGS)
+             {
+                 // floats passed via registers are stored as doubles
+                 // in the first NUM_ARG_REGS entries in args
+                 dp->val.u64 = (PRUint64) args[i];
+                 dp->val.f = (float) dp->val.d;    // convert double to float
+             }
+             else
+                 dp->val.u32 = (PRUint32) *ap;
+             break;
+         case nsXPTType::T_DOUBLE :
+             // doubles passed via registers are also stored
+             // in the first NUM_ARG_REGS entries in args
+             dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+             break;
+         case nsXPTType::T_BOOL   : dp->val.b   = (PRBool)    *ap;    break;
+         case nsXPTType::T_CHAR   : dp->val.c   = (char)      *ap;    break;
+         case nsXPTType::T_WCHAR  : dp->val.wc  = (PRUnichar) *ap;    break;
+         default:
+             NS_ASSERTION(0, "bad type");
+             break;
+         }
+     }
+
+     result = self->mOuter->CallMethod((PRUint16)methodIndex, info, dispatchParams);
+
+     if(dispatchParams != paramBuffer)
+         delete [] dispatchParams;
+
+     return result;
+ }
+
+ /*
+  * SharedStub()
+  *  Collects arguments and calls PrepareAndDispatch.  The "methodIndex" is
+  *  passed to this function via $1 to preserve the argument registers.
+  */
+ __asm__(
+     "#### SharedStub ####\n"
+ ".text\n\t"
+     ".align 5\n\t"
+     ".ent SharedStub\n"
+ "SharedStub:\n\t"
+     ".frame $30,96,$26,0\n\t"
+     ".mask 0x4000000,-96\n\t"
+     "ldgp $29,0($27)\n"
+ "$SharedStub..ng:\n\t"
+     "subq $30,96,$30\n\t"
+     "stq $26,0($30)\n\t"
+     ".prologue 1\n\t"
+
+     /*
+      * Store arguments passed via registers to the stack.
+      * Floating point registers are stored as doubles and converted
+      * to floats in PrepareAndDispatch if necessary.
+      */
+     "stt $f17,16($30)\n\t"   /* floating point registers */
+     "stt $f18,24($30)\n\t"
+     "stt $f19,32($30)\n\t"
+     "stt $f20,40($30)\n\t"
+     "stt $f21,48($30)\n\t"
+     "stq $17,56($30)\n\t"    /* integer registers */
+     "stq $18,64($30)\n\t"
+     "stq $19,72($30)\n\t"
+     "stq $20,80($30)\n\t"
+     "stq $21,88($30)\n\t"
+
+     /*
+      * Call PrepareAndDispatch function.
+      */
+     "bis $1,$1,$17\n\t"      /* pass "methodIndex" */
+     "addq $30,16,$18\n\t"    /* pass "args" */
+     "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+     "ldq $26,0($30)\n\t"
+     "addq $30,96,$30\n\t"
+     "ret $31,($26),1\n\t"
+     ".end SharedStub"
+     );
+
+ /*
+  * nsresult nsXPTCStubBase::Stub##n()
+  *  Sets register $1 to "methodIndex" and jumps to SharedStub.
+  */
+ #define STUB_MANGLED_ENTRY(n, symbol) \
+     "#### Stub"#n" ####"      "\n\t" \
+     ".text"                   "\n\t" \
+     ".align 5"                "\n\t" \
+     ".globl " symbol          "\n\t" \
+     ".ent " symbol            "\n"   \
+ symbol ":"                    "\n\t" \
+     ".frame $30,0,$26,0"      "\n\t" \
+     "ldgp $29,0($27)"         "\n"   \
+ "$" symbol "..ng:"            "\n\t" \
+     ".prologue 1"             "\n\t" \
+     "lda $1,"#n               "\n\t" \
+     "br $31,$SharedStub..ng"  "\n\t" \
+     ".end " symbol
+
+ #define STUB_ENTRY(n) \
+ __asm__( \
+     "#if "#n" < 10"                                              "\n\t" \
+         STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase5Stub"#n"Ev")  "\n\t" \
+     "#elseif "#n" < 100"                                         "\n\t" \
+         STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase6Stub"#n"Ev")  "\n\t" \
+     "#elseif "#n" < 1000"                                        "\n\t" \
+         STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase7Stub"#n"Ev")  "\n\t" \
+     "#else"                                                      "\n\t" \
+     " ############ not supported#################"               "\n\t" \
+     "#endif" \
+     );
+
+
+ #define SENTINEL_ENTRY(n) \
+ nsresult nsXPTCStubBase::Sentinel##n() \
+ { \
+     NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+     return NS_ERROR_NOT_IMPLEMENTED; \
+ }
+
+ #include "xptcstubsdef.inc"
diff -c -r mozilla.old/xpcom/string/src/nsSubstring.cpp mozilla/xpcom/string/src/nsSubstring.cpp
*** mozilla.old/xpcom/string/src/nsSubstring.cpp   Mon Aug 25 03:15:35 2008
--- mozilla/xpcom/string/src/nsSubstring.cpp   Thu Nov 23 18:21:02 2017
***************
*** 340,343 ****
  #include "prlog.h"
  #include "nsXPCOMStrings.h"
 
! PR_STATIC_ASSERT(sizeof(nsStringContainer_base) == sizeof(nsSubstring));
--- 340,343 ----
  #include "prlog.h"
  #include "nsXPCOMStrings.h"
 
! /*PR_STATIC_ASSERT(sizeof(nsStringContainer_base) == sizeof(nsSubstring));*/


:Onyx2: :O2: :Octane:

User avatar
ClassicHasClass
Donor
Donor
Posts: 2109
Joined: Wed Jul 25, 2012 7:12 pm
Location: Sunny So Cal
Contact:

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby ClassicHasClass » Thu Nov 23, 2017 9:36 pm

Damn. I'm going to have to give this a try on my 164LX.

If someone can give me the binary, I can host it on the Gopher server.
smit happens.

:Fuel: bigred, 900MHz R16K, 4GB RAM, V12 DCD, 6.5.30
:Indy: indy, 150MHz R4400SC, 256MB RAM, XL24, 6.5.10
:Indigo2IMP: purplehaze, 175MHz R10000, Solid IMPACT
probably posted from Image bruce, Quad 2.5GHz PowerPC 970MP, 16GB RAM, Mac OS X 10.4.11
plus IBM POWER6 p520 * Apple Network Server 500 * RDI PrecisionBook * BeBox * Solbourne S3000 * Commodore 128 * many more...

User avatar
bifo
Posts: 76
Joined: Sat Aug 20, 2016 8:02 pm

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby bifo » Fri Nov 24, 2017 4:05 pm

Great work!

User avatar
ClassicHasClass
Donor
Donor
Posts: 2109
Joined: Wed Jul 25, 2012 7:12 pm
Location: Sunny So Cal
Contact:

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby ClassicHasClass » Fri Nov 24, 2017 4:17 pm

Grabbed it, but not at home yet, so haven't gotten a chance to try. Since I'm visiting my folks and I'm annoyed with them, I'll seed it at maximum for the next hour or so. :P
smit happens.

:Fuel: bigred, 900MHz R16K, 4GB RAM, V12 DCD, 6.5.30
:Indy: indy, 150MHz R4400SC, 256MB RAM, XL24, 6.5.10
:Indigo2IMP: purplehaze, 175MHz R10000, Solid IMPACT
probably posted from Image bruce, Quad 2.5GHz PowerPC 970MP, 16GB RAM, Mac OS X 10.4.11
plus IBM POWER6 p520 * Apple Network Server 500 * RDI PrecisionBook * BeBox * Solbourne S3000 * Commodore 128 * many more...

User avatar
Raion-Fox
Donor
Donor
Posts: 1438
Joined: Thu Jan 30, 2014 5:01 pm
Location: near King George, Virginia
Contact:

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby Raion-Fox » Fri Nov 24, 2017 8:03 pm

Fantastic work.
:O3x02L: R16000 700MHz 8GB RAM kanna
:Octane: R12000 300MHz SI 896MB RAM yuuka
:Octane2: R12000A 400MHz V6 2.5GB RAM
:Indy: (Acclaim) R4600 133MHz XL Graphics 32MB RAM
:Indy: (Challenge S) R4600 133MHz (MIPS III Build Server)

I am probably posting from yangxiaolong, HP Z230 with Xeon E3-1230v3, 16GB RAM, GeForce 750ti, and running NetBSD and Windows 8.1 Embedded.
Owner and operator of http://irix.pw

mazzinia
Posts: 106
Joined: Thu Nov 18, 2010 1:14 pm
Location: Italy

Re: Firefox 3.0.19 Tru64 finally finished !

Unread postby mazzinia » Sat Nov 25, 2017 5:22 am

Grabbed, too
:O2: :Fuel: HP c8000 Digital PWS 500au (x2) , IBM 9402-P03


Return to “HP/DEC/Compaq”

Who is online

Users browsing this forum: No registered users and 2 guests