Skip to content
Leslie Zhai edited this page Sep 5, 2017 · 1 revision

Debug

Debug Build

#!/bin/bash

make clean

CC=$1
if [[ -z "$CC" ]]; then
  CC=gcc
fi
$CC --version

LC=$2
if [[ -z "$LC" ]]; then
  LC=llvm-config
fi
echo "LLVM version:" $($LC --version)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$($LC --libdir)

LANG=en_US.UTF-8 GCC=$CC LLVM_CONFIG=$LC ENABLE_LLVM_PLUGINS=1 DRAGONEGG_DEBUG=1 make -j4 &> /tmp/build.log

for example:

./debug-build arm-linux-gnu-gcc /opt/llvm-svn/bin/llvm-config
#!/bin/bash 

rm -f *.s *.out

CC=$1
if [[ -z "$CC" ]]; then
  CC=gcc
fi
$CC --version
CFLAGS="-Wall"
CPATH=
LIBPATH=
LIB=
if [ $CC == "arm-linux-gnu-gcc" ]; then
  CPATH="-I/usr/arm-linux-gnu/include"
  LIBPATH="-Wl,-rpath-link=/usr/arm-linux-gnu/lib -L/usr/arm-linux-gnu/lib"
  LIB="-nostdlib /usr/arm-linux-gnu/lib/crt1.o /usr/arm-linux-gnu/lib/crti.o /usr/arm-linux-gnu/lib/crtn.o -lc -lgcc -ldl"
fi

LC=$2
if [[ -z "$LC" ]]; then
  LC=llvm-config
fi
echo "LLVM version:" $($LC --version)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$($LC --libdir)

SRC=$3
if [[ -z "$SRC" ]]; then
  SRC=test/validator/c/hello.c
fi

ASM=$4
if [[ -z "$ASM" ]]; then
  $CC -fplugin=./dragonegg.so \
      $CFLAGS \
      $CPATH \
      -fplugin-arg-dragonegg-debug-pass-arguments \
      -ftime-report \
      -fverbose-asm \
      -fplugin-arg-dragonegg-enable-gcc-optzns \
      -fplugin-arg-dragonegg-emit-ir \
      -S \
      $SRC \
      -wrapper gdb,--args
  if [ $CC == "arm-linux-gnu-gcc" ]; then
    $CC $CFLAGS $CPATH -S $SRC -o hello-$CC.s
    $CC -o hello-$CC.out hello-$CC.s $LIBPATH $LIB
    qemu-arm -L /usr/arm-linux-gnu ./hello-$CC.out
  fi
else
  $CC -fplugin=./dragonegg.so \
      $CFLAGS \
      $CPATH \
      -fplugin-arg-dragonegg-save-gcc-output \
      -fplugin-arg-dragonegg-debug-pass-arguments \
      -fverbose-asm \
      -ftime-report \
      -fplugin-arg-dragonegg-enable-gcc-optzns \
      $SRC \
      $LIBPATH \
      $LIB
fi

for example: ./debug arm-linux-gnu-gcc /opt/llvm-svn/bin/llvm-config

Clone this wiki locally