#!/bin/sh

set -e

#---------------------------------------------------------------------
# This quick and dirty script assists in updating the C++ demangler
# machinery in coregrind/m_demangle.
# The script will check out 
# - old and new revisions of the C++ demangler related files from GCC's trunk
# - m_demangle from valgrind's trunk.
# It will assemble
# - a patch file with local changes that were applied to the C++
#   demangler to make it work within valgrind
# - a directory new_m_demangle whose contents should be copied to
#   m_demangle in valgrind trunk
# The patch will *not* be applied automatically.
#---------------------------------------------------------------------

# You need to modify these revision numbers for your update.
old_gcc_revision=r181975  # the revision of the previous update
new_gcc_revision=r212125  # the revision for this update

# Unless the organization of demangler related files has changed, no
# changes below this line should be necessary.

# Setup a temp directory
DIR=/tmp/demangle

rm -rf $DIR
mkdir -p $DIR

cd $DIR

echo "Updating the demangler in $DIR"

# 1) Check out files from old GCC revision
echo "Checking out GCC files @ $old_gcc_revision"

mkdir gcc-$old_gcc_revision
cd    gcc-$old_gcc_revision
svn co -$old_gcc_revision svn://gcc.gnu.org/svn/gcc/trunk/libiberty libiberty > /dev/null
svn co -$old_gcc_revision svn://gcc.gnu.org/svn/gcc/trunk/include   include   > /dev/null
rm -rf libiberty/.svn
rm -rf include/.svn
cd ..

# 2) Assemble the ones we need in $DIR/$old_gcc_revision
mkdir $old_gcc_revision
cd    $old_gcc_revision
cp    ../gcc-$old_gcc_revision/include/ansidecl.h .
cp    ../gcc-$old_gcc_revision/include/demangle.h .
cp    ../gcc-$old_gcc_revision/include/dyn-string.h .
cp    ../gcc-$old_gcc_revision/include/safe-ctype.h .
cp    ../gcc-$old_gcc_revision/libiberty/cp-demangle.c .
cp    ../gcc-$old_gcc_revision/libiberty/cp-demangle.h .
cp    ../gcc-$old_gcc_revision/libiberty/cplus-dem.c .
cp    ../gcc-$old_gcc_revision/libiberty/dyn-string.c .
cp    ../gcc-$old_gcc_revision/libiberty/safe-ctype.c .
cd ..

# 3) Check out files from new GCC revision

echo "Checking out GCC files @ $new_gcc_revision"
mkdir gcc-$new_gcc_revision
cd    gcc-$new_gcc_revision
svn co -$new_gcc_revision svn://gcc.gnu.org/svn/gcc/trunk/libiberty libiberty > /dev/null
svn co -$new_gcc_revision svn://gcc.gnu.org/svn/gcc/trunk/include   include   > /dev/null
rm -rf libiberty/.svn
rm -rf include/.svn
cd ..

# 4) Assemble the ones we need in $DIR/$new_gcc_revision

mkdir $new_gcc_revision
cd    $new_gcc_revision
cp    ../gcc-$new_gcc_revision/include/ansidecl.h .
cp    ../gcc-$new_gcc_revision/include/demangle.h .
cp    ../gcc-$new_gcc_revision/include/dyn-string.h .
cp    ../gcc-$new_gcc_revision/include/safe-ctype.h .
cp    ../gcc-$new_gcc_revision/libiberty/cp-demangle.c .
cp    ../gcc-$new_gcc_revision/libiberty/cp-demangle.h .
cp    ../gcc-$new_gcc_revision/libiberty/cplus-dem.c .
cp    ../gcc-$new_gcc_revision/libiberty/dyn-string.c .
cp    ../gcc-$new_gcc_revision/libiberty/safe-ctype.c .
cd ..

# 5) Check out valgrind coregrind/m_demangle into old_m_demangle
echo "Checking out coregrind/m_demangle"
svn co svn://svn.valgrind.org/valgrind/trunk/coregrind/m_demangle old_m_demangle > /dev/null
rm -rf old_m_demangle/.svn

# 6) Create new_m_demangle
cp -rp old_m_demangle new_m_demangle
cp -rp $new_gcc_revision/*.[ch] new_m_demangle

# 7) Compare files from previous GCC revision against old_m_demangle
#    (This gets us the changes we made to the demangler).
echo "Creating patch"
set +e
diff -r -u $old_gcc_revision old_m_demangle > our-changes
echo "Patch file 'our-changes' created"

# 7) See how the patch would apply
echo "Attempting to apply the patch (but not actualy doing it)."
cd new_m_demangle
patch --dry -p1 < ../our-changes
