--- a/GDBConnection.st Tue Mar 09 12:29:05 2021 +0000
+++ b/GDBConnection.st Tue Mar 09 20:49:55 2021 +0000
@@ -1,6 +1,7 @@
"
jv:libgdbs - GNU Debugger Interface Library
Copyright (C) 2015-now Jan Vrany
+Copyright (C) 2021 LabWare
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,9 +23,8 @@
Object subclass:#GDBConnection
instanceVariableNames:'process inferiorPTY eventAnnouncer eventAnnouncerInternal
- eventQueue eventQueueLock eventDispatchNotifier
- eventDispatchProcess eventDispatchProcessStopping
- eventPumpProcess outstandingCommands recorder'
+ eventQueue eventQueueLock eventDispatcher eventPumpProcess
+ outstandingCommands recorder'
classVariableNames:''
poolDictionaries:'GDBDebugFlags'
category:'GDB-Private'
@@ -36,6 +36,7 @@
"
jv:libgdbs - GNU Debugger Interface Library
Copyright (C) 2015-now Jan Vrany
+Copyright (C) 2021 LabWare
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -91,6 +92,12 @@
"Created: / 19-06-2014 / 22:18:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+eventDispatchProcess
+ ^ eventDispatcher process
+
+ "Created: / 09-03-2021 / 20:51:54 / Jan Vrany <jan.vrany@labware.com>"
+!
+
inferiorPTY
^ inferiorPTY
!
@@ -142,86 +149,18 @@
!GDBConnection methodsFor:'event dispatching'!
-eventDispatchLoop
- "raise an error: this method should be implemented (TODO)"
-
- [
- | eventQueueEmpty |
-
- eventQueueEmpty := false.
- [ eventQueueEmpty ] whileFalse:[
- | event |
-
- event := nil.
- eventQueueLock critical:[
- eventQueueEmpty := eventQueue isEmpty.
- eventQueueEmpty ifFalse:[
- event := eventQueue removeFirst.
- ]
- ].
- eventQueueEmpty ifFalse:[
- (AbortOperationRequest , AbortAllOperationRequest) ignoreIn:[
- self eventDispatchSingle: event.
- ]
- ].
- ].
- eventDispatchProcessStopping == true ifTrue:[
- ^ self.
- ].
- eventDispatchNotifier wait.
- ] loop.
+eventDispatchStart
+ eventDispatcher start
"Created: / 02-06-2014 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 14-01-2018 / 21:54:32 / jv"
- "Modified: / 02-10-2018 / 13:35:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-eventDispatchProcess
- ^ eventDispatchProcess
-!
-
-eventDispatchSingle: aGDBEvent
- TraceEvents ifTrue:[
- Logger log: ('event loop: broadcasting %1 (%2)' bindWith: aGDBEvent class name with: aGDBEvent token) severity: #trace facility: 'GDB' originator: self attachment: aGDBEvent
- ].
- eventAnnouncerInternal announce: aGDBEvent.
- eventAnnouncer announce: aGDBEvent
-
- "Created: / 02-06-2014 / 22:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 27-02-2015 / 09:49:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-eventDispatchStart
- eventDispatchProcess isNil ifTrue:[
- eventDispatchProcessStopping := false.
- eventDispatchProcess := [
- TraceEvents ifTrue:[
- Logger log: 'event loop: starting' severity: #trace facility: 'GDB'
- ].
- self eventDispatchLoop.
- ] newProcess.
- eventDispatchProcess name:('GDB Event dispatcher (%1)' bindWith:process id).
- eventDispatchProcess priority:Processor userBackgroundPriority.
- eventDispatchProcess addExitAction:[
- eventDispatchProcess := nil.
- eventDispatchProcessStopping := nil.
- TraceEvents ifTrue:[
- Logger log: 'event loop: terminated' severity: #trace facility: 'GDB'
- ].
- ].
- eventDispatchProcess resume.
- ].
-
- "Created: / 02-06-2014 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 19-10-2018 / 10:11:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:28:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
eventDispatchStop
- eventDispatchProcessStopping := true.
- eventDispatchNotifier signal.
+ eventDispatcher stop
"Created: / 02-06-2014 / 22:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-10-2018 / 14:00:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:28:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBConnection methodsFor:'event pump'!
@@ -328,11 +267,11 @@
pushEvent: aGDBEvent
eventQueueLock critical:[
eventQueue add: aGDBEvent.
- eventDispatchNotifier signal.
+ eventDispatcher notify.
].
"Created: / 02-06-2014 / 22:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-10-2018 / 14:00:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
pushEventSet: aGDBEventSet
@@ -340,11 +279,11 @@
eventQueue add: (GDBEventSetProcessingStarted new setEventSet: aGDBEventSet).
eventQueue addAll: aGDBEventSet.
eventQueue add: (GDBEventSetProcessingFinished new setEventSet: aGDBEventSet).
- eventDispatchNotifier signal.
+ eventDispatcher notify.
].
"Created: / 02-06-2014 / 22:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-10-2018 / 14:00:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:30:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBConnection methodsFor:'initialize & release'!
@@ -356,17 +295,23 @@
].
eventQueue := OrderedCollection new.
eventQueueLock := RecursionLock new.
- eventDispatchNotifier := Semaphore new.
+ eventAnnouncerInternal := Announcer new.
eventAnnouncer := Announcer new.
eventAnnouncer subscriptionRegistry
subscriptionClass:GDBEventSubscription.
- eventAnnouncerInternal := Announcer new.
+ eventDispatcher := GDBEventDispatcher new
+ setQueue: eventQueue;
+ setLock: eventQueueLock;
+ setAnnouncer1: eventAnnouncerInternal;
+ setAnnouncer2: eventAnnouncer;
+ yourself.
outstandingCommands := Set new.
recorder := GDBMITracer new.
aGDBProcess connection:self.
"Created: / 20-06-2014 / 21:40:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 00:12:25 / jv"
+ "Modified: / 02-10-2018 / 14:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-01-2019 / 23:02:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
--- a/GDBDebugger.st Tue Mar 09 12:29:05 2021 +0000
+++ b/GDBDebugger.st Tue Mar 09 20:49:55 2021 +0000
@@ -783,7 +783,6 @@
block value.
^ nil
].
- "/ Synchronous send...
self
assert:Processor activeProcess ~~ connection eventDispatchProcess
message:'Cannot send commands from within event dispatching process. Would deadlock'.
@@ -832,6 +831,7 @@
^ eventHandlers isCollection ifTrue:[ eventsArray ] ifFalse:[ eventsArray first ]
"Created: / 08-03-2015 / 07:28:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (format): / 03-10-2018 / 12:58:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBEventDispatcher.st Tue Mar 09 20:49:55 2021 +0000
@@ -0,0 +1,213 @@
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+Copyright (C) 2021 LabWare
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'jv:libgdbs' }"
+
+"{ NameSpace: Smalltalk }"
+
+Object subclass:#GDBEventDispatcher
+ instanceVariableNames:'queue lock notifier process stopping announcer1 announcer2'
+ classVariableNames:''
+ poolDictionaries:'GDBDebugFlags'
+ category:'GDB-Private'
+!
+
+!GDBEventDispatcher class methodsFor:'documentation'!
+
+copyright
+"
+jv:libgdbs - GNU Debugger Interface Library
+Copyright (C) 2015-now Jan Vrany
+Copyright (C) 2021 LabWare
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+! !
+
+!GDBEventDispatcher class methodsFor:'instance creation'!
+
+new
+ "return an initialized instance"
+
+ ^ self basicNew initialize.
+! !
+
+!GDBEventDispatcher methodsFor:'accessing'!
+
+process
+ ^ process
+! !
+
+!GDBEventDispatcher methodsFor:'dispatching'!
+
+notify
+ "Notify dispatcher that there may be some new
+ events in the queue."
+
+ notifier signal.
+
+ "Created: / 02-10-2018 / 14:24:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+start
+ self assert: queue notNil.
+ self assert: lock notNil.
+
+ process isNil ifTrue:[
+ stopping := false.
+ process := [
+ TraceEvents ifTrue:[
+ Logger log: 'event loop: starting' severity: #trace facility: 'GDB'
+ ].
+ self dispatch.
+ ] newProcess.
+ process name:('GDB Event dispatcher').
+ process priority:Processor userBackgroundPriority.
+ process addExitAction:[
+ process := nil.
+ stopping := nil.
+ TraceEvents ifTrue:[
+ Logger log: 'event loop: terminated' severity: #trace facility: 'GDB'
+ ].
+ ].
+ process resume.
+ ].
+
+ "Created: / 02-10-2018 / 14:25:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 02-10-2018 / 16:34:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stop
+ stopping := true.
+ notifier signal.
+
+ "Created: / 02-10-2018 / 14:25:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBEventDispatcher methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ super initialize.
+ notifier := Semaphore new
+
+ "Modified: / 02-10-2018 / 14:13:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setAnnouncer1: anAnnouncer
+ announcer1 := anAnnouncer
+
+ "Created: / 02-10-2018 / 14:21:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setAnnouncer2: anAnnouncer
+ announcer2 := anAnnouncer
+
+ "Created: / 02-10-2018 / 14:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setLock: aRecursionLock
+ lock := aRecursionLock
+
+ "Created: / 02-10-2018 / 14:20:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setQueue: anOrderedCollection
+ queue := anOrderedCollection.
+
+ "Created: / 02-10-2018 / 14:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBEventDispatcher methodsFor:'private'!
+
+dispatch
+ "raise an error: this method should be implemented (TODO)"
+
+ [
+ | eventQueueEmpty |
+
+ eventQueueEmpty := false.
+ [ eventQueueEmpty ] whileFalse:[
+ | event |
+
+ event := nil.
+ lock
+ critical:[
+ eventQueueEmpty := queue isEmpty.
+ eventQueueEmpty ifFalse:[
+ event := queue removeFirst.
+ ]
+ ].
+ eventQueueEmpty ifFalse:[
+ (AbortOperationRequest , AbortAllOperationRequest)
+ ignoreIn:[ self dispatchEvent:event. ]
+ ].
+ ].
+ stopping == true ifTrue:[
+ ^ self.
+ ].
+ notifier wait.
+ ] loop.
+
+ "Created: / 02-06-2014 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 14-01-2018 / 21:54:32 / jv"
+ "Modified: / 02-10-2018 / 13:35:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+dispatchEvent:aGDBEvent
+ TraceEvents ifTrue:[
+ Logger
+ log:('event loop: broadcasting %1 (%2)' bindWith:aGDBEvent class name
+ with:aGDBEvent token)
+ severity:#trace
+ facility:'GDB'
+ originator:self
+ attachment:aGDBEvent
+ ].
+ announcer1 notNil ifTrue:[
+ announcer1 announce:aGDBEvent.
+ ].
+ announcer2 notNil ifTrue:[
+ announcer2 announce:aGDBEvent
+ ].
+
+ "Created: / 02-06-2014 / 22:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-10-2018 / 14:36:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBEventDispatcher class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/GDBFeatures.st Tue Mar 09 12:29:05 2021 +0000
+++ b/GDBFeatures.st Tue Mar 09 20:49:55 2021 +0000
@@ -96,5 +96,12 @@
"Modified: / 07-02-2018 / 12:51:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!GDBFeatures class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
GDBFeatures initialize!
--- a/Make.proto Tue Mar 09 12:29:05 2021 +0000
+++ b/Make.proto Tue Mar 09 20:49:55 2021 +0000
@@ -168,6 +168,7 @@
$(OUTDIR)GDBConnection.$(O) GDBConnection.$(C) GDBConnection.$(H): GDBConnection.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBDebugger.$(O) GDBDebugger.$(C) GDBDebugger.$(H): GDBDebugger.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommandStatus.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(C) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBEventDispatcher.$(O) GDBEventDispatcher.$(C) GDBEventDispatcher.$(H): GDBEventDispatcher.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(C) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBInvalidObjectError.$(O) GDBInvalidObjectError.$(C) GDBInvalidObjectError.$(H): GDBInvalidObjectError.st $(INCLUDE_TOP)/jv/libgdbs/GDBError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBLocalProcess.$(O) GDBLocalProcess.$(C) GDBLocalProcess.$(H): GDBLocalProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Tue Mar 09 12:29:05 2021 +0000
+++ b/Make.spec Tue Mar 09 20:49:55 2021 +0000
@@ -92,6 +92,7 @@
GDBConnection \
GDBDebugger \
GDBDebuggerObject \
+ GDBEventDispatcher \
GDBInternalEvent \
GDBInvalidObjectError \
GDBLocalProcess \
@@ -311,6 +312,7 @@
$(OUTDIR)GDBConnection.$(O) \
$(OUTDIR)GDBDebugger.$(O) \
$(OUTDIR)GDBDebuggerObject.$(O) \
+ $(OUTDIR)GDBEventDispatcher.$(O) \
$(OUTDIR)GDBInternalEvent.$(O) \
$(OUTDIR)GDBInvalidObjectError.$(O) \
$(OUTDIR)GDBLocalProcess.$(O) \
--- a/abbrev.stc Tue Mar 09 12:29:05 2021 +0000
+++ b/abbrev.stc Tue Mar 09 20:49:55 2021 +0000
@@ -42,6 +42,7 @@
GDBConnection GDBConnection jv:libgdbs 'GDB-Private' 0
GDBDebugger GDBDebugger jv:libgdbs 'GDB-Core' 0
GDBDebuggerObject GDBDebuggerObject jv:libgdbs 'GDB-Core' 0
+GDBEventDispatcher GDBEventDispatcher jv:libgdbs 'GDB-Private' 0
GDBInternalEvent GDBInternalEvent jv:libgdbs 'GDB-Core-Events' 0
GDBInvalidObjectError GDBInvalidObjectError jv:libgdbs 'GDB-Core-Exeptions' 1
GDBLocalProcess GDBLocalProcess jv:libgdbs 'GDB-Private' 0
--- a/bc.mak Tue Mar 09 12:29:05 2021 +0000
+++ b/bc.mak Tue Mar 09 20:49:55 2021 +0000
@@ -115,6 +115,7 @@
$(OUTDIR)GDBConnection.$(O) GDBConnection.$(C) GDBConnection.$(H): GDBConnection.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBDebugger.$(O) GDBDebugger.$(C) GDBDebugger.$(H): GDBDebugger.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommandStatus.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(C) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBEventDispatcher.$(O) GDBEventDispatcher.$(C) GDBEventDispatcher.$(H): GDBEventDispatcher.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(C) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBInvalidObjectError.$(O) GDBInvalidObjectError.$(C) GDBInvalidObjectError.$(H): GDBInvalidObjectError.st $(INCLUDE_TOP)\jv\libgdbs\GDBError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBLocalProcess.$(O) GDBLocalProcess.$(C) GDBLocalProcess.$(H): GDBLocalProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_libgdbs.st Tue Mar 09 12:29:05 2021 +0000
+++ b/jv_libgdbs.st Tue Mar 09 20:49:55 2021 +0000
@@ -159,6 +159,7 @@
GDBConnection
GDBDebugger
GDBDebuggerObject
+ GDBEventDispatcher
GDBInternalEvent
GDBInvalidObjectError
GDBLocalProcess
--- a/libInit.cc Tue Mar 09 12:29:05 2021 +0000
+++ b/libInit.cc Tue Mar 09 20:49:55 2021 +0000
@@ -57,6 +57,7 @@
extern void _GDBConnection_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBDebugger_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBDebuggerObject_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _GDBEventDispatcher_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBInternalEvent_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBInvalidObjectError_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _GDBLocalProcess_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -285,6 +286,7 @@
_GDBConnection_Init(pass,__pRT__,snd);
_GDBDebugger_Init(pass,__pRT__,snd);
_GDBDebuggerObject_Init(pass,__pRT__,snd);
+ _GDBEventDispatcher_Init(pass,__pRT__,snd);
_GDBInternalEvent_Init(pass,__pRT__,snd);
_GDBInvalidObjectError_Init(pass,__pRT__,snd);
_GDBLocalProcess_Init(pass,__pRT__,snd);
--- a/tests/GDBDebuggerTestsR.st Tue Mar 09 12:29:05 2021 +0000
+++ b/tests/GDBDebuggerTestsR.st Tue Mar 09 20:49:55 2021 +0000
@@ -1,7 +1,7 @@
"
jv:libgdbs - GNU Debugger Interface Library
Copyright (C) 2015-now Jan Vrany
-Copyright (C) 2020 LabWare
+Copyright (C) 2020-2021 LabWare
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -34,7 +34,7 @@
"
jv:libgdbs - GNU Debugger Interface Library
Copyright (C) 2015-now Jan Vrany
-Copyright (C) 2020 LabWare
+Copyright (C) 2020-2021 LabWare
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -185,11 +185,11 @@
!
test_basic_01
- | timeToExit eventPumpProcess eventDispatchProcess|
+ | timeToExit eventPumpProcess eventDispatchProcess |
timeToExit := 0.
eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
- eventDispatchProcess := (debugger instVarNamed: #connection) instVarNamed: #eventDispatchProcess.
+ eventDispatchProcess := ((debugger instVarNamed: #connection) instVarNamed: #eventDispatcher) instVarNamed: #process.
self assert: debugger isConnected.
self assert: eventPumpProcess isDead not.
self assert: eventDispatchProcess isDead not.
@@ -207,6 +207,7 @@
"Created: / 24-06-2014 / 09:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 15:29:08 / jv"
"Modified: / 18-10-2018 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 09-03-2021 / 20:53:19 / Jan Vrany <jan.vrany@labware.com>"
!
test_breakpoints_01a