Bug 634793: update NSPR to NSPR_4_9_5_BETA1 and add the TestPRIntN.cpp

test to verify PRInt{N} matches int{N}_t.  r=ehsan,jlebar.
This commit is contained in:
Wan-Teh Chang 2012-12-14 09:01:25 -08:00
parent fea5ff8037
commit 1b9c76ac12
11 changed files with 80 additions and 198 deletions

View File

@ -1 +1 @@
NSPR_4_9_4_RTM
NSPR_4_9_5_BETA1

View File

@ -1,179 +0,0 @@
#! /bin/sh
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# ------------------------------------------------------------------
# repackage.sh -- Repackage NSPR from /s/b/c to mozilla.org format
#
# syntax: repackage.sh
#
# Description:
# repackage.sh creates NSPR binary distributions for mozilla.org from
# the internal binary distributions in /share/builds/components/nspr20.
# There are reasons why we can't just push the internal binary distributions
# to mozilla.org. External developers prefer to use the common archive
# file format for their platforms, rather than the jar files we use internally.
#
# On Unix, we create a tar.gz file. On Windows, we create a zip file.
# For example: NSPR 4.1.1, these would be nspr-4.1.1.tar.gz and nspr-4.1.1.zip.
#
# When unpacked, nspr-4.1.1.tar.gz or nspr-4.1.1.zip should expand to a
# nspr-4.1.1 directory that contains three subdirectories: include, lib,
# and bin. The header files, with the correct line endings for the
# platform, are in nspr-4.1.1/include. The libraries are in nspr-4.1.1/lib.
# The executable programs are in nspr-4.1.1/bin.
#
# Note! Files written with Gnu tar are not readable by some non-Gnu
# versions. Sun, in particular.
#
#
#
#
# ------------------------------------------------------------------
FROMTOP=/share/builds/components/nspr20/v4.9.4
TOTOP=./v4.9.4
NSPRDIR=nspr-4.9.4
SOURCETAG=NSPR_4_9_4_RTM
#
# enumerate Unix object directories on /s/b/c
UNIX_OBJDIRS="
HP-UXB.11.11_64_DBG.OBJ
HP-UXB.11.11_64_OPT.OBJ
HP-UXB.11.11_DBG.OBJ
HP-UXB.11.11_OPT.OBJ
HP-UXB.11.23_ia64_32_DBG.OBJ
HP-UXB.11.23_ia64_32_OPT.OBJ
HP-UXB.11.23_ia64_64_DBG.OBJ
HP-UXB.11.23_ia64_64_OPT.OBJ
Linux2.4_x86_glibc_PTH_DBG.OBJ
Linux2.4_x86_glibc_PTH_OPT.OBJ
Linux2.6_x86_64_glibc_PTH_DBG.OBJ
Linux2.6_x86_64_glibc_PTH_OPT.OBJ
Linux2.6_x86_glibc_PTH_DBG.OBJ
Linux2.6_x86_glibc_PTH_OPT.OBJ
SunOS5.9_64_DBG.OBJ
SunOS5.9_64_OPT.OBJ
SunOS5.9_DBG.OBJ
SunOS5.9_OPT.OBJ
"
#
# enumerate Windows object directories on /s/b/c
WIN_OBJDIRS="
WIN954.0_DBG.OBJ
WIN954.0_DBG.OBJD
WIN954.0_OPT.OBJ
WINNT5.0_DBG.OBJ
WINNT5.0_DBG.OBJD
WINNT5.0_OPT.OBJ
"
#
# Create the destination directory.
#
echo "removing directory $TOTOP"
rm -rf $TOTOP
echo "creating directory $TOTOP"
mkdir -p $TOTOP
#
# Generate the tar.gz files for Unix platforms.
#
for OBJDIR in $UNIX_OBJDIRS; do
echo "removing directory $NSPRDIR"
rm -rf $NSPRDIR
echo "creating directory $NSPRDIR"
mkdir $NSPRDIR
echo "creating directory $NSPRDIR/include"
mkdir $NSPRDIR/include
echo "copying $FROMTOP/$OBJDIR/include"
cp -r $FROMTOP/$OBJDIR/include $NSPRDIR
echo "copying $FROMTOP/$OBJDIR/lib"
cp -r $FROMTOP/$OBJDIR/lib $NSPRDIR
echo "copying $FROMTOP/$OBJDIR/bin"
cp -r $FROMTOP/$OBJDIR/bin $NSPRDIR
echo "creating directory $TOTOP/$OBJDIR"
mkdir $TOTOP/$OBJDIR
echo "creating $TOTOP/$OBJDIR/$NSPRDIR.tar"
tar cvf $TOTOP/$OBJDIR/$NSPRDIR.tar $NSPRDIR
echo "gzipping $TOTOP/$OBJDIR/$NSPRDIR.tar"
gzip $TOTOP/$OBJDIR/$NSPRDIR.tar
done
#
# Generate the zip files for Windows platforms.
#
for OBJDIR in $WIN_OBJDIRS; do
echo "removing directory $NSPRDIR"
rm -rf $NSPRDIR
echo "creating directory $NSPRDIR"
mkdir $NSPRDIR
echo "creating directory $NSPRDIR/include"
mkdir $NSPRDIR/include
echo "creating directory $NSPRDIR/include/private"
mkdir $NSPRDIR/include/private
echo "creating directory $NSPRDIR/include/obsolete"
mkdir $NSPRDIR/include/obsolete
# copy headers and adjust unix line-end to Windows line-end
# Note: Watch out for the "sed" command line.
# when editing the command, take care to preserve the "^M" as the literal
# cntl-M character! in vi, use "cntl-v cntl-m" to enter it!
#
headers=`ls $FROMTOP/$OBJDIR/include/*.h`
for header in $headers; do
sed -e 's/$/ /g' $header > $NSPRDIR/include/`basename $header`
done
headers=`ls $FROMTOP/$OBJDIR/include/obsolete/*.h`
for header in $headers; do
sed -e 's/$/ /g' $header > $NSPRDIR/include/obsolete/`basename $header`
done
headers=`ls $FROMTOP/$OBJDIR/include/private/*.h`
for header in $headers; do
sed -e 's/$/ /g' $header > $NSPRDIR/include/private/`basename $header`
done
echo "copying $FROMTOP/$OBJDIR/lib"
cp -r $FROMTOP/$OBJDIR/lib $NSPRDIR
echo "copying $FROMTOP/$OBJDIR/bin"
cp -r $FROMTOP/$OBJDIR/bin $NSPRDIR
echo "creating directory $TOTOP/$OBJDIR"
mkdir -p $TOTOP/$OBJDIR
echo "creating $TOTOP/$OBJDIR/$NSPRDIR.zip"
zip -r $TOTOP/$OBJDIR/$NSPRDIR.zip $NSPRDIR
done
#
# package the source from CVS
#
echo "Packaging source"
echo "removing directory $NSPRDIR"
rm -rf $NSPRDIR
echo "creating directory $NSPRDIR"
mkdir $NSPRDIR
myWD=`pwd`
cd $NSPRDIR
echo "Pulling source from CVS with tag $SOURCETAG"
cvs co -r $SOURCETAG mozilla/nsprpub
cd $myWD
mkdir $TOTOP/src
echo "Creating source tar file: $TOTOP/src/$NSPRDIR.tar"
tar cvf $TOTOP/src/$NSPRDIR.tar $NSPRDIR
echo "gzip $TOTOP/src/$NSPRDIR.tar"
gzip $TOTOP/src/$NSPRDIR.tar
#
# Remove the working directory.
#
echo "removing directory $NSPRDIR"
rm -rf $NSPRDIR
# --- end repackage.sh ---------------------------------------------

