
it logs the function calls, their arguments and the return values. This is not complete or polished, but I am committing it now, at the request of someone who really wants to use it, even though it's not really done. It currently does not attempt to log all the functions, just the most important ones. I will be making further adjustments to the API logging code over the next few days/weeks. (Suggestions for improvements are welcome). Update the Python build scripts to re-build the swig C++ file whenever the python-extensions.swig file is modified. Correct the help for 'log enable' command (give it the correct number & type of arguments). llvm-svn: 117349
182 lines
5.0 KiB
Bash
Executable File
182 lines
5.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# build-swig-Python.sh
|
|
|
|
# SRC_ROOT is the root of the lldb source tree.
|
|
# TARGET_DIR is where the lldb framework/shared library gets put.
|
|
# CONFIG_BUILD_DIR is where the build-swig-Python-LLDB.sh shell script
|
|
# put the lldb.py file it was generated from running SWIG.
|
|
# PREFIX is the root directory used to determine where third-party modules
|
|
# for scripting languages should be installed.
|
|
# debug_flag (optional) determines whether or not this script outputs
|
|
# additional information when running.
|
|
|
|
SRC_ROOT=$1
|
|
TARGET_DIR=$2
|
|
CONFIG_BUILD_DIR=$3
|
|
PYTHON_INSTALL_DIR=$4
|
|
debug_flag=$5
|
|
|
|
swig_output_file=${SRC_ROOT}/source/LLDBWrapPython.cpp
|
|
swig_input_file=${SRC_ROOT}/scripts/lldb.swig
|
|
swig_input_file2=${SRC_ROOT}/scripts/Python/python-extensions.swig
|
|
|
|
|
|
if [ -n "$debug_flag" -a "$debug_flag" == "-debug" ]
|
|
then
|
|
Debug=1
|
|
else
|
|
Debug=0
|
|
fi
|
|
|
|
|
|
HEADER_FILES="${SRC_ROOT}/include/lldb/lldb-include.h"\
|
|
" ${SRC_ROOT}/include/lldb/lldb-defines.h"\
|
|
" ${SRC_ROOT}/include/lldb/lldb-enumerations.h"\
|
|
" ${SRC_ROOT}/include/lldb/lldb-forward.h"\
|
|
" ${SRC_ROOT}/include/lldb/lldb-forward-rtti.h"\
|
|
" ${SRC_ROOT}/include/lldb/lldb-types.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBAddress.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBBlock.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBBreakpoint.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBBreakpointLocation.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBBroadcaster.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBCommandInterpreter.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBCommandReturnObject.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBCommunication.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBCompileUnit.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBDebugger.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBError.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBEvent.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBFileSpec.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBFrame.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBFunction.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBHostOS.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBInputReader.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBInstruction.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBInstructionList.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBLineEntry.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBListener.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBModule.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBProcess.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBSourceManager.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBStream.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBStringList.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBSymbol.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBSymbolContext.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBSymbolContextList.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBTarget.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBThread.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBType.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBValue.h"\
|
|
" ${SRC_ROOT}/include/lldb/API/SBValueList.h"
|
|
|
|
|
|
if [ $Debug == 1 ]
|
|
then
|
|
echo "Header files are:"
|
|
echo ${HEADER_FILES}
|
|
fi
|
|
|
|
NeedToUpdate=0
|
|
|
|
|
|
if [ ! -f ${swig_output_file} ]
|
|
then
|
|
NeedToUpdate=1
|
|
if [ $Debug == 1 ]
|
|
then
|
|
echo "Failed to find LLDBWrapPython.cpp"
|
|
fi
|
|
fi
|
|
|
|
if [ $NeedToUpdate == 0 ]
|
|
then
|
|
for hdrfile in ${HEADER_FILES}
|
|
do
|
|
if [ $hdrfile -nt ${swig_output_file} ]
|
|
then
|
|
NeedToUpdate=1
|
|
if [ $Debug == 1 ]
|
|
then
|
|
echo "${hdrfile} is newer than ${swig_output_file}"
|
|
echo "swig file will need to be re-built."
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ $NeedToUpdate == 0 ]
|
|
then
|
|
if [ ${swig_input_file} -nt ${swig_output_file} ]
|
|
then
|
|
NeedToUpdate=1
|
|
if [ $Debug == 1 ]
|
|
then
|
|
echo "${swig_input_file} is newer than ${swig_output_file}"
|
|
echo "swig file will need to be re-built."
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ $NeedToUpdate == 0 ]
|
|
then
|
|
if [ ${swig_input_file2} -nt ${swig_output_file} ]
|
|
then
|
|
NeedToUpdate=1
|
|
if [ $Debug == 1 ]
|
|
then
|
|
echo "${swig_input_file2} is newer than ${swig_output_file}"
|
|
echo "swig file will need to be re-built."
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
os_name=`uname -s`
|
|
python_version=`/usr/bin/python --version 2>&1 | sed -e 's,Python ,,' -e 's,[.][0-9],,2' -e 's,[a-z][a-z][0-9],,'`
|
|
|
|
if [ "$os_name" == "Darwin" ]
|
|
then
|
|
framework_python_dir="${TARGET_DIR}/LLDB.framework/Resources/Python"
|
|
else
|
|
framework_python_dir="${PYTHON_INSTALL_DIR}/python${python_version}"
|
|
fi
|
|
|
|
|
|
if [ ! -L "${framework_python_dir}/_lldb.so" ]
|
|
then
|
|
NeedToUpdate=1
|
|
fi
|
|
|
|
if [ ! -f "${framework_python_dir}/lldb.py" ]
|
|
then
|
|
NeedToUpdate=1
|
|
fi
|
|
|
|
|
|
if [ $NeedToUpdate == 0 ]
|
|
then
|
|
echo "Everything is up-to-date."
|
|
exit 0
|
|
else
|
|
echo "SWIG needs to be re-run."
|
|
if [ -f ${swig_output_file} ]
|
|
then
|
|
rm ${swig_output_file}
|
|
fi
|
|
fi
|
|
|
|
|
|
# Build the SWIG C++ wrapper file for Python.
|
|
|
|
swig -c++ -shadow -python -I"/usr/include" -I"${SRC_ROOT}/include" -I./. -outdir "${CONFIG_BUILD_DIR}" -o "${swig_output_file}" "${swig_input_file}"
|
|
|
|
# Append global variable to lldb Python module.
|
|
|
|
current_dir=`pwd`
|
|
if [ -f "${current_dir}/append-debugger-id.py" ]
|
|
then
|
|
python ${current_dir}/append-debugger-id.py ${CONFIG_BUILD_DIR}
|
|
fi
|