llvm-project/lldb/bindings/interfaces.swig
Jonas Devlieghere 50949ebf52
[lldb] Expose the Target API mutex through the SB API (#133295)
Expose u target API mutex through the SB API. This is motivated by
lldb-dap, which is built on top of the SB API and needs a way to execute
a series of SB API calls in an atomic manner (see #131242).

We can solve this problem by either introducing an additional layer of
locking at the DAP level or by exposing the existing locking at the SB
API level. This patch implements the second approach.

This was discussed in an RFC on Discourse [0]. The original
implementation exposed a move-only lock rather than a mutex [1] which
doesn't work well with SWIG 4.0 [2]. This implement the alternative
solution of exposing the mutex rather than the lock. The SBMutex
conforms to the BasicLockable requirement [3] (which is why the methods
are called `lock` and `unlock` rather than Lock and Unlock) so it can be
used as `std::lock_guard<lldb::SBMutex>` and
`std::unique_lock<lldb::SBMutex>`.

[0]: https://discourse.llvm.org/t/rfc-exposing-the-target-api-lock-through-the-sb-api/85215/6
[1]: https://github.com/llvm/llvm-project/pull/131404
[2]: https://discourse.llvm.org/t/rfc-bumping-the-minimum-swig-version-to-4-1-0/85377/9
[3]: https://en.cppreference.com/w/cpp/named_req/BasicLockable
2025-03-31 08:19:41 -07:00

231 lines
9.6 KiB
Plaintext

/* Various liblldb typedefs that SWIG needs to know about. */
#define __extension__ /* Undefine GCC keyword to make Swig happy when processing glibc's stdint.h. */
%include "stdint.i"
%include "lldb/lldb-defines.h"
%include "lldb/lldb-enumerations.h"
%include "lldb/lldb-forward.h"
%include "lldb/lldb-types.h"
/* Forward declaration of SB classes. */
%include "lldb/API/SBDefines.h"
/* Docstrings for SB classes and methods */
%include "./interface/SBAddressDocstrings.i"
%include "./interface/SBAddressRangeDocstrings.i"
%include "./interface/SBAddressRangeListDocstrings.i"
%include "./interface/SBAttachInfoDocstrings.i"
%include "./interface/SBBlockDocstrings.i"
%include "./interface/SBBreakpointDocstrings.i"
%include "./interface/SBBreakpointLocationDocstrings.i"
%include "./interface/SBBreakpointNameDocstrings.i"
%include "./interface/SBBroadcasterDocstrings.i"
%include "./interface/SBCommandInterpreterDocstrings.i"
%include "./interface/SBCommandInterpreterRunOptionsDocstrings.i"
%include "./interface/SBCommandReturnObjectDocstrings.i"
%include "./interface/SBCommunicationDocstrings.i"
%include "./interface/SBCompileUnitDocstrings.i"
%include "./interface/SBSaveCoreOptionsDocstrings.i"
%include "./interface/SBDataDocstrings.i"
%include "./interface/SBDebuggerDocstrings.i"
%include "./interface/SBDeclarationDocstrings.i"
%include "./interface/SBErrorDocstrings.i"
%include "./interface/SBEnvironmentDocstrings.i"
%include "./interface/SBEventDocstrings.i"
%include "./interface/SBExecutionContextDocstrings.i"
%include "./interface/SBExpressionOptionsDocstrings.i"
%include "./interface/SBFileDocstrings.i"
%include "./interface/SBFileSpecDocstrings.i"
%include "./interface/SBFileSpecListDocstrings.i"
%include "./interface/SBFormatDocstrings.i"
%include "./interface/SBFrameDocstrings.i"
%include "./interface/SBFunctionDocstrings.i"
%include "./interface/SBHostOSDocstrings.i"
%include "./interface/SBInstructionDocstrings.i"
%include "./interface/SBInstructionListDocstrings.i"
%include "./interface/SBLanguageRuntimeDocstrings.i"
%include "./interface/SBLaunchInfoDocstrings.i"
%include "./interface/SBLineEntryDocstrings.i"
%include "./interface/SBListenerDocstrings.i"
%include "./interface/SBMemoryRegionInfoDocstrings.i"
%include "./interface/SBMemoryRegionInfoListDocstrings.i"
%include "./interface/SBModuleDocstrings.i"
%include "./interface/SBModuleSpecDocstrings.i"
%include "./interface/SBMutexExtensions.i"
%include "./interface/SBPlatformDocstrings.i"
%include "./interface/SBProcessDocstrings.i"
%include "./interface/SBProcessInfoDocstrings.i"
%include "./interface/SBProgressDocstrings.i"
%include "./interface/SBQueueDocstrings.i"
%include "./interface/SBQueueItemDocstrings.i"
%include "./interface/SBReproducerDocstrings.i"
%include "./interface/SBSectionDocstrings.i"
%include "./interface/SBSourceManagerDocstrings.i"
%include "./interface/SBStatisticsOptionsDocstrings.i"
%include "./interface/SBStreamDocstrings.i"
%include "./interface/SBStringListDocstrings.i"
%include "./interface/SBStructuredDataDocstrings.i"
%include "./interface/SBSymbolDocstrings.i"
%include "./interface/SBSymbolContextDocstrings.i"
%include "./interface/SBSymbolContextListDocstrings.i"
%include "./interface/SBTargetDocstrings.i"
%include "./interface/SBThreadDocstrings.i"
%include "./interface/SBThreadCollectionDocstrings.i"
%include "./interface/SBThreadPlanDocstrings.i"
%include "./interface/SBTraceDocstrings.i"
%include "./interface/SBTraceCursorDocstrings.i"
%include "./interface/SBTypeDocstrings.i"
%include "./interface/SBTypeCategoryDocstrings.i"
%include "./interface/SBTypeEnumMemberDocstrings.i"
%include "./interface/SBTypeFilterDocstrings.i"
%include "./interface/SBTypeFormatDocstrings.i"
%include "./interface/SBTypeNameSpecifierDocstrings.i"
%include "./interface/SBTypeSummaryDocstrings.i"
%include "./interface/SBTypeSyntheticDocstrings.i"
%include "./interface/SBUnixSignalsDocstrings.i"
%include "./interface/SBValueDocstrings.i"
%include "./interface/SBValueListDocstrings.i"
%include "./interface/SBVariablesOptionsDocstrings.i"
%include "./interface/SBWatchpointDocstrings.i"
%include "./interface/SBWatchpointOptionsDocstrings.i"
/* API headers */
%include "lldb/API/SBAddress.h"
%include "lldb/API/SBAddressRange.h"
%include "lldb/API/SBAddressRangeList.h"
%include "lldb/API/SBAttachInfo.h"
%include "lldb/API/SBBlock.h"
%include "lldb/API/SBBreakpoint.h"
%include "lldb/API/SBBreakpointLocation.h"
%include "lldb/API/SBBreakpointName.h"
%include "lldb/API/SBBroadcaster.h"
%include "lldb/API/SBCommandInterpreter.h"
%include "lldb/API/SBCommandInterpreterRunOptions.h"
%include "lldb/API/SBCommandReturnObject.h"
%include "lldb/API/SBCommunication.h"
%include "lldb/API/SBCompileUnit.h"
%include "lldb/API/SBSaveCoreOptions.h"
%include "lldb/API/SBData.h"
%include "lldb/API/SBDebugger.h"
%include "lldb/API/SBDeclaration.h"
%include "lldb/API/SBError.h"
%include "lldb/API/SBEnvironment.h"
%include "lldb/API/SBEvent.h"
%include "lldb/API/SBExecutionContext.h"
%include "lldb/API/SBExpressionOptions.h"
%include "lldb/API/SBFile.h"
%include "lldb/API/SBFileSpec.h"
%include "lldb/API/SBFileSpecList.h"
%include "lldb/API/SBFormat.h"
%include "lldb/API/SBFrame.h"
%include "lldb/API/SBFunction.h"
%include "lldb/API/SBHostOS.h"
%include "lldb/API/SBInstruction.h"
%include "lldb/API/SBInstructionList.h"
%include "lldb/API/SBLanguageRuntime.h"
%include "lldb/API/SBLanguages.h"
%include "lldb/API/SBLaunchInfo.h"
%include "lldb/API/SBLineEntry.h"
%include "lldb/API/SBListener.h"
%include "lldb/API/SBMemoryRegionInfo.h"
%include "lldb/API/SBMemoryRegionInfoList.h"
%include "lldb/API/SBModule.h"
%include "lldb/API/SBModuleSpec.h"
%include "lldb/API/SBMutex.h"
%include "lldb/API/SBPlatform.h"
%include "lldb/API/SBProcess.h"
%include "lldb/API/SBProcessInfo.h"
%include "lldb/API/SBProcessInfoList.h"
%include "lldb/API/SBProgress.h"
%include "lldb/API/SBQueue.h"
%include "lldb/API/SBQueueItem.h"
%include "lldb/API/SBReproducer.h"
%include "lldb/API/SBScriptObject.h"
%include "lldb/API/SBSection.h"
%include "lldb/API/SBSourceManager.h"
%include "lldb/API/SBStatisticsOptions.h"
%include "lldb/API/SBStream.h"
%include "lldb/API/SBStringList.h"
%include "lldb/API/SBStructuredData.h"
%include "lldb/API/SBSymbol.h"
%include "lldb/API/SBSymbolContext.h"
%include "lldb/API/SBSymbolContextList.h"
%include "lldb/API/SBTarget.h"
%include "lldb/API/SBThread.h"
%include "lldb/API/SBThreadCollection.h"
%include "lldb/API/SBThreadPlan.h"
%include "lldb/API/SBTrace.h"
%include "lldb/API/SBTraceCursor.h"
%include "lldb/API/SBType.h"
%include "lldb/API/SBTypeCategory.h"
%include "lldb/API/SBTypeEnumMember.h"
%include "lldb/API/SBTypeFilter.h"
%include "lldb/API/SBTypeFormat.h"
%include "lldb/API/SBTypeNameSpecifier.h"
%include "lldb/API/SBTypeSummary.h"
%include "lldb/API/SBTypeSynthetic.h"
%include "lldb/API/SBUnixSignals.h"
%include "lldb/API/SBValue.h"
%include "lldb/API/SBValueList.h"
%include "lldb/API/SBVariablesOptions.h"
%include "lldb/API/SBWatchpoint.h"
%include "lldb/API/SBWatchpointOptions.h"
/* Extensions for SB classes */
%include "./interface/SBAddressExtensions.i"
%include "./interface/SBAddressRangeExtensions.i"
%include "./interface/SBAddressRangeListExtensions.i"
%include "./interface/SBBlockExtensions.i"
%include "./interface/SBBreakpointExtensions.i"
%include "./interface/SBBreakpointListExtensions.i"
%include "./interface/SBBreakpointLocationExtensions.i"
%include "./interface/SBBreakpointNameExtensions.i"
%include "./interface/SBBroadcastExtensions.i"
%include "./interface/SBCommandReturnObjectExtensions.i"
%include "./interface/SBCompileUnitExtensions.i"
%include "./interface/SBDataExtensions.i"
%include "./interface/SBDebuggerExtensions.i"
%include "./interface/SBDeclarationExtensions.i"
%include "./interface/SBErrorExtensions.i"
%include "./interface/SBExecutionContextExtensions.i"
%include "./interface/SBFileExtensions.i"
%include "./interface/SBFileSpecExtensions.i"
%include "./interface/SBFileSpecListExtensions.i"
%include "./interface/SBFrameExtensions.i"
%include "./interface/SBFunctionExtensions.i"
%include "./interface/SBInstructionExtensions.i"
%include "./interface/SBInstructionListExtensions.i"
%include "./interface/SBLineEntryExtensions.i"
%include "./interface/SBMemoryRegionInfoExtensions.i"
%include "./interface/SBMemoryRegionInfoListExtensions.i"
%include "./interface/SBModuleExtensions.i"
%include "./interface/SBModuleSpecExtensions.i"
%include "./interface/SBModuleSpecListExtensions.i"
%include "./interface/SBProcessExtensions.i"
%include "./interface/SBProgressExtensions.i"
%include "./interface/SBProcessInfoListExtensions.i"
%include "./interface/SBQueueItemExtensions.i"
%include "./interface/SBScriptObjectExtensions.i"
%include "./interface/SBSectionExtensions.i"
%include "./interface/SBStreamExtensions.i"
%include "./interface/SBStringListExtensions.i"
%include "./interface/SBStructuredDataExtensions.i"
%include "./interface/SBSymbolContextExtensions.i"
%include "./interface/SBSymbolContextListExtensions.i"
%include "./interface/SBSymbolExtensions.i"
%include "./interface/SBTargetExtensions.i"
%include "./interface/SBThreadCollectionExtensions.i"
%include "./interface/SBThreadExtensions.i"
%include "./interface/SBTypeCategoryExtensions.i"
%include "./interface/SBTypeEnumMemberExtensions.i"
%include "./interface/SBTypeExtensions.i"
%include "./interface/SBTypeFilterExtensions.i"
%include "./interface/SBTypeFormatExtensions.i"
%include "./interface/SBTypeNameSpecifierExtensions.i"
%include "./interface/SBTypeSummaryExtensions.i"
%include "./interface/SBTypeSyntheticExtensions.i"
%include "./interface/SBUnixSignalsExtensions.i"
%include "./interface/SBValueExtensions.i"
%include "./interface/SBValueListExtensions.i"
%include "./interface/SBWatchpointExtensions.i"