Skip to content

[lldb] Expose SBLanguages through SWIG #8773

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lldb/bindings/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ file(GLOB_RECURSE SWIG_SOURCES *.swig)
file(GLOB SWIG_HEADERS
${LLDB_SOURCE_DIR}/include/lldb/API/*.h
${LLDB_SOURCE_DIR}/include/lldb/*.h
${LLDB_BINARY_DIR}/include/lldb/API/SBLanguages.h
)
file(GLOB SWIG_PRIVATE_HEADERS
${LLDB_SOURCE_DIR}/include/lldb/lldb-private*.h
Expand Down Expand Up @@ -32,6 +33,7 @@ set(SWIG_COMMON_FLAGS
-w361,362 # Ignore warnings about ignored operator overloads
-features autodoc
-I${LLDB_SOURCE_DIR}/include
-I${LLDB_BINARY_DIR}/include
-I${CMAKE_CURRENT_SOURCE_DIR}
${DARWIN_EXTRAS}
)
Expand Down
1 change: 1 addition & 0 deletions lldb/bindings/headers.swig
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "lldb/API/SBHostOS.h"
#include "lldb/API/SBInstruction.h"
#include "lldb/API/SBInstructionList.h"
#include "lldb/API/SBLanguages.h"
#include "lldb/API/SBLanguageRuntime.h"
#include "lldb/API/SBLaunchInfo.h"
#include "lldb/API/SBLineEntry.h"
Expand Down
1 change: 1 addition & 0 deletions lldb/bindings/interfaces.swig
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@
%include "lldb/API/SBHostOS.h"
%include "lldb/API/SBInstruction.h"
%include "lldb/API/SBInstructionList.h"
%include "lldb/API/SBLanguages.h"
%include "lldb/API/SBLanguageRuntime.h"
%include "lldb/API/SBLaunchInfo.h"
%include "lldb/API/SBLineEntry.h"
Expand Down
1 change: 1 addition & 0 deletions lldb/bindings/lua/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ else()
DEPENDS ${SWIG_SOURCES}
DEPENDS ${SWIG_INTERFACES}
DEPENDS ${SWIG_HEADERS}
DEPENDS lldb-sbapi-dwarf-enums
COMMAND ${SWIG_EXECUTABLE}
${SWIG_COMMON_FLAGS}
-I${CMAKE_CURRENT_SOURCE_DIR}
Expand Down
5 changes: 5 additions & 0 deletions lldb/bindings/prepare_bindings.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ def process_args(args):
os.path.dirname(os.path.realpath(__file__)),
os.path.pardir)),
help="Specifies the LLDB source root directory.")
parser.add_argument(
"--build-root",
"--buildRoot",
"-b",
help="Specifies the LLDB build root directory.")
parser.add_argument(
"--swig-executable",
"--swigExecutable",
Expand Down
2 changes: 2 additions & 0 deletions lldb/bindings/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ add_custom_command(
DEPENDS ${SWIG_SOURCES}
DEPENDS ${SWIG_INTERFACES}
DEPENDS ${SWIG_HEADERS}
DEPENDS lldb-sbapi-dwarf-enums
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/prepare_binding_python.py
COMMAND ${Python3_EXECUTABLE} ${LLDB_SOURCE_DIR}/bindings/prepare_bindings.py
${framework_arg}
--srcRoot=${LLDB_SOURCE_DIR}
--buildRoot=${LLDB_BINARY_DIR}
--targetDir=${CMAKE_CURRENT_BINARY_DIR}
--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}
--prefix=${CMAKE_BINARY_DIR}
Expand Down
1 change: 1 addition & 0 deletions lldb/bindings/python/prepare_binding_python.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ def do_swig_rebuild(options, dependency_file, config_build_dir, settings):
"-features", "autodoc",
"-threads",
"-I" + os.path.normpath(os.path.join(options.src_root, "include")),
"-I" + os.path.normpath(os.path.join(options.build_root, "include")),
"-I" + bindings_dir,
"-I" + bindings_python_dir,
"-D__STDC_LIMIT_MACROS",
Expand Down
645 changes: 398 additions & 247 deletions lldb/bindings/python/static-binding/LLDBWrapPython.cpp

Large diffs are not rendered by default.

93 changes: 91 additions & 2 deletions lldb/bindings/python/static-binding/lldb.py
Original file line number Diff line number Diff line change
Expand Up @@ -1783,8 +1783,16 @@ def lldb_iter(obj, getsize, getelem):

eBroadcastBitError = _lldb.eBroadcastBitError

eBroadcastSymbolChange = _lldb.eBroadcastSymbolChange

eBroadcastBitProgressCategory = _lldb.eBroadcastBitProgressCategory

eSeverityError = _lldb.eSeverityError

eSeverityWarning = _lldb.eSeverityWarning

eSeverityInfo = _lldb.eSeverityInfo

class SBAddress(object):
r"""
A section + offset based address class.
Expand Down Expand Up @@ -5560,12 +5568,13 @@ def SetTrapExceptions(self, trap_exceptions=True):
"""
return _lldb.SBExpressionOptions_SetTrapExceptions(self, trap_exceptions)

def SetLanguage(self, language):
def SetLanguage(self, *args):
r"""
SetLanguage(SBExpressionOptions self, lldb::LanguageType language)
SetLanguage(SBExpressionOptions self, SBSourceLanguageName name, uint32_t version)
Sets the language that LLDB should assume the expression is written in
"""
return _lldb.SBExpressionOptions_SetLanguage(self, language)
return _lldb.SBExpressionOptions_SetLanguage(self, *args)

def GetPlaygroundTransformEnabled(self):
r"""GetPlaygroundTransformEnabled(SBExpressionOptions self) -> bool"""
Expand Down Expand Up @@ -6808,6 +6817,86 @@ def __getitem__(self, key):

# Register SBInstructionList in _lldb:
_lldb.SBInstructionList_swigregister(SBInstructionList)
eLanguageNameAda = _lldb.eLanguageNameAda

eLanguageNameBLISS = _lldb.eLanguageNameBLISS

eLanguageNameC = _lldb.eLanguageNameC

eLanguageNameC_plus_plus = _lldb.eLanguageNameC_plus_plus

eLanguageNameCobol = _lldb.eLanguageNameCobol

eLanguageNameCrystal = _lldb.eLanguageNameCrystal

eLanguageNameD = _lldb.eLanguageNameD

eLanguageNameDylan = _lldb.eLanguageNameDylan

eLanguageNameFortran = _lldb.eLanguageNameFortran

eLanguageNameGo = _lldb.eLanguageNameGo

eLanguageNameHaskell = _lldb.eLanguageNameHaskell

eLanguageNameJava = _lldb.eLanguageNameJava

eLanguageNameJulia = _lldb.eLanguageNameJulia

eLanguageNameKotlin = _lldb.eLanguageNameKotlin

eLanguageNameModula2 = _lldb.eLanguageNameModula2

eLanguageNameModula3 = _lldb.eLanguageNameModula3

eLanguageNameObjC = _lldb.eLanguageNameObjC

eLanguageNameObjC_plus_plus = _lldb.eLanguageNameObjC_plus_plus

eLanguageNameOCaml = _lldb.eLanguageNameOCaml

eLanguageNameOpenCL_C = _lldb.eLanguageNameOpenCL_C

eLanguageNamePascal = _lldb.eLanguageNamePascal

eLanguageNamePLI = _lldb.eLanguageNamePLI

eLanguageNamePython = _lldb.eLanguageNamePython

eLanguageNameRenderScript = _lldb.eLanguageNameRenderScript

eLanguageNameRust = _lldb.eLanguageNameRust

eLanguageNameSwift = _lldb.eLanguageNameSwift

eLanguageNameUPC = _lldb.eLanguageNameUPC

eLanguageNameZig = _lldb.eLanguageNameZig

eLanguageNameAssembly = _lldb.eLanguageNameAssembly

eLanguageNameC_sharp = _lldb.eLanguageNameC_sharp

eLanguageNameMojo = _lldb.eLanguageNameMojo

eLanguageNameGLSL = _lldb.eLanguageNameGLSL

eLanguageNameGLSL_ES = _lldb.eLanguageNameGLSL_ES

eLanguageNameHLSL = _lldb.eLanguageNameHLSL

eLanguageNameOpenCL_CPP = _lldb.eLanguageNameOpenCL_CPP

eLanguageNameCPP_for_OpenCL = _lldb.eLanguageNameCPP_for_OpenCL

eLanguageNameSYCL = _lldb.eLanguageNameSYCL

eLanguageNameRuby = _lldb.eLanguageNameRuby

eLanguageNameMove = _lldb.eLanguageNameMove

eLanguageNameHylo = _lldb.eLanguageNameHylo

class SBLanguageRuntime(object):
r"""Utility functions for :ref:`LanguageType`"""

Expand Down