general list of actions required to perform the merge:
* Checkout recent GCC tree.
-* Run merge.sh script from libsanitizer directory.
+* Run merge.sh script from libsanitizer directory. The script accepts one
+ argument that is control version system (svn or git).
* Modify Makefile.am files into asan/tsan/lsan/ubsan/sanitizer_common/interception
directories if needed. In particular, you may need to add new source files
and remove old ones in source files list, add new flags to {C, CXX}FLAGS if
* Update ASan testsuite with corresponding tests from lib/asan/tests directory.
Not all tests can be migrated easily, so you don't need them all to be adapted.
* Modify configure.ac file if needed (e.g. if you need to add link against new
- library for sanitizer lilbs).
+ library for sanitizer libs).
* Add new target platforms in configure.tgt script if needed.
* Bump SONAME for sanitizer libraries in asan/tsan/ubsan libtool-version files
if ABI has changed.
* Run regression testing on at least three platforms (e.g. x86-linux-gnu, x86_64-linux-gnu,
aarch64-linux-gnu, arm-linux-gnueabi).
* Run {A, UB}San bootstrap on at least three platforms.
-* Compare ABI of corresponding libclang_rt-asan and newly build libasan libraries.
+* Compare ABI of corresponding libclang_rt.asan and newly build libasan libraries.
+ Similarly you can compare latest GCC release with the newly built libraries
+ (libasan.so.*, libubsan.so.*, libtsan.so*).
You can use a pretty good libabigail tool (https://sourceware.org/libabigail/index.html)
to perform such a comparision. Note, that the list of exported symbols may differ,
e.g. because libasan currently does not include UBSan runtime.
# This script merges libsanitizer sources from upstream.
+VCS=${1:-svn}
+
get_upstream() {
rm -rf upstream
#cp -rf orig upstream
elif [ -f $upstream_path/$f ]; then
echo "FOUND IN UPSTREAM :" $f
cp -v $upstream_path/$f $local_path
- svn add $local_path/$f
+ $VCS add $local_path/$f
elif [ -f $local_path/$f ]; then
echo "FOUND IN LOCAL :" $f
- svn remove $local_path/$f
+ $VCS rm $local_path/$f
fi
done