Files
palemoon27/testing/taskcluster/scripts/builder/hazard-analysis.sh
T
roytam1 5851545f5e import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1193227 - Exclude tests from Mac B2G / Mulet packages. r=spohl (bc6219e278)
- Bug 1224000 - Install defaults/permissions file under browser/ instead of under browser/chrome/browser. r=mshal,r=MattN (9502588a4f)
- Bug 1244999 - Move icon-related DEFINES to moz.build in browser/app. r=mshal (b50bd16362)
- bits of Bug 1077148 part 4 (a0ee9d1e43)
- Bug 1264162 - Move branding installation to branding-common.mozbuild; r=glandium (96153e2196)
- align configures a little (69326315ba)
- Bug 1082983 - Enable the Windows console in ASAN builds; r=glandium (3839846239)
- Bug 1266875 - Remove custom install rules; r=chmanchester (91f673ee9f)
- remove allow warnings (3891acce36)
- Bug 1266129 - Upgrade ffvpx to 3.0.2. . r=ajones (fcbb57fdc5)
- Bug 1268138 - Call StringSplitString directly for internal use. r=till (1edf155d43)
- Bug 1268034 - Part 1: Reset constructor slot of GlobalObject to undefined when it fails to initialize constructor. r=till (1eaebb838b)
- Bug 1268034 - Part 2: Call setConstructor and initBuiltinConstructor after defining properties in all init function. r=till (fcf42ec3b7)
- bug 1139012 - telemetry for MLS vs win8 geolocation response. r=cpetrson (26745928e7)
- Bug 1253159 - Remove locationUpdatePending and restore request timeout. r=jdm (e37e1d992d)
- Bug 1250709 - Upgrade browser to gcc 4.9.3, r=glandium (2dc1262978)
- Bug 1250709 - Clobber builds, r=terrence (e56a27abcc)
- CSE some multiply-repeated ToFloatRegister(...) and such in some of the JIT backends into local variables for readability. No bug, r=bbouvier (7ee653c3c8)
- Bug 1266180 - Port unboxed object getprop stub to CacheIR. r=efaust (104e6aabae)
- Bug 1266695 - Port typed object getprop stub to CacheIR. r=efaust (3b627b5bd6)
- Bug 1263811 - Do not attach optimized IC for arguments element access if any arguments element has been overridden. r=jandem (7ffb405dd1)
- Bug 1266434 - Make Debugger::findScripts delazify scipts in a separate phase now this can GC r=jimb a=abuillings (b08013336e)
- Bug 1204170 - Fix icns file for b2g graphene builds. r=spohl (e43e2e9d4f)
- Bug 1201672 - Package more files for B2G desktop on OS X. r=spohl (e6cb92bd0d)
- Bug 1268863 - Follow-up to appease rooting hazard analysis (rs=sfink) (4f6aaafe27)
- Bug 1266649: TraceLogger - Handle failing to add to pointermap gracefully, r=bbouvier (12c006b2ed)
- Bug 1268740 - Change AllocateArrayBuffer to receive byteLength with |count * unit| format. r=lth (5f435125bc)
- Bug 1267755 - Print objects' class names in JS::ubi::dumpPaths; r=jimb (bace99e63d)
- Bug 1267737 - Request edge names from JS::ubi::RootList before calling `init`; r=jimb (1b858d7a0c)
- Bug 1266639 - Don't separately heap-allocate PLDHashTables within XPCMaps. r=mrbkap. (17bc8c82cc)
- Bug 1263205 - BaldrMonkey: add temporary Wasm.experimentalVersion (r=bbouvier) (f71b47386e)
- Bug 1219098 - Odin: Share JSFunction objects to make less garbage (r=bbouvier) (f602609a78)
2024-08-23 09:31:58 +08:00

124 lines
3.1 KiB
Bash

