Index: scripts/Python/finish-swig-Python-LLDB.sh =================================================================== --- scripts/Python/finish-swig-Python-LLDB.sh +++ scripts/Python/finish-swig-Python-LLDB.sh @@ -170,7 +170,9 @@ if [ ${OS_NAME} = "Darwin" ] && [ $MakefileCalled -ne 0 ] then # We are being built by CMake on Darwin + # Create symlinks for: + # darwin-debug if [ ! -L "${framework_python_dir}/darwin-debug" ] then if [ $Debug -eq 1 ] @@ -185,6 +187,22 @@ echo "${framework_python_dir}/darwin-debug already exists." fi fi + + # argdumper + if [ ! -L "${framework_python_dir}/argdumper" ] + then + if [ $Debug -eq 1 ] + then + echo "Creating symlink for argdumper" + fi + cd "${framework_python_dir}" + ln -s "../../../../bin/argdumper" argdumper + else + if [ $Debug -eq 1 ] + then + echo "${framework_python_dir}/argdumper already exists." + fi + fi fi create_python_package () { Index: scripts/Python/finishSwigPythonLLDB.py =================================================================== --- scripts/Python/finishSwigPythonLLDB.py +++ scripts/Python/finishSwigPythonLLDB.py @@ -377,6 +377,53 @@ return (bOk, strMsg); #++--------------------------------------------------------------------------- +# Details: Make the symbolic link to the argdumper. Code for all platforms +# apart from Windows. +# Args: vDictArgs - (R) Program input parameters. +# vstrFrameworkPythonDir - (R) Python framework directory. +# vstrArgdumperFileName - (R) File name for argdumper. +# Returns: Bool - True = function success, False = failure. +# Str - Error description on task failure. +# Throws: None. +#-- +def make_symlink_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFileName ): + dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" ); + bOk = True; + strMsg = ""; + bDbg = vDictArgs.has_key( "-d" ); + strTarget = vstrArgdumperFileName + strArgdumperPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget); + strTarget = os.path.normcase( strArgdumperPath ); + strSrc = ""; + + os.chdir( vstrFrameworkPythonDir ); + bMakeFileCalled = vDictArgs.has_key( "-m" ); + if not bMakeFileCalled: + return (bOk, strMsg); + else: + strSrc = os.path.normcase( "../../../../bin/argdumper" ); + + if os.path.islink( strTarget ): + if bDbg: + print strMsglldbsoExists % strTarget; + return (bOk, strMsg); + + if bDbg: + print strMsglldbsoMk; + + try: + os.symlink( strSrc, strTarget ); + except OSError as e: + bOk = False; + strMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); + strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget); + except: + bOk = False; + strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; + + return (bOk, strMsg); + +#++--------------------------------------------------------------------------- # Details: Make the symlink that the script bridge for Python will need in # the Python framework directory. # Args: vDictArgs - (R) Program input parameters. @@ -413,6 +460,13 @@ vstrFrameworkPythonDir, strDarwinDebugFileName ); + # Make symlink for argdumper + strArgdumperFileName = "argdumper" + if bOk and eOSType == utilsOsType.EnumOsType.Darwin: + bOk, strErrMsg = make_symlink_argdumper( vDictArgs, + vstrFrameworkPythonDir, + strArgdumperFileName ); + return (bOk, strErrMsg); #++--------------------------------------------------------------------------- Index: tools/CMakeLists.txt =================================================================== --- tools/CMakeLists.txt +++ tools/CMakeLists.txt @@ -1,4 +1,5 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + add_subdirectory(argdumper) add_subdirectory(darwin-debug) add_subdirectory(debugserver) endif() Index: tools/argdumper/CMakeLists.txt =================================================================== --- /dev/null +++ tools/argdumper/CMakeLists.txt @@ -0,0 +1,8 @@ +add_lldb_executable(argdumper + argdumper.cpp + ) + +target_link_libraries(argdumper liblldb) + +install(TARGETS argdumper + RUNTIME DESTINATION bin)