View File

@ -10,3 +10,4 @@
*/
#error "Do not include this header file."

4
nsprpub/configure vendored
View File

@ -736,7 +736,7 @@ test "$host_alias" != "$target_alias" &&
MOD_MAJOR_VERSION=4
MOD_MINOR_VERSION=9
MOD_PATCH_VERSION=4
MOD_PATCH_VERSION=5
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
USE_PTHREADS=
@ -6582,7 +6582,7 @@ s%\[%\\&%g
s%\]%\\&%g
s%\$%$$%g
EOF
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' ' | tr '\015' ' '` # Manually modified for MKS support.
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
rm -f conftest.defs

View File

@ -15,7 +15,7 @@ dnl = Defaults
dnl ========================================================
MOD_MAJOR_VERSION=4
MOD_MINOR_VERSION=9
MOD_PATCH_VERSION=4
MOD_PATCH_VERSION=5
NSPR_MODNAME=nspr20
_HAVE_PTHREADS=
USE_PTHREADS=

View File

@ -31,11 +31,11 @@ PR_BEGIN_EXTERN_C
** The format of the version string is
** "<major version>.<minor version>[.<patch level>] [<Beta>]"
*/
#define PR_VERSION "4.9.4"
#define PR_VERSION "4.9.5 Beta"
#define PR_VMAJOR 4
#define PR_VMINOR 9
#define PR_VPATCH 4
#define PR_BETA PR_FALSE
#define PR_VPATCH 5
#define PR_BETA PR_TRUE
/*
** PRVersionCheck

View File

@ -35,7 +35,7 @@ NSPR_API(PRUint64) LL_MaxUint(void);
#if defined(HAVE_LONG_LONG)
/* Keep this in sync with prtypes.h. */
#if PR_BYTES_PER_LONG == 8 && !defined(__APPLE__)
#if PR_BYTES_PER_LONG == 8 && !defined(PR_ALTERNATE_INT64_TYPEDEF)
#define LL_MAXINT 9223372036854775807L
#define LL_MININT (-LL_MAXINT - 1L)
#define LL_ZERO 0L

View File

@ -205,6 +205,36 @@
PR_BEGIN_EXTERN_C
/*
** Starting in NSPR 4.9.5, NSPR's exact-width integer types should match
** the exact-width integer types defined in <stdint.h>. This allows sloppy
** code to use PRInt{N} and int{N}_t interchangeably.
**
** The 8-bit and 16-bit integer types can only be defined using char and
** short. All platforms define the 32-bit integer types using int. So only
** the 64-bit integer types could be defined differently.
**
** NSPR's original strategy was to use the "shortest" 64-bit integer type:
** if long is 64-bit, then prefer it over long long. This strategy is also
** used by Linux/glibc, FreeBSD, and NetBSD.
**
** Other platforms use a different strategy: simply define the 64-bit
** integer types using long long. We define the PR_ALTERNATE_INT64_TYPEDEF
** macro on these platforms. Note that PR_ALTERNATE_INT64_TYPEDEF is for
** internal use by NSPR headers only. Do not define or test this macro in
** your code.
**
** NOTE: NSPR can't use <stdint.h> because C99 requires C++ code to define
** __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS to make all the macros
** defined in <stdint.h> available. This strange requirement is gone in
** C11. When most platforms ignore this C99 requirement, NSPR will be able
** to use <stdint.h>. A patch to do that is in NSPR bug 634793.
*/
#if defined(__APPLE__) || defined(__ANDROID__) || defined(__OpenBSD__)
#define PR_ALTERNATE_INT64_TYPEDEF
#endif
/************************************************************************
** TYPES: PRUint8
** PRInt8
@ -331,12 +361,7 @@ typedef long PRInt32;
************************************************************************/
#ifdef HAVE_LONG_LONG
/* Keep this in sync with prlong.h. */
/*
* On 64-bit Mac OS X, uint64 needs to be defined as unsigned long long to
* match uint64_t, otherwise our uint64 typedef conflicts with the uint64
* typedef in cssmconfig.h, which CoreServices.h includes indirectly.
*/
#if PR_BYTES_PER_LONG == 8 && !defined(__APPLE__)
#if PR_BYTES_PER_LONG == 8 && !defined(PR_ALTERNATE_INT64_TYPEDEF)
typedef long PRInt64;
typedef unsigned long PRUint64;
#define PR_INT64(x) x ## L

View File

@ -20,10 +20,10 @@
#include <stdlib.h>
/*
* This release (4.9.4) is backward compatible with the
* This release (4.9.5) is backward compatible with the
* 4.0.x, 4.1.x, 4.2.x, 4.3.x, 4.4.x, 4.5.x, 4.6.x, 4.7.x,
* 4.8.x, 4.9, 4.9.1, 4.9.2, and 4.9.3 releases. It, of course,
* is compatible with itself.
* 4.8.x, 4.9, 4.9.1, 4.9.2, 4.9.3, and 4.9.4 releases.
* It, of course, is compatible with itself.
*/
static char *compatible_version[] = {
"4.0", "4.0.1", "4.1", "4.1.1", "4.1.2", "4.1.3",
@ -35,7 +35,7 @@ static char *compatible_version[] = {
"4.7.6",
"4.8", "4.8.1", "4.8.2", "4.8.3", "4.8.4", "4.8.5",
"4.8.6", "4.8.7", "4.8.8", "4.8.9",
"4.9", "4.9.1", "4.9.2", "4.9.3", PR_VERSION
"4.9", "4.9.1", "4.9.2", "4.9.3", "4.9.4", PR_VERSION
};
/*
@ -50,7 +50,7 @@ static char *incompatible_version[] = {
"3.0", "3.0.1",
"3.1", "3.1.1", "3.1.2", "3.1.3",
"3.5", "3.5.1",
"4.9.5",
"4.9.6",
"4.10", "4.10.1",
"10.0", "11.1", "12.14.20"
};

View File

@ -35,6 +35,7 @@ CPPSRCS = \
nsIFileEnumerator.cpp \
TestCallTemplates.cpp \
TestINIParser.cpp \
TestPRIntN.cpp \
TestRacingServiceManager.cpp \
TestRegistrationOrder.cpp \
TestThreadPoolListener.cpp \

View File

@ -0,0 +1,34 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/StandardInteger.h"
#include "prtypes.h"
// This test is NOT intended to be run. It's a test to make sure
// PRInt{N} matches int{N}_t. If they don't match, we should get a
// compiler warning or error in main().
static void
ClearNSPRIntTypes(PRInt8 *a, PRInt16 *b, PRInt32 *c, PRInt64 *d)
{
*a = 0; *b = 0; *c = 0; *d = 0;
}
static void
ClearStdIntTypes(int8_t *w, int16_t *x, int32_t *y, int64_t *z)
{
*w = 0; *x = 0; *y = 0; *z = 0;
}
int
main()
{
PRInt8 a; PRInt16 b; PRInt32 c; PRInt64 d;
int8_t w; int16_t x; int32_t y; int64_t z;
ClearNSPRIntTypes(&w, &x, &y, &z);
ClearStdIntTypes(&a, &b, &c, &d);
return 0;
}