[libsanitizer] a script to help merging asan/tsan from upstream

From-SVN: r193743
This commit is contained in:
Kostya Serebryany 2012-11-23 04:09:17 +00:00 committed by Kostya Serebryany
parent b28ece3232
commit 3409d40e47
3 changed files with 86 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2012-11-23 Kostya Serebryany <kcc@google.com>
* merge.sh: a script that will help merges from upstream.
2012-11-23 Jakub Jelinek <jakub@redhat.com>
* tsan/Makefile.am (AM_CXXFLAGS): Remove -Wno-variadic-macros.

View File

@ -13,3 +13,6 @@ http://llvm.org/svn/llvm-project/compiler-rt in the following directories:
Trivial and urgent fixes (portability, build fixes, etc.) may go directly to the
GCC tree. All non-trivial changes, functionality improvements, etc. should go
through the upstream tree first and then be merged back to the GCC tree.
The merges from upstream should be done with the aid of the merge.sh script;
it will also update the file MERGE to contain the upstream revision
we merged with.

79
libsanitizer/merge.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
# FIXME: do we need a license (or whatever else) header here?
# This script merges libsanitizer sources from upstream.
get_upstream() {
rm -rf upstream
#cp -rf orig upstream
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk upstream
}
get_current_rev() {
cd upstream
svn info | grep Revision | grep -o '[0-9]*'
}
list_files() {
(cd $1; ls *.{cc,h} 2> /dev/null)
}
change_comment_headers() {
for f in $(list_files $1); do
changed=$(awk 'NR != 2 && NR != 3' < $1/$f)
echo "$changed" > $1/$f
done
}
# ARGUMENTS: upstream_path local_path
# This function merges changes from the directory upstream_path to
# the directory local_path.
merge() {
upstream_path=upstream/$1
local_path=$2
change_comment_headers $upstream_path
echo MERGE: $upstream_path
all=$( (list_files $upstream_path; list_files $local_path) | sort | uniq)
#echo $all
for f in $all; do
if [ -f $upstream_path/$f -a -f $local_path/$f ]; then
echo "FOUND IN BOTH :" $f
# diff -u $local_path/$f $upstream_path/$f
cp -v $upstream_path/$f $local_path
elif [ -f $upstream_path/$f ]; then
echo "FOUND IN UPSTREAM :" $f
echo "UNSUPPORTED YET" && exit 1
elif [ -f $local_path/$f ]; then
echo "FOUND IN LOCAL :" $f
echo "UNSUPPORTED YET" && exit 1
fi
done
}
fatal() {
echo "$1"
exit 1;
}
pwd | grep 'libsanitizer$' || \
fatal "Run this script from libsanitizer dir"
get_upstream
CUR_REV=$(get_current_rev)
echo Current upstream revision: $CUR_REV
merge include/sanitizer include/sanitizer
merge lib/asan asan
merge lib/sanitizer_common sanitizer_common
merge lib/interception interception
rm -rf upstream
# Update the MERGE file.
cat << EOF > MERGE
$CUR_REV
The first line of this file holds the svn revision number of the
last merge done from the master library sources.
EOF