#!/bin/bash -ex
[ -n "$WORKSPACE" ]
[ -n "$MOZ_OBJDIR" ]
[ -n "$GECKO_DIR" ]
HAZARD_SHELL_OBJDIR=$WORKSPACE/obj-haz-shell
JS_SRCDIR=$GECKO_DIR/js/src
ANALYSIS_SRCDIR=$JS_SRCDIR/devtools/rootAnalysis
export CC="$TOOLTOOL_DIR/gcc/bin/gcc"
export CXX="$TOOLTOOL_DIR/gcc/bin/g++"
PYTHON=python2.7
if ! which $PYTHON; then
PYTHON=python
fi
function check_commit_msg () {
hg --cwd "$GECKO_DIR" log -r. --template '{desc}\n' | grep -q -- "$1"
}
if check_commit_msg "--dep"; then
HAZ_DEP=1
fi
function build_js_shell () {
( cd $JS_SRCDIR; autoconf-2.13 )
if [[ -z "$HAZ_DEP" ]]; then
[ -d $HAZARD_SHELL_OBJDIR ] && rm -rf $HAZARD_SHELL_OBJDIR
fi
mkdir -p $HAZARD_SHELL_OBJDIR || true
cd $HAZARD_SHELL_OBJDIR
$JS_SRCDIR/configure --enable-optimize --disable-debug --enable-ctypes --enable-nspr-build --without-intl-api --with-ccache
make -j4
}
function configure_analysis () {
local analysis_dir
analysis_dir="$1"
if [[ -z "$HAZ_DEP" ]]; then
[ -d "$analysis_dir" ] && rm -rf "$analysis_dir"
fi
mkdir -p "$analysis_dir" || true
(
cd "$analysis_dir"
cat > defaults.py <<EOF
js = "$HAZARD_SHELL_OBJDIR/dist/bin/js"
analysis_scriptdir = "$ANALYSIS_SRCDIR"
objdir = "$MOZ_OBJDIR"
source = "$GECKO_DIR"
sixgill = "$TOOLTOOL_DIR/sixgill/usr/libexec/sixgill"
sixgill_bin = "$TOOLTOOL_DIR/sixgill/usr/bin"
EOF
)
}
function run_analysis () {
local analysis_dir
analysis_dir="$1"
local build_type
build_type="$2"
if [[ -z "$HAZ_DEP" ]]; then
[ -d $MOZ_OBJDIR ] && rm -rf $MOZ_OBJDIR
fi
(
cd "$analysis_dir"
$PYTHON "$ANALYSIS_SRCDIR/analyze.py" --buildcommand="$GECKO_DIR/testing/mozharness/scripts/spidermonkey/build.${build_type}"
)
}
function grab_artifacts () {
local analysis_dir
analysis_dir="$1"
local artifacts
artifacts="$2"
(
cd "$analysis_dir"
ls -lah
# Do not error out if no files found
shopt -s nullglob
set +e
for f in *.txt *.lst; do
gzip -9 -c "$f" > "${artifacts}/$f.gz"
done
# Check whether the user requested .xdb file upload in the top commit comment
if check_commit_msg "--upload-xdbs"; then
HAZ_UPLOAD_XDBS=1
fi
if [ -n "$HAZ_UPLOAD_XDBS" ]; then
for f in *.xdb; do
bzip2 -c "$f" > "${artifacts}/$f.bz2"
done
fi
)
}
function check_hazards () {
(
set +e
NUM_HAZARDS=$(grep -c 'Function.*has unrooted.*live across GC call' "$1"/rootingHazards.txt)
NUM_UNSAFE=$(grep -c '^Function.*takes unsafe address of unrooted' "$1"/refs.txt)
NUM_UNNECESSARY=$(grep -c '^Function.* has unnecessary root' "$1"/unnecessary.txt)
echo "TinderboxPrint: $NUM_HAZARDS rooting hazards"
echo "TinderboxPrint: $NUM_UNSAFE unsafe references to unrooted GC pointers"
echo "TinderboxPrint: $NUM_UNSAFE unnecessary roots"
if [ $NUM_HAZARDS -gt 0 ]; then
echo "TEST-UNEXPECTED-FAIL $NUM_HAZARDS hazards detected" >&2
exit 1
fi
)
}