Merged the changes from NSPRPUB_PRE_4_2_CLIENT_BRANCH onto the trunk. Most
of these changes are for OS/2. Modified Files: configure.in build/cygwin-wrapper config/rules.mk lib/ds/Makefile.in lib/ds/plds.def lib/libc/src/Makefile.in lib/libc/src/plc.def pr/include/md/_os2.h pr/src/Makefile.in pr/src/nspr.def pr/src/linking/prlink.c pr/src/md/os2/Makefile.in pr/src/md/os2/objs.mk pr/src/md/os2/os2cv.c pr/src/md/os2/os2misc.c pr/src/md/os2/os2poll.c pr/src/md/os2/os2sock.c pr/src/md/os2/os2thred.c pr/tests/Makefile.in pr/tests/attach.c
This commit is contained in:
Родитель
a0e469fae9
Коммит
2a090e9975
|
@ -7,11 +7,17 @@ shift
|
|||
if test -z "$prog"; then
|
||||
exit 0
|
||||
fi
|
||||
mountpoint=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
|
||||
if test -z "$mountpoint"; then
|
||||
print "Cannot determine cygwin mount points. Exiting"
|
||||
exit 1
|
||||
fi
|
||||
mountpoint=`echo $mountpoint | sed 's|/$||'`
|
||||
if test "$prog" = "-up"; then
|
||||
prog=$1
|
||||
shift
|
||||
args=`echo $* | sed -e 's|-I\(.\):|-I/cygdrive/\1|g;'`
|
||||
args=`echo $* | sed -e "s|-I\([a-zA-Z]\):/|-I${mountpoint}/\1/|g;"`
|
||||
else
|
||||
args=`echo $* | sed -e 's|/cygdrive/\(.\)/|\1:/|g;'`
|
||||
args=`echo $* | sed -e "s|${mountpoint}/\([a-zA-Z]\)/|\1:/|g;"`
|
||||
fi
|
||||
exec $prog $args
|
||||
|
|
|
@ -311,8 +311,9 @@ endif
|
|||
$(RANLIB) $@
|
||||
|
||||
ifeq ($(OS_TARGET), OS2)
|
||||
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
|
||||
$(IMPLIB) $@ $(SHARED_LIBRARY).def
|
||||
$(IMPORT_LIBRARY): $(MAPFILE)
|
||||
rm -f $@
|
||||
$(IMPLIB) $@ $(MAPFILE)
|
||||
endif
|
||||
|
||||
$(SHARED_LIBRARY): $(OBJS) $(MAPFILE)
|
||||
|
@ -330,16 +331,9 @@ else # AIX 4.1
|
|||
ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT)
|
||||
$(LINK_DLL) -MAP $(DLLBASE) $(DLL_LIBS) $(EXTRA_LIBS) $(OBJS)
|
||||
else
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
# append ( >> ) doesn't seem to be working under OS/2 gmake. Run through OS/2 shell instead.
|
||||
@cmd /C "echo LIBRARY $(notdir $(basename $(SHARED_LIBRARY))) INITINSTANCE TERMINSTANCE >$@.def"
|
||||
@cmd /C "echo PROTMODE >>$@.def"
|
||||
@cmd /C "echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@.def"
|
||||
@cmd /C "echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >>$@.def"
|
||||
@cmd /C "echo EXPORTS >>$@.def"
|
||||
@cmd /C "$(FILTER) $(LIBRARY) | grep -v _DLL_InitTerm >>$@.def"
|
||||
$(LINK_DLL) $(DLLBASE) $(OBJS) $(OS_LIBS) $(EXTRA_LIBS) $@.def
|
||||
else # OS2
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(LINK_DLL) $(DLLBASE) $(OBJS) $(OS_LIBS) $(EXTRA_LIBS) $(MAPFILE)
|
||||
else # !os2 vacpp
|
||||
ifeq ($(OS_TARGET), OpenVMS)
|
||||
@if test ! -f $(VMS_SYMVEC_FILE); then \
|
||||
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
|
||||
|
@ -349,7 +343,7 @@ ifeq ($(OS_TARGET), OpenVMS)
|
|||
fi
|
||||
endif # OpenVMS
|
||||
$(MKSHLIB) $(OBJS) $(EXTRA_LIBS)
|
||||
endif # OS2
|
||||
endif # OS2 vacpp
|
||||
endif # WINNT
|
||||
endif # AIX 4.1
|
||||
ifdef ENABLE_STRIP
|
||||
|
@ -378,6 +372,15 @@ ifeq ($(OS_ARCH),SunOS)
|
|||
grep -v ';-' $< | \
|
||||
sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@
|
||||
endif
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@
|
||||
echo PROTMODE >> $@
|
||||
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@
|
||||
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
|
||||
echo EXPORTS >> $@
|
||||
grep -v ';+' $< | grep -v ';-' | \
|
||||
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
|
||||
endif
|
||||
|
||||
#
|
||||
# Translate source filenames to absolute paths. This is required for
|
||||
|
|
|
@ -342,7 +342,7 @@ if test -n "$MOZ_DEBUG"; then
|
|||
beos*)
|
||||
DEFINES="$DEFINES -DDEBUG_${USER}"
|
||||
;;
|
||||
msvc*|mks*|cygwin*|mingw*)
|
||||
msvc*|mks*|cygwin*|mingw*|os2*)
|
||||
DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
|
||||
;;
|
||||
*)
|
||||
|
@ -451,7 +451,7 @@ fi
|
|||
if test "$GXX" = "yes"; then
|
||||
GNU_CXX=1
|
||||
fi
|
||||
if test "`echo | $AS -V 2>&1 | grep -c GNU`" != "0"; then
|
||||
if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
|
||||
GNU_AS=1
|
||||
fi
|
||||
rm -f a.out
|
||||
|
@ -1771,10 +1771,8 @@ mips-sony-newsos*)
|
|||
AC_DEFINE(XP_PC)
|
||||
AC_DEFINE(BSD_SELECT)
|
||||
AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
|
||||
OBJ_SUFFIX=obj
|
||||
LIB_SUFFIX=lib
|
||||
DLL_SUFFIX=dll
|
||||
ASM_SUFFIX=asm
|
||||
RC=rc.exe
|
||||
PR_MD_ARCH_DIR=os2
|
||||
PROG_SUFFIX=.exe
|
||||
|
@ -1783,40 +1781,43 @@ mips-sony-newsos*)
|
|||
RESOLVE_LINK_SYMBOLS=1
|
||||
|
||||
# EMX/GCC build
|
||||
if test "$GNU_CC"; then
|
||||
if test -n "$GNU_CC"; then
|
||||
AC_DEFINE(XP_OS2_EMX)
|
||||
AC_DEFINE(OS2)
|
||||
AR=emxomfar
|
||||
AR_FLAGS='-p256 r $@'
|
||||
CFLAGS="-Zmtd -Zomf"
|
||||
HOST_CFLAGS="$CFLAGS"
|
||||
CXXFLAGS="-Zmtd -Zomf"
|
||||
OS_LIBS="-lsocket -lemxio"
|
||||
LD='$(CC)'
|
||||
IMPLIB='emximp -o'
|
||||
FILTER='emxexp'
|
||||
OS_DLLFLAGS='$(DSO_LDOPTS) -o $@'
|
||||
CFLAGS="$CFLAGS -Wall -Zmtd -Zomf"
|
||||
CXXFLAGS="$CFLAGS -Wall -Zmtd -Zomf"
|
||||
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
||||
DSO_CFLAGS=
|
||||
DSO_LDOPTS='-Zomf -Zdll -Zmtd'
|
||||
_OPTIMIZE_FLAGS="-O2 -s"
|
||||
_DEBUG_FLAGS=-g
|
||||
if test -n "$MOZ_DEBUG"; then
|
||||
DLLFLAGS='-g'
|
||||
EXEFLAGS='-g $(OMF_FLAG) -Zmtd -L$(DIST)/lib -o $@'
|
||||
DSO_LDOPTS='-g -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
|
||||
else
|
||||
DLLFLAGS=
|
||||
EXEFLAGS='-Zmtd -o $@'
|
||||
DSO_LDOPTS='-Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
|
||||
_DEBUG_FLAGS="-g -fno-inline"
|
||||
if test -n "$MOZ_OPTIMIZE"; then
|
||||
DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
|
||||
fi
|
||||
OS_LIBS="-lsocket -lemxio"
|
||||
IMPLIB='emximp -o'
|
||||
FILTER='emxexp -o'
|
||||
|
||||
if test -z "$EMXOMFLD_LINKER"; then
|
||||
# using LINK386.EXE
|
||||
DSO_LDOPTS="$DSO_LDOPTS -Zlinker /NOO"
|
||||
fi
|
||||
|
||||
# GCC for OS/2 currently predefines these, but we don't want them
|
||||
DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
|
||||
|
||||
# Visual Age C++ build
|
||||
if test "$VACPP" = "yes"; then
|
||||
elif test "$VACPP" = "yes"; then
|
||||
AC_DEFINE(XP_OS2_VACPP)
|
||||
AC_DEFINE(OS2,4)
|
||||
AC_DEFINE(TCPV40HDRS)
|
||||
AC_DEFINE(_X86_)
|
||||
OBJ_SUFFIX=obj
|
||||
AS=alp
|
||||
ASFLAGS='-Mb'
|
||||
ASM_SUFFIX=asm
|
||||
AR=-ilib
|
||||
AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
|
||||
CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
|
||||
|
@ -1829,7 +1830,7 @@ mips-sony-newsos*)
|
|||
MKSHLIB='$(LD) $(DSO_LDOPTS)'
|
||||
IMPLIB='implib -nologo -noignorecase'
|
||||
FILTER='cppfilt -q -B -P'
|
||||
_OPTIMIZE_FLAGS='/O+ /Gl+ /Gx+ /qtune=pentium /qarch=pentium'
|
||||
_OPTIMIZE_FLAGS='/O+ /Gl+ /qtune=pentium /qarch=pentium'
|
||||
_DEBUG_FLAGS='/Ti+ '
|
||||
LDFLAGS='/NOL /M /L'
|
||||
DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /L /NOL'
|
||||
|
|
|
@ -95,6 +95,12 @@ MKSHLIB += -M $(MAPFILE)
|
|||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
|
||||
GARBAGE += $(MAPFILE)
|
||||
MKSHLIB += $(MAPFILE)
|
||||
endif
|
||||
|
||||
EXTRA_LIBS = $(LIBNSPR)
|
||||
|
||||
# On NCR and SCOOS, we can't link with extra libraries when
|
||||
|
|
|
@ -1,6 +1,51 @@
|
|||
# nm -n -C -p libplds4.so | awk '/[^ ]* T PL_/ {print $3}'
|
||||
NSPR_4.0 {
|
||||
global:
|
||||
;+#
|
||||
;+# 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 the Netscape Portable Runtime (NSPR).
|
||||
;+#
|
||||
;+# The Initial Developer of the Original Code is Netscape
|
||||
;+# Communications Corporation. Portions created by Netscape are
|
||||
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
|
||||
;+# Rights Reserved.
|
||||
;+#
|
||||
;+# Contributor(s):
|
||||
;+#
|
||||
;+# Alternatively, the contents of this file may be used under the
|
||||
;+# terms of the GNU General Public License Version 2 or later (the
|
||||
;+# "GPL"), in which case the provisions of the GPL are applicable
|
||||
;+# instead of those above. If you wish to allow use of your
|
||||
;+# version of this file only under the terms of the GPL and not to
|
||||
;+# allow others to use your version of this file under the MPL,
|
||||
;+# indicate your decision by deleting the provisions above and
|
||||
;+# replace them with the notice and other provisions required by
|
||||
;+# the GPL. If you do not delete the provisions above, a recipient
|
||||
;+# may use your version of this file under either the MPL or the
|
||||
;+# GPL.
|
||||
;+#
|
||||
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
|
||||
;+# 1. For all unix platforms, the string ";-" means "remove this line"
|
||||
;+# 2. For all unix platforms, the string " DATA " will be removed from any
|
||||
;+# line on which it occurs.
|
||||
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
|
||||
;+# On AIX, lines containing ";+" will be removed.
|
||||
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
|
||||
;+# 5. For all unix platforms, after the above processing has taken place,
|
||||
;+# all characters after the first ";" on the line will be removed.
|
||||
;+# And for AIX, the first ";" will also be removed.
|
||||
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
|
||||
;+# directives are hidden behind ";", ";+", and ";-"
|
||||
;+NSPR_4.0 {
|
||||
;+ global:
|
||||
LIBRARY plds4 ;-
|
||||
EXPORTS ;-
|
||||
PL_ArenaAllocate;
|
||||
PL_ArenaFinish;
|
||||
PL_ArenaGrow;
|
||||
|
@ -23,11 +68,11 @@ PL_HashTableRemove;
|
|||
PL_InitArenaPool;
|
||||
PL_NewHashTable;
|
||||
libVersionPoint;
|
||||
local: *;
|
||||
};
|
||||
|
||||
NSPR_4.1 {
|
||||
global:
|
||||
;+ local: *;
|
||||
;+};
|
||||
;+
|
||||
;+NSPR_4.1 {
|
||||
;+ global:
|
||||
PL_HashTableLookupConst;
|
||||
PL_HashTableRawLookupConst;
|
||||
} NSPR_4.0;
|
||||
;+} NSPR_4.0;
|
||||
|
|
|
@ -105,6 +105,12 @@ MKSHLIB += -M $(MAPFILE)
|
|||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
|
||||
GARBAGE += $(MAPFILE)
|
||||
MKSHLIB += $(MAPFILE)
|
||||
endif
|
||||
|
||||
EXTRA_LIBS = $(LIBNSPR)
|
||||
|
||||
# On NCR and SCOOS, we can't link with extra libraries when
|
||||
|
|
|
@ -1,6 +1,51 @@
|
|||
# nm -n -C -p libplc4.so | awk '/[^ ]* T PL_/ {print $3}'
|
||||
NSPR_4.0 {
|
||||
global:
|
||||
;+#
|
||||
;+# 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 the Netscape Portable Runtime (NSPR).
|
||||
;+#
|
||||
;+# The Initial Developer of the Original Code is Netscape
|
||||
;+# Communications Corporation. Portions created by Netscape are
|
||||
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
|
||||
;+# Rights Reserved.
|
||||
;+#
|
||||
;+# Contributor(s):
|
||||
;+#
|
||||
;+# Alternatively, the contents of this file may be used under the
|
||||
;+# terms of the GNU General Public License Version 2 or later (the
|
||||
;+# "GPL"), in which case the provisions of the GPL are applicable
|
||||
;+# instead of those above. If you wish to allow use of your
|
||||
;+# version of this file only under the terms of the GPL and not to
|
||||
;+# allow others to use your version of this file under the MPL,
|
||||
;+# indicate your decision by deleting the provisions above and
|
||||
;+# replace them with the notice and other provisions required by
|
||||
;+# the GPL. If you do not delete the provisions above, a recipient
|
||||
;+# may use your version of this file under either the MPL or the
|
||||
;+# GPL.
|
||||
;+#
|
||||
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
|
||||
;+# 1. For all unix platforms, the string ";-" means "remove this line"
|
||||
;+# 2. For all unix platforms, the string " DATA " will be removed from any
|
||||
;+# line on which it occurs.
|
||||
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
|
||||
;+# On AIX, lines containing ";+" will be removed.
|
||||
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
|
||||
;+# 5. For all unix platforms, after the above processing has taken place,
|
||||
;+# all characters after the first ";" on the line will be removed.
|
||||
;+# And for AIX, the first ";" will also be removed.
|
||||
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
|
||||
;+# directives are hidden behind ";", ";+", and ";-"
|
||||
;+NSPR_4.0 {
|
||||
;+ global:
|
||||
LIBRARY plc4 ;-
|
||||
EXPORTS ;-
|
||||
PL_Base64Decode;
|
||||
PL_Base64Encode;
|
||||
PL_CreateOptState;
|
||||
|
@ -40,10 +85,10 @@ PL_strrchr;
|
|||
PL_strrstr;
|
||||
PL_strstr;
|
||||
libVersionPoint;
|
||||
local: *;
|
||||
};
|
||||
|
||||
NSPR_4.2 {
|
||||
global:
|
||||
;+ local: *;
|
||||
;+};
|
||||
;+
|
||||
;+NSPR_4.2 {
|
||||
;+ global:
|
||||
PL_strtok_r;
|
||||
} NSPR_4.0;
|
||||
;+} NSPR_4.0;
|
||||
|
|
|
@ -47,7 +47,10 @@
|
|||
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef XP_OS2_VACPP
|
||||
/* TODO RAMSEMs need to be written for GCC/EMX */
|
||||
#define USE_RAMSEM
|
||||
#endif
|
||||
|
||||
#ifdef USE_RAMSEM
|
||||
#pragma pack(4)
|
||||
|
@ -75,15 +78,14 @@ APIRET _Optlink SemReleasex86(PRAMSEM, ULONG);
|
|||
#ifdef XP_OS2_EMX
|
||||
/*
|
||||
* EMX-specific tweaks:
|
||||
* o Use stricmp instead of strcmpi.
|
||||
* o Use errno rather than sock_errno()
|
||||
* o Use close rather than soclose
|
||||
* o Ignore sock_init calls.
|
||||
*/
|
||||
#define strcmpi stricmp
|
||||
#define sock_errno() errno
|
||||
#define soclose close
|
||||
#define sock_init()
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -308,11 +310,13 @@ extern PRInt32 _MD_SELECT(int nfds, fd_set *readfds, fd_set *writefds,
|
|||
#define _MD_FSYNC _PR_MD_FSYNC
|
||||
#define _MD_SET_FD_INHERITABLE (_PR_MD_SET_FD_INHERITABLE)
|
||||
|
||||
#ifdef _PR_HAVE_ATOMIC_OPS
|
||||
#define _MD_INIT_ATOMIC()
|
||||
#define _MD_ATOMIC_INCREMENT _PR_MD_ATOMIC_INCREMENT
|
||||
#define _MD_ATOMIC_ADD _PR_MD_ATOMIC_ADD
|
||||
#define _MD_ATOMIC_DECREMENT _PR_MD_ATOMIC_DECREMENT
|
||||
#define _MD_ATOMIC_SET _PR_MD_ATOMIC_SET
|
||||
#endif
|
||||
|
||||
#define _MD_INIT_IO (_PR_MD_INIT_IO)
|
||||
#define _MD_PR_POLL (_PR_MD_PR_POLL)
|
||||
|
|
|
@ -141,6 +141,12 @@ endif
|
|||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
|
||||
GARBAGE += $(MAPFILE)
|
||||
MKSHLIB += $(MAPFILE)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OSF1)
|
||||
ifeq ($(USE_PTHREADS), 1)
|
||||
OS_LIBS = -lpthread -lrt
|
||||
|
|
|
@ -580,9 +580,11 @@ pr_UnlockedFindLibrary(const char *name)
|
|||
while (lm) {
|
||||
const char* cp = strrchr(lm->name, PR_DIRECTORY_SEPARATOR);
|
||||
cp = cp ? cp + 1 : lm->name;
|
||||
#ifdef XP_PC
|
||||
#ifdef WIN32
|
||||
/* Windows DLL names are case insensitive... */
|
||||
if (strcmpi(np, cp) == 0)
|
||||
#elif defined(XP_OS2)
|
||||
if (stricmp(np, cp) == 0)
|
||||
#else
|
||||
if (strcmp(np, cp) == 0)
|
||||
#endif
|
||||
|
|
|
@ -62,6 +62,10 @@ ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
|||
ASFILES = os2vacpp.asm
|
||||
endif
|
||||
|
||||
ifeq ($(MOZ_OS2_TOOLS),EMX)
|
||||
ASFILES = os2emx.s
|
||||
endif
|
||||
|
||||
TARGETS = $(OBJS)
|
||||
|
||||
INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
|
||||
|
|
|
@ -52,6 +52,10 @@ ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
|||
ASFILES = os2vacpp.asm
|
||||
endif
|
||||
|
||||
OBJS += $(addprefix md/os2/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
|
||||
$(addprefix md/os2/$(OBJDIR)/,$(ASFILES:.asm=.$(OBJ_SUFFIX)))
|
||||
ifeq ($(MOZ_OS2_TOOLS),EMX)
|
||||
ASFILES = os2emx.s
|
||||
endif
|
||||
|
||||
OBJS += $(addprefix md/os2/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
|
||||
$(addprefix md/os2/$(OBJDIR)/,$(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)))
|
||||
|
||||
|
|
|
@ -51,6 +51,10 @@
|
|||
#ifdef USE_RAMSEM
|
||||
ULONG _Far16 _Pascal Dos16GetInfoSeg(PSEL pselGlobal, PSEL pselLocal);
|
||||
|
||||
#ifdef XP_OS2_EMX
|
||||
typedef unsigned short BOOL16;
|
||||
#endif
|
||||
|
||||
typedef struct _LINFOSEG
|
||||
{
|
||||
USHORT pidCurrent;
|
||||
|
|
|
@ -518,43 +518,3 @@ unsigned long _System _DLL_InitTerm( unsigned long mod_handle, unsigned long fla
|
|||
return rc;
|
||||
}
|
||||
|
||||
#ifndef XP_OS2_VACPP
|
||||
|
||||
PRInt32 _PR_MD_ATOMIC_SET(PRInt32 *intp, PRInt32 val)
|
||||
{
|
||||
PRInt32 result;
|
||||
asm volatile ("lock ; xchg %0, %1"
|
||||
: "=r"(result), "=m"(intp)
|
||||
: "0"(val), "m"(intp));
|
||||
return result;
|
||||
}
|
||||
|
||||
PRInt32 _PR_MD_ATOMIC_ADD(PRInt32 *intp, PRInt32 val)
|
||||
{
|
||||
PRInt32 result;
|
||||
asm volatile ("lock ; xadd %0, %1"
|
||||
: "=r"(result), "=m"(intp)
|
||||
: "0"(val), "m"(intp));
|
||||
return result + val;
|
||||
}
|
||||
|
||||
PRInt32 _PR_MD_ATOMIC_INCREMENT(PRInt32 *val)
|
||||
{
|
||||
PRInt32 result;
|
||||
asm volatile ("lock ; xadd %0, %1"
|
||||
: "=r"(result), "=m"(*val)
|
||||
: "0"(1), "m"(*val));
|
||||
return result + 1;
|
||||
}
|
||||
|
||||
PRInt32 _PR_MD_ATOMIC_DECREMENT(PRInt32 *val)
|
||||
{
|
||||
PRInt32 result;
|
||||
asm volatile ("lock ; xadd %0, %1"
|
||||
: "=r"(result), "=m"(*val)
|
||||
: "0"(1), "m"(*val));
|
||||
return result - 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -265,7 +265,7 @@ retry:
|
|||
ready = _MD_SELECT(socks, rd, wt, ex, msecs);
|
||||
#endif
|
||||
|
||||
if (ready == -1 && errno == SOCEINTR)
|
||||
if (ready == -1 && errno == EINTR)
|
||||
{
|
||||
if (timeout == PR_INTERVAL_NO_TIMEOUT)
|
||||
goto retry;
|
||||
|
@ -357,8 +357,8 @@ retry:
|
|||
if (getsockopt(bottom->secret->md.osfd, SOL_SOCKET,
|
||||
SO_TYPE, (char *) &optval, &optlen) == -1)
|
||||
{
|
||||
PR_ASSERT(sock_errno() == SOCENOTSOCK);
|
||||
if (sock_errno() == SOCENOTSOCK)
|
||||
PR_ASSERT(sock_errno() == ENOTSOCK);
|
||||
if (sock_errno() == ENOTSOCK)
|
||||
{
|
||||
pd->out_flags = PR_POLL_NVAL;
|
||||
ready++;
|
||||
|
|
|
@ -151,7 +151,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
|
|||
else
|
||||
rv = _MD_SELECT(socks, 0, 1, 0, lTimeout);
|
||||
#endif
|
||||
if (rv == -1 && (syserror = sock_errno()) != SOCEINTR) {
|
||||
if (rv == -1 && (syserror = sock_errno()) != EINTR) {
|
||||
_PR_MD_MAP_SELECT_ERROR(syserror);
|
||||
break;
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
|
|||
/*
|
||||
* we don't consider EINTR a real error
|
||||
*/
|
||||
if (rv == -1 && (syserror = sock_errno()) != SOCEINTR) {
|
||||
if (rv == -1 && (syserror = sock_errno()) != EINTR) {
|
||||
_PR_MD_MAP_SELECT_ERROR(syserror);
|
||||
break;
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
|
|||
* We loop again if _MD_SELECT timed out or got interrupted
|
||||
* by a signal, and the timeout deadline has not passed yet.
|
||||
*/
|
||||
if (rv == 0 || (rv == -1 && syserror == SOCEINTR)) {
|
||||
if (rv == 0 || (rv == -1 && syserror == EINTR)) {
|
||||
/*
|
||||
* If _MD_SELECT timed out, we know how much time
|
||||
* we spent in blocking, so we can avoid a
|
||||
|
@ -252,7 +252,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
|
|||
remaining = timeout - elapsed;
|
||||
}
|
||||
}
|
||||
} while (rv == 0 || (rv == -1 && syserror == SOCEINTR));
|
||||
} while (rv == 0 || (rv == -1 && syserror == EINTR));
|
||||
break;
|
||||
}
|
||||
return(rv);
|
||||
|
@ -269,14 +269,14 @@ _MD_Accept(PRFileDesc *fd, PRNetAddr *addr,
|
|||
while ((rv = accept(osfd, (struct sockaddr*) addr, (int*)addrlen)) == -1)
|
||||
{
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK) || (err == SOCECONNABORTED))
|
||||
if ((err == EWOULDBLOCK) || (err == ECONNABORTED))
|
||||
{
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
}
|
||||
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
|
||||
goto done;
|
||||
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
|
@ -314,7 +314,7 @@ retry:
|
|||
{
|
||||
err = sock_errno();
|
||||
|
||||
if (err == SOCEINTR) {
|
||||
if (err == EINTR) {
|
||||
if (_PR_PENDING_INTERRUPT(me)) {
|
||||
me->flags &= ~_PR_INTERRUPT;
|
||||
PR_SetError( PR_PENDING_INTERRUPT_ERROR, 0);
|
||||
|
@ -323,7 +323,7 @@ retry:
|
|||
goto retry;
|
||||
}
|
||||
|
||||
if (!fd->secret->nonblocking && (err == SOCEINPROGRESS))
|
||||
if (!fd->secret->nonblocking && (err == EINPROGRESS))
|
||||
{
|
||||
/*
|
||||
* socket_io_wait() may return -1 or 1.
|
||||
|
@ -391,13 +391,13 @@ _PR_MD_RECV(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
|
|||
while ((rv = recv(osfd,buf,amount,flags)) == -1)
|
||||
{
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK)) {
|
||||
if ((err == EWOULDBLOCK)) {
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
}
|
||||
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
|
||||
goto done;
|
||||
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
|
@ -421,13 +421,13 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
|
|||
while ((rv = send(osfd,buf,amount,flags)) == -1)
|
||||
{
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK)) {
|
||||
if ((err == EWOULDBLOCK)) {
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
}
|
||||
if ((rv = socket_io_wait(osfd, WRITE_FD, timeout)) < 0)
|
||||
goto done;
|
||||
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
|
@ -465,7 +465,7 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
|
|||
(struct sockaddr *) addr, addrlen)) == -1)
|
||||
{
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK))
|
||||
if ((err == EWOULDBLOCK))
|
||||
{
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
|
@ -498,13 +498,13 @@ _PR_MD_RECVFROM(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
|
|||
(struct sockaddr *) addr, (int *)addrlen)) == -1))
|
||||
{
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK)) {
|
||||
if ((err == EWOULDBLOCK)) {
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
}
|
||||
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
|
||||
goto done;
|
||||
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
|
@ -541,7 +541,7 @@ _PR_MD_WRITEV(PRFileDesc *fd, const PRIOVec *iov, PRInt32 iov_size,
|
|||
|
||||
while ((rv = writev(osfd, (const struct iovec*)iov, iov_size)) == -1) {
|
||||
err = sock_errno();
|
||||
if ((err == SOCEWOULDBLOCK)) {
|
||||
if ((err == EWOULDBLOCK)) {
|
||||
if (fd->secret->nonblocking) {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -93,14 +93,6 @@ PRStatus
|
|||
_PR_MD_INIT_THREAD(PRThread *thread)
|
||||
{
|
||||
APIRET rv;
|
||||
#ifdef XP_OS2_EMX
|
||||
/* disable SIGPIPE */
|
||||
struct sigaction sa;
|
||||
sa.sa_handler = SIG_IGN;
|
||||
sa.sa_flags = 0;
|
||||
sigemptyset( &sa.sa_mask);
|
||||
sigaction( SIGPIPE, &sa, NULL);
|
||||
#endif
|
||||
|
||||
if (thread->flags & (_PR_PRIMORDIAL | _PR_ATTACHED)) {
|
||||
_pr_SetThreadMDHandle(thread);
|
||||
|
|
|
@ -1,6 +1,52 @@
|
|||
# nm -n -C -p libnspr4.so | awk '/[^ ]* T PR_/ {print $3}'
|
||||
NSPR_4.0 {
|
||||
global:
|
||||
;+#
|
||||
;+# 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 the Netscape Portable Runtime (NSPR).
|
||||
;+#
|
||||
;+# The Initial Developer of the Original Code is Netscape
|
||||
;+# Communications Corporation. Portions created by Netscape are
|
||||
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
|
||||
;+# Rights Reserved.
|
||||
;+#
|
||||
;+# Contributor(s):
|
||||
;+#
|
||||
;+# Alternatively, the contents of this file may be used under the
|
||||
;+# terms of the GNU General Public License Version 2 or later (the
|
||||
;+# "GPL"), in which case the provisions of the GPL are applicable
|
||||
;+# instead of those above. If you wish to allow use of your
|
||||
;+# version of this file only under the terms of the GPL and not to
|
||||
;+# allow others to use your version of this file under the MPL,
|
||||
;+# indicate your decision by deleting the provisions above and
|
||||
;+# replace them with the notice and other provisions required by
|
||||
;+# the GPL. If you do not delete the provisions above, a recipient
|
||||
;+# may use your version of this file under either the MPL or the
|
||||
;+# GPL.
|
||||
;+#
|
||||
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
|
||||
;+# 1. For all unix platforms, the string ";-" means "remove this line"
|
||||
;+# 2. For all unix platforms, the string " DATA " will be removed from any
|
||||
;+# line on which it occurs.
|
||||
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
|
||||
;+# On AIX, lines containing ";+" will be removed.
|
||||
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
|
||||
;+# 5. For all unix platforms, after the above processing has taken place,
|
||||
;+# all characters after the first ";" on the line will be removed.
|
||||
;+# And for AIX, the first ";" will also be removed.
|
||||
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
|
||||
;+# directives are hidden behind ";", ";+", and ";-"
|
||||
;+#
|
||||
;+NSPR_4.0 {
|
||||
;+ global:
|
||||
LIBRARY nspr4 ;-
|
||||
EXPORTS ;-
|
||||
LL_MaxInt;
|
||||
LL_MinInt;
|
||||
LL_Zero;
|
||||
|
@ -365,19 +411,19 @@ NSPR_4.0 {
|
|||
PRP_NewNakedCondVar;
|
||||
PRP_TryLock;
|
||||
libVersionPoint;
|
||||
local: *;
|
||||
};
|
||||
|
||||
NSPRprivate {
|
||||
global:
|
||||
;+ local: *;
|
||||
;+};
|
||||
;+
|
||||
;+NSPRprivate {
|
||||
;+ global:
|
||||
GetExecutionEnvironment;
|
||||
PT_FPrintStats;
|
||||
SetExecutionEnvironment;
|
||||
local: *;
|
||||
};
|
||||
|
||||
NSPR_4.1 {
|
||||
global:
|
||||
;+ local: *;
|
||||
;+};
|
||||
;+
|
||||
;+NSPR_4.1 {
|
||||
;+ global:
|
||||
PR_ConnectContinue;
|
||||
PR_CreateIOLayer;
|
||||
PR_EmulateAcceptRead;
|
||||
|
@ -388,16 +434,16 @@ NSPR_4.1 {
|
|||
PR_GetNumberOfProcessors;
|
||||
PR_ImportPipe;
|
||||
PR_SetEnv;
|
||||
} NSPR_4.0;
|
||||
|
||||
NSPR_4.3 {
|
||||
global:
|
||||
;+} NSPR_4.0;
|
||||
;+
|
||||
;+NSPR_4.3 {
|
||||
;+ global:
|
||||
LL_MaxUint;
|
||||
PR_CallOnceWithArg;
|
||||
PR_GetLibraryFilePathname;
|
||||
} NSPR_4.1;
|
||||
|
||||
NSPR_4.4 {
|
||||
global:
|
||||
;+} NSPR_4.1;
|
||||
;+
|
||||
;+NSPR_4.4 {
|
||||
;+ global:
|
||||
PR_GetPathSeparator;
|
||||
} NSPR_4.3;
|
||||
;+} NSPR_4.3;
|
||||
|
|
|
@ -233,9 +233,8 @@ ifeq ($(OS_ARCH),OS2)
|
|||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
|
||||
else
|
||||
ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
|
||||
LDOPTS = -Zlinker /PM:VIO
|
||||
endif
|
||||
EXTRA_LIBS = $(OS_LIBS)
|
||||
LDOPTS = -Zmtd -Zomf -Zlinker /PM:VIO -Zlinker /ST:0x30000
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -487,7 +486,7 @@ $(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
|
|||
ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT)
|
||||
link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -out:$@
|
||||
else
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(LD) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(OS_LIBS) $(EXTRA_LIBS)
|
||||
else
|
||||
$(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -o $@
|
||||
|
|
|
@ -329,16 +329,22 @@ int main(int argc, char **argv)
|
|||
|
||||
#elif defined(OS2)
|
||||
|
||||
# ifdef __EMX__
|
||||
threadID = (TID) _beginthread((void *)threadStartFunc, NULL,
|
||||
32768, NULL);
|
||||
# else
|
||||
threadID = (TID) _beginthread((void(* _Optlink)(void*))threadStartFunc, NULL,
|
||||
32768, NULL);
|
||||
# endif
|
||||
if (threadID == -1) {
|
||||
fprintf(stderr, "thread creation failed: error code %d\n", errno);
|
||||
failed_already=1;
|
||||
goto exit_now;
|
||||
}
|
||||
rv = DosWaitThread(&threadID, DCWW_WAIT);
|
||||
if (debug_mode)PR_ASSERT(rv == NO_ERROR);
|
||||
else if (rv == NO_ERROR) {
|
||||
if (debug_mode) {
|
||||
PR_ASSERT(rv == NO_ERROR);
|
||||
} else if (rv != NO_ERROR) {
|
||||
failed_already=1;
|
||||
goto exit_now;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче