head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC6:1.1.1.1.2.3 expat-2-8-2:1.1.1.2 netbsd-11-0-RC5:1.1.1.1.2.2 netbsd-11:1.1.1.1.0.2 expat-2-8-1:1.1.1.1 expat:1.1.1; locks; strict; comment @# @; 1.1 date 2026.06.13.16.41.48; author jdc; state Exp; branches 1.1.1.1; next ; commitid OvLcw9veAeJ0QEJG; 1.1.1.1 date 2026.06.13.16.41.48; author jdc; state Exp; branches 1.1.1.1.2.1; next 1.1.1.2; commitid OvLcw9veAeJ0QEJG; 1.1.1.2 date 2026.06.26.08.32.42; author jdc; state Exp; branches; next ; commitid 7WndiZKtdregIhLG; 1.1.1.1.2.1 date 2026.06.13.16.41.48; author martin; state dead; branches; next 1.1.1.1.2.2; commitid CEh2BY99NRqLYZJG; 1.1.1.1.2.2 date 2026.06.16.08.23.19; author martin; state Exp; branches; next 1.1.1.1.2.3; commitid CEh2BY99NRqLYZJG; 1.1.1.1.2.3 date 2026.06.27.16.32.23; author martin; state Exp; branches; next ; commitid fu6p5tMN9x7FksLG; desc @@ 1.1 log @Initial revision @ text @#! /usr/bin/env bash # __ __ _ # ___\ \/ /_ __ __ _| |_ # / _ \\ /| '_ \ / _` | __| # | __// \| |_) | (_| | |_ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # # Copyright (c) 2016-2025 Sebastian Pipping # Copyright (c) 2019 Philippe Antoine # Copyright (c) 2019-2025 Hanno Böck # Copyright (c) 2024 Alexander Bluhm # Licensed under the MIT license: # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to permit # persons to whom the Software is furnished to do so, subject to the # following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN # NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE # USE OR OTHER DEALINGS IN THE SOFTWARE. set -e set -o nounset ANNOUNCE() { local open='\e[1m' local close='\e[0m' echo -e -n "${open}" >&2 echo -n "# $*" >&2 echo -e "${close}" >&2 } WARNING() { local open='\e[1;33m' local close='\e[0m' echo -e -n "${open}" >&2 echo -n "WARNING: $*" >&2 echo -e "${close}" >&2 } RUN() { ANNOUNCE "$@@" env "$@@" } populate_environment() { : ${MAKE:=make} case "${QA_COMPILER}" in clang) : ${CC:=clang} : ${CXX:=clang++} : ${LD:=clang++} ;; gcc) : ${CC:=gcc} : ${CXX:=g++} : ${LD:=ld} ;; esac : ${BASE_COMPILE_FLAGS:="-pipe -Wall -Wextra -pedantic -Wno-overlength-strings"} : ${BASE_LINK_FLAGS:=} if [[ ${QA_COMPILER} = clang ]]; then case "${QA_SANITIZER}" in address) # https://clang.llvm.org/docs/AddressSanitizer.html BASE_COMPILE_FLAGS+=" -g -fsanitize=address -fno-omit-frame-pointer -fno-common" BASE_LINK_FLAGS+=" -g -fsanitize=address" # macOS's XCode does not support LeakSanitizer and reports error: # AddressSanitizer: detect_leaks is not supported on this platform. if [[ "$(uname -s)" != Darwin* ]]; then export ASAN_OPTIONS=detect_leaks=1 fi ;; cfi) BASE_COMPILE_FLAGS+=' -fsanitize=cfi -flto -fvisibility=hidden -fno-sanitize-trap=all -fsanitize-cfi-cross-dso' BASE_LINK_FLAGS+=' -fuse-ld=gold' ;; memory) # https://clang.llvm.org/docs/MemorySanitizer.html BASE_COMPILE_FLAGS+=" -fsanitize=memory -fno-omit-frame-pointer -g -O2 -fsanitize-memory-track-origins -fsanitize-blacklist=$PWD/memory-sanitizer-blacklist.txt" ;; undefined) # https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html BASE_COMPILE_FLAGS+=" -fsanitize=undefined" BASE_LINK_FLAGS+=" -fsanitize=undefined" export UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1:abort_on_error=1" ;; esac fi if [[ ${QA_COMPILER} = gcc ]]; then case "${QA_PROCESSOR}" in egypt) BASE_COMPILE_FLAGS+=" -fdump-rtl-expand" ;; gcov) BASE_COMPILE_FLAGS+=" --coverage -O0" ;; esac fi CFLAGS="-std=c99 ${BASE_COMPILE_FLAGS} ${CFLAGS:-}" CXXFLAGS="-std=c++11 ${BASE_COMPILE_FLAGS} ${CXXFLAGS:-}" LDFLAGS="${BASE_LINK_FLAGS} ${LDFLAGS:-}" } run_cmake() { local cmake_args=( -DCMAKE_C_COMPILER="${CC}" -DCMAKE_C_FLAGS="${CFLAGS}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_CXX_FLAGS="${CXXFLAGS}" -DCMAKE_LINKER="${LD}" -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" -DEXPAT_WARNINGS_AS_ERRORS=ON ) RUN cmake "${cmake_args[@@]}" "$@@" . } run_compile() { local make_args=( VERBOSE=1 -j2 ) RUN "${MAKE}" "${make_args[@@]}" clean all } run_tests() { case "${QA_PROCESSOR}" in egypt) return 0 ;; esac if [[ ${CC} =~ mingw ]]; then for i in tests xmlwf ; do mingw32_dir="$(dirname "$(ls -1 /usr/lib*/gcc/i686-w64-mingw32/*/{libgcc_s_sjlj-1.dll,libstdc++-6.dll} | head -n1)")" RUN ln -s \ /usr/i686-w64-mingw32/lib/libwinpthread-1.dll \ "${mingw32_dir}"/libgcc_s_dw2-1.dll \ "${mingw32_dir}"/libgcc_s_sjlj-1.dll \ "${mingw32_dir}"/libstdc++-6.dll \ "$PWD"/libexpat{,w}-*.dll \ ${i}/ done fi local make_args=( CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=2 VERBOSE=1 ) RUN "${MAKE}" "${make_args[@@]}" test if [[ ! $* =~ -DEXPAT_DTD=OFF ]]; then # NOTE: This is meant to mitigate Wine crashing randomly in CI if [[ ${CC} =~ mingw ]]; then local retry='retry --times 5 --' else local retry= fi RUN ${retry} "${MAKE}" "${make_args[@@]}" run-xmltest fi } run_processor() { if [[ ${QA_COMPILER} != gcc ]]; then return 0 fi case "${QA_PROCESSOR}" in egypt) local DOT_FORMAT="${DOT_FORMAT:-svg}" local o="callgraph.${DOT_FORMAT}" ANNOUNCE "egypt ...... | dot ...... > ${o}" find . -name '*.expand' \ | sort \ | xargs -r egypt \ | unflatten -c 20 \ | dot -T${DOT_FORMAT} -Grankdir=LR \ > "${o}" ;; gcov) for gcov_dir in lib xmlwf ; do ( cd "${gcov_dir}" || exit 1 for gcda_file in $(find . -name '*.gcda' | sort) ; do RUN gcov -s .libs/ ${gcda_file} done ) done RUN find . -name '*.gcov' | sort ;; esac } run() { populate_environment dump_config run_cmake "$@@" run_compile run_tests "$@@" run_processor } dump_config() { cat <&2 QA_SANITIZER= fi case "${QA_SANITIZER:=address}" in address|cfi|memory|undefined) ;; *) usage; exit 1 ;; esac } usage() { cat <<"EOF" Usage: $ ./qa.sh [ARG ..] Environment variables QA_COMPILER=(clang|gcc) # default: auto-detected QA_PROCESSOR=(egypt|gcov) # default: gcov QA_SANITIZER=(address|cfi|memory|undefined) # default: address EOF } main() { if [[ ${1:-} = --help ]]; then usage; exit 0 fi process_config run "$@@" } main "$@@" @ 1.1.1.1 log @Import expat 2.8.1 as expat-2-8-1 @ text @@ 1.1.1.2 log @Import expat 2.8.2 as expat-2-8-2 @ text @a12 1 # Copyright (c) 2026 Matthew Fernandez d101 1 a101 1 BASE_COMPILE_FLAGS+=" -fsanitize=memory -fno-omit-frame-pointer -g -O2 -fsanitize-memory-track-origins" @ 1.1.1.1.2.1 log @file qa.sh was added on branch netbsd-11 on 2026-06-16 08:23:19 +0000 @ text @d1 325 @ 1.1.1.1.2.2 log @Pull up the following revisions, requested by jdc in ticket #311: external/mit/expat/dist/lib/libexpat.map.in up to 1.1.1.1 external/mit/expat/dist/lib/random_arc4random.c up to 1.1.1.1 external/mit/expat/dist/lib/random_arc4random.h up to 1.1.1.1 external/mit/expat/dist/lib/random_arc4random_buf.c up to 1.1.1.1 external/mit/expat/dist/lib/random_arc4random_buf.h up to 1.1.1.1 external/mit/expat/dist/lib/random_dev_urandom.c up to 1.1.1.1 external/mit/expat/dist/lib/random_dev_urandom.h up to 1.1.1.1 external/mit/expat/dist/lib/random_getentropy.c up to 1.1.1.1 external/mit/expat/dist/lib/random_getentropy.h up to 1.1.1.1 external/mit/expat/dist/lib/random_getrandom.c up to 1.1.1.1 external/mit/expat/dist/lib/random_getrandom.h up to 1.1.1.1 external/mit/expat/dist/lib/random_rand_s.c up to 1.1.1.1 external/mit/expat/dist/lib/random_rand_s.h up to 1.1.1.1 external/mit/expat/dist/coverage.sh up to 1.1.1.1 external/mit/expat/dist/cmake/autotools/expat__linux.cmake.in up to 1.1.1.1 external/mit/expat/dist/cmake/autotools/expat__macos.cmake.in up to 1.1.1.1 external/mit/expat/dist/cmake/autotools/expat__windows.cmake.in up to 1.1.1.1 external/mit/expat/dist/qa.sh up to 1.1.1.1 external/mit/expat/dist/gennmtab/gennmtab.c up to 1.1.1.1 external/mit/expat/dist/.clang-format up to 1.1.1.1 external/mit/expat/dist/apply-clang-format.sh up to 1.1.1.1 external/mit/expat/dist/apply-clang-tidy.sh up to 1.1.1.1 external/mit/expat/dist/clean_coverage.sh up to 1.1.1.1 external/mit/expat/dist/configure-ac-style.md up to 1.1.1.1 external/mit/expat/dist/distribute.sh up to 1.1.1.1 external/mit/expat/dist/memory-sanitizer-blacklist.txt up to 1.1.1.1 external/mit/expat/dist/Makefile.in delete external/mit/expat/dist/aclocal.m4 delete external/mit/expat/dist/configure delete external/mit/expat/dist/expat_config.h.in delete external/mit/expat/dist/cmake/autotools/expat.cmake delete external/mit/expat/dist/conftools/compile delete external/mit/expat/dist/conftools/ar-lib delete external/mit/expat/dist/conftools/config.guess delete external/mit/expat/dist/conftools/config.sub delete external/mit/expat/dist/conftools/depcomp delete external/mit/expat/dist/conftools/expat.m4 delete external/mit/expat/dist/conftools/missing delete external/mit/expat/dist/conftools/install-sh delete external/mit/expat/dist/conftools/ltmain.sh delete external/mit/expat/dist/conftools/test-driver delete external/mit/expat/dist/doc/Makefile.in delete external/mit/expat/dist/doc/xmlwf.1 delete external/mit/expat/dist/examples/Makefile.in delete external/mit/expat/dist/lib/Makefile.in delete external/mit/expat/dist/m4/libtool.m4 delete external/mit/expat/dist/m4/ltoptions.m4 delete external/mit/expat/dist/m4/ltsugar.m4 delete external/mit/expat/dist/m4/ltversion.m4 delete external/mit/expat/dist/m4/lt~obsolete.m4 delete external/mit/expat/dist/tests/benchmark/Makefile.in delete external/mit/expat/dist/tests/Makefile.in delete external/mit/expat/dist/tests/acc_tests_cxx.cpp delete external/mit/expat/dist/tests/alloc_tests_cxx.cpp delete external/mit/expat/dist/tests/basic_tests_cxx.cpp delete external/mit/expat/dist/tests/chardata_cxx.cpp delete external/mit/expat/dist/tests/common_cxx.cpp delete external/mit/expat/dist/tests/dummy_cxx.cpp delete external/mit/expat/dist/tests/handlers_cxx.cpp delete external/mit/expat/dist/tests/memcheck_cxx.cpp delete external/mit/expat/dist/tests/minicheck_cxx.cpp delete external/mit/expat/dist/tests/misc_tests_cxx.cpp delete external/mit/expat/dist/tests/ns_tests_cxx.cpp delete external/mit/expat/dist/tests/nsalloc_tests_cxx.cpp delete external/mit/expat/dist/tests/runtests_cxx.cpp delete external/mit/expat/dist/tests/structdata_cxx.cpp delete external/mit/expat/dist/xmlwf/Makefile.in delete external/mit/expat/dist/CMake.README up to 1.1.1.9 external/mit/expat/dist/CMakeLists.txt up to 1.1.1.9 external/mit/expat/dist/Changes up to 1.1.1.10 external/mit/expat/dist/ConfigureChecks.cmake up to 1.1.1.5 external/mit/expat/dist/Makefile.am up to 1.1.1.5 external/mit/expat/dist/README.md up to 1.1.1.5 external/mit/expat/dist/configure.ac up to 1.1.1.8 external/mit/expat/dist/expat_config.h.cmake up to 1.1.1.4 external/mit/expat/dist/fix-xmltest-log.sh up to 1.1.1.4 external/mit/expat/dist/doc/reference.html up to 1.1.1.9 external/mit/expat/dist/doc/xmlwf.xml up to 1.1.1.6 external/mit/expat/dist/examples/element_declarations.c up to 1.1.1.2 external/mit/expat/dist/fuzz/xml_lpm_fuzzer.cpp up to 1.1.1.2 external/mit/expat/dist/fuzz/xml_parse_fuzzer.c up to 1.1.1.3 external/mit/expat/dist/fuzz/xml_parsebuffer_fuzzer.c up to 1.1.1.3 external/mit/expat/dist/lib/Makefile.am up to 1.1.1.4 external/mit/expat/dist/lib/expat.h up to 1.1.1.10 external/mit/expat/dist/lib/expat_external.h up to 1.1.1.6 external/mit/expat/dist/lib/internal.h up to 1.1.1.7 external/mit/expat/dist/lib/libexpat.def.cmake up to 1.1.1.2 external/mit/expat/dist/lib/xmlparse.c up to 1.12 external/mit/expat/dist/lib/xmlrole.c up to 1.1.1.8 external/mit/expat/dist/lib/xmlrole.h up to 1.1.1.5 external/mit/expat/dist/lib/xmltok.c up to 1.8 external/mit/expat/dist/lib/xmltok.h up to 1.6 external/mit/expat/dist/lib/xmltok_ns.c up to 1.1.1.4 external/mit/expat/dist/tests/Makefile.am up to 1.1.1.4 external/mit/expat/dist/tests/alloc_tests.c up to 1.1.1.2 external/mit/expat/dist/tests/basic_tests.c up to 1.1.1.2 external/mit/expat/dist/tests/common.c up to 1.1.1.3 external/mit/expat/dist/tests/handlers.c up to 1.1.1.2 external/mit/expat/dist/tests/handlers.h up to 1.1.1.2 external/mit/expat/dist/tests/memcheck.c up to 1.1.1.5 external/mit/expat/dist/tests/minicheck.c up to 1.1.1.7 external/mit/expat/dist/tests/minicheck.h up to 1.1.1.8 external/mit/expat/dist/tests/misc_tests.c up to 1.1.1.3 external/mit/expat/dist/tests/nsalloc_tests.c up to 1.1.1.2 external/mit/expat/dist/tests/structdata.c up to 1.1.1.4 external/mit/expat/dist/tests/xmltest.sh up to 1.7 external/mit/expat/dist/win32/README.txt up to 1.1.1.7 external/mit/expat/dist/win32/build_expat_iss.bat up to 1.1.1.4 external/mit/expat/dist/win32/expat.iss up to 1.1.1.10 external/mit/expat/dist/xmlwf/unixfilemap.c up to 1.1.1.6 external/mit/expat/dist/xmlwf/xmlfile.c up to 1.1.1.7 external/mit/expat/dist/xmlwf/xmlwf.c up to 1.1.1.9 external/mit/expat/dist/xmlwf/xmlwf_helpgen.py up to 1.1.1.4 Import expat 2.8.1 as expat-2-8-1 Merge expat 2.8.1 @ text @a0 325 #! /usr/bin/env bash # __ __ _ # ___\ \/ /_ __ __ _| |_ # / _ \\ /| '_ \ / _` | __| # | __// \| |_) | (_| | |_ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # # Copyright (c) 2016-2025 Sebastian Pipping # Copyright (c) 2019 Philippe Antoine # Copyright (c) 2019-2025 Hanno Böck # Copyright (c) 2024 Alexander Bluhm # Licensed under the MIT license: # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to permit # persons to whom the Software is furnished to do so, subject to the # following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN # NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE # USE OR OTHER DEALINGS IN THE SOFTWARE. set -e set -o nounset ANNOUNCE() { local open='\e[1m' local close='\e[0m' echo -e -n "${open}" >&2 echo -n "# $*" >&2 echo -e "${close}" >&2 } WARNING() { local open='\e[1;33m' local close='\e[0m' echo -e -n "${open}" >&2 echo -n "WARNING: $*" >&2 echo -e "${close}" >&2 } RUN() { ANNOUNCE "$@@" env "$@@" } populate_environment() { : ${MAKE:=make} case "${QA_COMPILER}" in clang) : ${CC:=clang} : ${CXX:=clang++} : ${LD:=clang++} ;; gcc) : ${CC:=gcc} : ${CXX:=g++} : ${LD:=ld} ;; esac : ${BASE_COMPILE_FLAGS:="-pipe -Wall -Wextra -pedantic -Wno-overlength-strings"} : ${BASE_LINK_FLAGS:=} if [[ ${QA_COMPILER} = clang ]]; then case "${QA_SANITIZER}" in address) # https://clang.llvm.org/docs/AddressSanitizer.html BASE_COMPILE_FLAGS+=" -g -fsanitize=address -fno-omit-frame-pointer -fno-common" BASE_LINK_FLAGS+=" -g -fsanitize=address" # macOS's XCode does not support LeakSanitizer and reports error: # AddressSanitizer: detect_leaks is not supported on this platform. if [[ "$(uname -s)" != Darwin* ]]; then export ASAN_OPTIONS=detect_leaks=1 fi ;; cfi) BASE_COMPILE_FLAGS+=' -fsanitize=cfi -flto -fvisibility=hidden -fno-sanitize-trap=all -fsanitize-cfi-cross-dso' BASE_LINK_FLAGS+=' -fuse-ld=gold' ;; memory) # https://clang.llvm.org/docs/MemorySanitizer.html BASE_COMPILE_FLAGS+=" -fsanitize=memory -fno-omit-frame-pointer -g -O2 -fsanitize-memory-track-origins -fsanitize-blacklist=$PWD/memory-sanitizer-blacklist.txt" ;; undefined) # https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html BASE_COMPILE_FLAGS+=" -fsanitize=undefined" BASE_LINK_FLAGS+=" -fsanitize=undefined" export UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1:abort_on_error=1" ;; esac fi if [[ ${QA_COMPILER} = gcc ]]; then case "${QA_PROCESSOR}" in egypt) BASE_COMPILE_FLAGS+=" -fdump-rtl-expand" ;; gcov) BASE_COMPILE_FLAGS+=" --coverage -O0" ;; esac fi CFLAGS="-std=c99 ${BASE_COMPILE_FLAGS} ${CFLAGS:-}" CXXFLAGS="-std=c++11 ${BASE_COMPILE_FLAGS} ${CXXFLAGS:-}" LDFLAGS="${BASE_LINK_FLAGS} ${LDFLAGS:-}" } run_cmake() { local cmake_args=( -DCMAKE_C_COMPILER="${CC}" -DCMAKE_C_FLAGS="${CFLAGS}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_CXX_FLAGS="${CXXFLAGS}" -DCMAKE_LINKER="${LD}" -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" -DEXPAT_WARNINGS_AS_ERRORS=ON ) RUN cmake "${cmake_args[@@]}" "$@@" . } run_compile() { local make_args=( VERBOSE=1 -j2 ) RUN "${MAKE}" "${make_args[@@]}" clean all } run_tests() { case "${QA_PROCESSOR}" in egypt) return 0 ;; esac if [[ ${CC} =~ mingw ]]; then for i in tests xmlwf ; do mingw32_dir="$(dirname "$(ls -1 /usr/lib*/gcc/i686-w64-mingw32/*/{libgcc_s_sjlj-1.dll,libstdc++-6.dll} | head -n1)")" RUN ln -s \ /usr/i686-w64-mingw32/lib/libwinpthread-1.dll \ "${mingw32_dir}"/libgcc_s_dw2-1.dll \ "${mingw32_dir}"/libgcc_s_sjlj-1.dll \ "${mingw32_dir}"/libstdc++-6.dll \ "$PWD"/libexpat{,w}-*.dll \ ${i}/ done fi local make_args=( CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=2 VERBOSE=1 ) RUN "${MAKE}" "${make_args[@@]}" test if [[ ! $* =~ -DEXPAT_DTD=OFF ]]; then # NOTE: This is meant to mitigate Wine crashing randomly in CI if [[ ${CC} =~ mingw ]]; then local retry='retry --times 5 --' else local retry= fi RUN ${retry} "${MAKE}" "${make_args[@@]}" run-xmltest fi } run_processor() { if [[ ${QA_COMPILER} != gcc ]]; then return 0 fi case "${QA_PROCESSOR}" in egypt) local DOT_FORMAT="${DOT_FORMAT:-svg}" local o="callgraph.${DOT_FORMAT}" ANNOUNCE "egypt ...... | dot ...... > ${o}" find . -name '*.expand' \ | sort \ | xargs -r egypt \ | unflatten -c 20 \ | dot -T${DOT_FORMAT} -Grankdir=LR \ > "${o}" ;; gcov) for gcov_dir in lib xmlwf ; do ( cd "${gcov_dir}" || exit 1 for gcda_file in $(find . -name '*.gcda' | sort) ; do RUN gcov -s .libs/ ${gcda_file} done ) done RUN find . -name '*.gcov' | sort ;; esac } run() { populate_environment dump_config run_cmake "$@@" run_compile run_tests "$@@" run_processor } dump_config() { cat <&2 QA_SANITIZER= fi case "${QA_SANITIZER:=address}" in address|cfi|memory|undefined) ;; *) usage; exit 1 ;; esac } usage() { cat <<"EOF" Usage: $ ./qa.sh [ARG ..] Environment variables QA_COMPILER=(clang|gcc) # default: auto-detected QA_PROCESSOR=(egypt|gcov) # default: gcov QA_SANITIZER=(address|cfi|memory|undefined) # default: address EOF } main() { if [[ ${1:-} = --help ]]; then usage; exit 0 fi process_config run "$@@" } main "$@@" @ 1.1.1.1.2.3 log @Pull up the following, requested by jdc in ticket #338: external/mit/expat/dist/lib/xcsinc.c up to 1.1.1.1 external/mit/expat/dist/lib/fallthrough.h up to 1.1.1.1 external/mit/expat/dist/lib/memory_sanitizer.h up to 1.1.1.1 external/mit/expat/dist/memory-sanitizer-blacklist.txt delete external/mit/expat/dist/CMake.README up to 1.1.1.10 external/mit/expat/dist/CMakeLists.txt up to 1.1.1.10 external/mit/expat/dist/Changes up to 1.1.1.11 external/mit/expat/dist/ConfigureChecks.cmake up to 1.1.1.6 external/mit/expat/dist/README.md up to 1.1.1.6 external/mit/expat/dist/configure.ac up to 1.1.1.9 external/mit/expat/dist/qa.sh up to 1.1.1.2 external/mit/expat/dist/doc/reference.html up to 1.1.1.10 external/mit/expat/dist/doc/xmlwf.xml up to 1.1.1.7 external/mit/expat/dist/lib/Makefile.am up to 1.1.1.5 external/mit/expat/dist/lib/expat.h up to 1.1.1.11 external/mit/expat/dist/lib/libexpat.def.cmake up to 1.1.1.3 external/mit/expat/dist/lib/random_arc4random_buf.c up to 1.1.1.2 external/mit/expat/dist/lib/random_dev_urandom.c up to 1.1.1.2 external/mit/expat/dist/lib/random_getentropy.c up to 1.1.1.2 external/mit/expat/dist/lib/random_getrandom.c up to 1.1.1.2 external/mit/expat/dist/lib/siphash.h up to 1.1.1.5 external/mit/expat/dist/lib/xmlparse.c up to 1.13 external/mit/expat/dist/lib/xmltok.c up to 1.9 external/mit/expat/dist/lib/xmltok_impl.c up to 1.9 external/mit/expat/dist/tests/acc_tests.c up to 1.1.1.2 external/mit/expat/dist/tests/alloc_tests.c up to 1.1.1.3 external/mit/expat/dist/tests/basic_tests.c up to 1.1.1.3 external/mit/expat/dist/tests/chardata.c up to 1.1.1.7 external/mit/expat/dist/tests/common.c up to 1.1.1.4 external/mit/expat/dist/tests/handlers.c up to 1.1.1.3 external/mit/expat/dist/tests/handlers.h up to 1.1.1.3 external/mit/expat/dist/tests/misc_tests.c up to 1.1.1.4 external/mit/expat/dist/win32/expat.iss up to 1.1.1.11 external/mit/expat/dist/xmlwf/filemap.h up to 1.1.1.5 external/mit/expat/dist/xmlwf/win32filemap.c up to 1.1.1.6 external/mit/expat/dist/xmlwf/xmlfile.c up to 1.1.1.8 external/mit/expat/dist/xmlwf/xmlwf.c up to 1.1.1.10 external/mit/expat/dist/xmlwf/xmlwf_helpgen.py up to 1.1.1.5 Update expat to 2.8.2. @ text @a12 1 # Copyright (c) 2026 Matthew Fernandez d101 1 a101 1 BASE_COMPILE_FLAGS+=" -fsanitize=memory -fno-omit-frame-pointer -g -O2 -fsanitize-memory-track-origins" @