Print this page
10816 ctf_dwarf_convert_type() relies on un-initialized id
10817 ctfconvert -i option is mis-handled
10818 Improve ctfconvert error messages
10819 ctfconvert should handle empty dies
10820 ctfconvert -i never converts
10821 bad free in ctf_dwarf_init_die
10815 shouldn't build gcore.c as part of kmdb
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

*** 24,65 **** if [[ -z "$TMPDIR" ]]; then TMPDIR="/tmp" fi ctf_arg0=$(basename $0) ctf_root=$(cd $(dirname $0) && echo $PWD) ctf_tests= ! ctf_compiler="gcc" ctf_convert="ctfconvert" ctf_merge="ctfmerge" ctf_debugflags="-gdwarf-2 " ctf_mach32="-m32" ctf_mach64="-m64" - ctf_32cflags="$ctf_mach32 $ctf_debugflags" - ctf_64cflags="$ctf_mach64 $ctf_debugflags" ctf_temp="$TMPDIR/ctftest.$$.o" ctf_makefile="Makefile.ctftest" ctf_nerrs=0 usage() { typeset msg="$*" [[ -z "$msg" ]] || echo "$msg" >&2 cat <<USAGE >&2 ! Usage: $ctf_arg0 [-c compiler] [-g flags] [-m ctfmerge] [-t ctfconvert] Runs the CTF test suite ! -c compiler Use the specified compiler, defaults to 'gcc' ! on path. -g flags Use flags to generate debug info. Defaults to "-gdwarf-2". -m ctfmerge Use the specified ctfmerge, defaults to ! 'ctfmerge' on path. -t ctfconvert Use the specified ctfconvert, defaults to ! 'ctfconvert' on path. USAGE exit 2 } --- 24,67 ---- if [[ -z "$TMPDIR" ]]; then TMPDIR="/tmp" fi + ctf_arg0=$(basename $0) ctf_root=$(cd $(dirname $0) && echo $PWD) ctf_tests= ! ctf_cc="gcc" ! ctf_cxx="g++" ! ctf_as="as" ctf_convert="ctfconvert" ctf_merge="ctfmerge" ctf_debugflags="-gdwarf-2 " ctf_mach32="-m32" ctf_mach64="-m64" ctf_temp="$TMPDIR/ctftest.$$.o" ctf_makefile="Makefile.ctftest" ctf_nerrs=0 usage() { typeset msg="$*" [[ -z "$msg" ]] || echo "$msg" >&2 cat <<USAGE >&2 ! Usage: $ctf_arg0 [-a as] [-c cc] [-C CC] [-g flags] [-m ctfmerge] [-t ctfconvert] Runs the CTF test suite ! -a assembler Use the specified assembler, defaults to 'as' ! -c compiler Use the specified C compiler, defaults to 'gcc' ! -C compiler Use the specified C++ compiler, defaults to 'g++' -g flags Use flags to generate debug info. Defaults to "-gdwarf-2". -m ctfmerge Use the specified ctfmerge, defaults to ! 'ctfmerge' -t ctfconvert Use the specified ctfconvert, defaults to ! 'ctfconvert' USAGE exit 2 }
*** 78,103 **** echo "$ctf_arg0: $msg" >&2 rm -f "$ctf_tmp32" "$ctf_temp64" exit 1 } - check_env() - { - if which "$1" 2>/dev/null >/dev/null; then - return - fi - - [[ -f "$1" ]] || fatal "failed to find tool $1" - } - announce() { cat << EOF Beginning CTF tests with the following settings: ! COMPILER: $(which $ctf_compiler) ! CTFCONVERT: $(which $ctf_convert) ! CTFMERGE: $(which $ctf_merge) 32-bit CFLAGS: $ctf_32cflags 64-bit CFLAGS: $ctf_64cflags EOF } --- 80,98 ---- echo "$ctf_arg0: $msg" >&2 rm -f "$ctf_tmp32" "$ctf_temp64" exit 1 } announce() { cat << EOF Beginning CTF tests with the following settings: ! cc: $(which $ctf_cc) ! CC: $(which $ctf_cxx) ! as: $(which $ctf_as) ! ctfconvert: $(which $ctf_convert) ! ctfmerge: $(which $ctf_merge) 32-bit CFLAGS: $ctf_32cflags 64-bit CFLAGS: $ctf_64cflags EOF }
*** 104,114 **** run_one() { typeset source=$1 checker=$2 flags=$3 ! if ! "$ctf_compiler" $flags -o "$ctf_temp" -c "$source"; then test_fail "failed to compile $source with flags: $flags" return fi if ! "$ctf_convert" "$ctf_temp"; then --- 99,109 ---- run_one() { typeset source=$1 checker=$2 flags=$3 ! if ! "$ctf_cc" $flags -o "$ctf_temp" -c "$source"; then test_fail "failed to compile $source with flags: $flags" return fi if ! "$ctf_convert" "$ctf_temp"; then
*** 144,154 **** fatal "failed to make temporary directory '$outdir'" fi if ! make -C $dir -f Makefile.ctftest \ BUILDDIR="$outdir" \ ! CC="$ctf_compiler" \ CFLAGS32="$ctf_mach32" \ CFLAGS64="$ctf_mach64" \ DEBUGFLAGS="$ctf_debugflags" \ CTFCONVERT="$ctf_convert" \ CTFMERGE="$ctf_merge" \ --- 139,149 ---- fatal "failed to make temporary directory '$outdir'" fi if ! make -C $dir -f Makefile.ctftest \ BUILDDIR="$outdir" \ ! CC="$ctf_cc" \ CFLAGS32="$ctf_mach32" \ CFLAGS64="$ctf_mach64" \ DEBUGFLAGS="$ctf_debugflags" \ CTFCONVERT="$ctf_convert" \ CTFMERGE="$ctf_merge" \
*** 208,223 **** "$ctf_root/$check-64" "$ctf_64cflags" else test_fail "missing checker for $t" fi done } ! while getopts ":c:g:m:t:" c $@; do case "$c" in c) ! ctf_compiler=$OPTARG ;; g) ctf_debugflags=$OPTARG ;; m) --- 203,244 ---- "$ctf_root/$check-64" "$ctf_64cflags" else test_fail "missing checker for $t" fi done + + outdir="$TMPDIR/ctftest.$$" + + for f in $(find "$ctf_root" -maxdepth 1 -type f -name 'ctftest-*'); do + if ! mkdir $outdir; then + fatal "failed to make temporary directory '$outdir'" + fi + + echo "Running $f in $outdir" + + (cd $outdir && $f) + + if [[ $? -ne 0 ]]; then + test_fail "$f failed" + else + echo "TEST PASSED: $f" + fi + + rm -rf $outdir + done } ! while getopts ":a:C:c:g:m:t:" c $@; do case "$c" in + a) + ctf_as=$OPTARG + ;; + C) + ctf_cxx=$OPTARG + ;; c) ! ctf_cc=$OPTARG ;; g) ctf_debugflags=$OPTARG ;; m)
*** 236,248 **** done ctf_32cflags="$ctf_mach32 $ctf_debugflags" ctf_64cflags="$ctf_mach64 $ctf_debugflags" ! check_env "$ctf_compiler" ! check_env "$ctf_convert" ! check_env "$ctf_merge" announce run_tests if [[ $ctf_nerrs -ne 0 ]]; then --- 257,268 ---- done ctf_32cflags="$ctf_mach32 $ctf_debugflags" ctf_64cflags="$ctf_mach64 $ctf_debugflags" ! export ctf_as ctf_cc ctf_cxx ctf_debugflags ctf_merge ctf_convert ! announce run_tests if [[ $ctf_nerrs -ne 0 ]]; then
*** 249,257 **** --- 269,278 ---- if [[ $ctf_nerrs -eq 1 ]]; then printf "\n%s: %u test failed\n" "$ctf_arg0" "$ctf_nerrs" else printf "\n%s: %u tests failed\n" "$ctf_arg0" "$ctf_nerrs" fi + exit 1 else printf "\n%s: All tests passed successfully\n" "$ctf_arg0" exit 0 fi