Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 18 Sep 2014 09:32:30 +0100
changeset 41 fb48207b6104
parent 40 0ce76b671515
child 42 499dc5d38707
Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
GDBConnection.st
GDBDebugger.st
GDBEventSubscription.st
GDBFrame.st
GDBMI_var_set_visualizer.st
GDBThread.st
GDBTransientDataHolder.st
Make.proto
Make.spec
abbrev.stc
bc.mak
jv_libgdbs.st
libInit.cc
libgdbs.rc
tests/tests.rc
--- a/GDBConnection.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/GDBConnection.st	Thu Sep 18 09:32:30 2014 +0100
@@ -108,6 +108,10 @@
     "Modified: / 07-09-2014 / 22:38:25 / 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'
@@ -271,6 +275,7 @@
     eventQueueLock := RecursionLock new.
     eventQueueNotifier := Semaphore new.
     eventAnnouncer := Announcer new.
+    eventAnnouncer subscriptionRegistry subscriptionClass: GDBEventSubscription.
     eventAnnouncerInternal := Announcer new.    
     outstandingCommands := Set new.
     recorder := GDBSessionRecorder new.
@@ -278,7 +283,7 @@
     aGDBProcess connection: self.
 
     "Created: / 20-06-2014 / 21:40:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 23-06-2014 / 09:22:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-09-2014 / 00:11:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 release
--- a/GDBDebugger.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/GDBDebugger.st	Thu Sep 18 09:32:30 2014 +0100
@@ -117,6 +117,10 @@
 
     | token blocker releaser result |
 
+    (aBoolean and:[Processor activeProcess == connection eventDispatchProcess]) ifTrue:[ 
+        self error: 'Cannot send commands from within event dispatching process. Would deadlock'.
+    ].
+
     token := self nextCommandSequnceNumber.
     aGDBCommand token: token.
     ^ aBoolean ifTrue:[ 
@@ -137,7 +141,7 @@
     ]
 
     "Created: / 02-06-2014 / 23:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-09-2014 / 23:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-09-2014 / 00:14:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBDebugger methodsFor:'event handling'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBEventSubscription.st	Thu Sep 18 09:32:30 2014 +0100
@@ -0,0 +1,33 @@
+"{ Package: 'jv:libgdbs' }"
+
+StrongSubscription subclass:#GDBEventSubscription
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Private'
+!
+
+!GDBEventSubscription class methodsFor:'private'!
+
+blockFor: anObject withSelector: aSelector
+
+    | args |
+    args := aSelector numArgs.      
+
+    anObject isView ifTrue:[ 
+        args = 0 ifTrue: [ ^[ anObject sensor pushUserEvent: aSelector for: anObject ] ].
+        args = 1 ifTrue: [ ^[ :anAnnouncement | anObject sensor pushUserEvent: aSelector for: anObject withArgument: anAnnouncement ] ].
+        args = 2 ifTrue: [ ^[ :anAnnouncement :anAnnouncer | anObject sensor pushUserEvent: aSelector for: anObject withArguments: (Array with: anAnnouncement with: anAnnouncer) ] ].
+        self error: 'Couldn''t create block'.        
+    ].
+    (anObject isKindOf: ApplicationModel) ifTrue:[ 
+        args = 0 ifTrue: [ ^[ anObject window sensor pushUserEvent: aSelector for: anObject ] ].
+        args = 1 ifTrue: [ ^[ :anAnnouncement | anObject window sensor pushUserEvent: aSelector for: anObject withArgument: anAnnouncement ] ].
+        args = 2 ifTrue: [ ^[ :anAnnouncement :anAnnouncer | anObject window sensor pushUserEvent: aSelector for: anObject withArguments: (Array with: anAnnouncement with: anAnnouncer) ] ].
+        self error: 'Couldn''t create block'.        
+    ].
+    ^ super blockFor: anObject withSelector: aSelector
+
+    "Created: / 18-09-2014 / 00:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBFrame.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/GDBFrame.st	Thu Sep 18 09:32:30 2014 +0100
@@ -53,3 +53,23 @@
     ^ line
 ! !
 
+!GDBFrame methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    aStream nextPutAll:'frame '.
+    level printOn:aStream base: 10 size: 2 fill: Character space.
+    aStream nextPutAll:' '.
+    addr printOn:aStream.
+    aStream nextPutAll:' '.
+    func printOn:aStream.
+    aStream nextPutAll:' ('.
+    file printOn:aStream.
+    aStream nextPutAll:', line: '.
+    line printOn:aStream.
+    aStream nextPutAll:')'.
+
+    "Modified: / 17-09-2014 / 22:15:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBMI_var_set_visualizer.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/GDBMI_var_set_visualizer.st	Thu Sep 18 09:32:30 2014 +0100
@@ -7,9 +7,17 @@
 	category:'GDB-Core-Commands-MI'
 !
 
+
 !GDBMI_var_set_visualizer methodsFor:'accessing'!
 
 operation
 	^ 'var-set-visualizer'
 ! !
 
+!GDBMI_var_set_visualizer class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/GDBThread.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/GDBThread.st	Thu Sep 18 09:32:30 2014 +0100
@@ -40,16 +40,18 @@
 stack
     self ensureIsStopped.
     stack isNil ifTrue:[
-        | result depth |
-        result := debugger send: (GDBMI_stack_info_depth new arguments: { '--thread' . id . 100 }).
-        depth := result propertyAt: #depth.
-        result := debugger send: (GDBMI_stack_list_frames new arguments: { '--thread' . id . 0 . depth - 1 }).
-        stack := result propertyAt: #stack.
+        stack := GDBTransientDataHolder debugger: debugger factory:[ 
+            | result depth |
+            result := debugger send: (GDBMI_stack_info_depth new arguments: { '--thread' . id . 100 }).
+            depth := result propertyAt: #depth.
+            result := debugger send: (GDBMI_stack_list_frames new arguments: { '--thread' . id . 0 . depth - 1 }).
+            result propertyAt: #stack.
+        ].
     ].
-    ^ stack
+    ^ stack value
 
     "Created: / 09-09-2014 / 00:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-09-2014 / 00:02:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-09-2014 / 22:12:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 status
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBTransientDataHolder.st	Thu Sep 18 09:32:30 2014 +0100
@@ -0,0 +1,38 @@
+"{ Package: 'jv:libgdbs' }"
+
+Object subclass:#GDBTransientDataHolder
+	instanceVariableNames:'debugger factory value seqno'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Private'
+!
+
+!GDBTransientDataHolder class methodsFor:'instance creation'!
+
+debugger: aGDBDebugger factory: aBlock
+    ^ self new setDebugger: aGDBDebugger factory: aBlock
+
+    "Created: / 17-09-2014 / 22:08:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBTransientDataHolder methodsFor:'accessing'!
+
+value
+    (value notNil and:[debugger currentInferiorStateSequnceNumber == seqno]) ifTrue:[ 
+        ^ value.
+    ].
+    value := factory value.
+    ^ value
+
+    "Created: / 17-09-2014 / 22:06:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBTransientDataHolder methodsFor:'initialization'!
+
+setDebugger: aGDBDebugger factory: aBlock
+    debugger := aGDBDebugger.
+    factory := aBlock.
+
+    "Created: / 17-09-2014 / 22:08:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/Make.proto	Wed Sep 17 09:01:56 2014 +0100
+++ b/Make.proto	Thu Sep 18 09:32:30 2014 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/announcements -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/announcements -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview2
 
 
 # if you need any additional defines for embedded C code,
@@ -133,12 +133,14 @@
 $(OUTDIR)GDBError.$(O) GDBError.$(H): GDBError.st $(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)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEventSet.$(O) GDBEventSet.$(H): GDBEventSet.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
+$(OUTDIR)GDBEventSubscription.$(O) GDBEventSubscription.$(H): GDBEventSubscription.st $(INCLUDE_TOP)/stx/goodies/announcements/StrongSubscription.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Subscription.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalPipeStream.$(O) GDBInternalPipeStream.$(H): GDBInternalPipeStream.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
 $(OUTDIR)GDBObject.$(O) GDBObject.$(H): GDBObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBPTY.$(O) GDBPTY.$(H): GDBPTY.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBProcess.$(O) GDBProcess.$(H): GDBProcess.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecord.$(O) GDBSessionRecord.$(H): GDBSessionRecord.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
 $(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTransientDataHolder.$(O) GDBTransientDataHolder.$(H): GDBTransientDataHolder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptor.$(O) GDBValueDescriptor.$(H): GDBValueDescriptor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptorError.$(O) GDBValueDescriptorError.$(H): GDBValueDescriptorError.st $(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)jv_libgdbs.$(O) jv_libgdbs.$(H): jv_libgdbs.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
--- a/Make.spec	Wed Sep 17 09:01:56 2014 +0100
+++ b/Make.spec	Thu Sep 18 09:32:30 2014 +0100
@@ -56,12 +56,14 @@
 	GDBError \
 	GDBEvent \
 	GDBEventSet \
+	GDBEventSubscription \
 	GDBInternalPipeStream \
 	GDBObject \
 	GDBPTY \
 	GDBProcess \
 	GDBSessionRecord \
 	GDBThreadStatus \
+	GDBTransientDataHolder \
 	GDBValueDescriptor \
 	GDBValueDescriptorError \
 	jv_libgdbs \
@@ -242,12 +244,14 @@
     $(OUTDIR_SLASH)GDBError.$(O) \
     $(OUTDIR_SLASH)GDBEvent.$(O) \
     $(OUTDIR_SLASH)GDBEventSet.$(O) \
+    $(OUTDIR_SLASH)GDBEventSubscription.$(O) \
     $(OUTDIR_SLASH)GDBInternalPipeStream.$(O) \
     $(OUTDIR_SLASH)GDBObject.$(O) \
     $(OUTDIR_SLASH)GDBPTY.$(O) \
     $(OUTDIR_SLASH)GDBProcess.$(O) \
     $(OUTDIR_SLASH)GDBSessionRecord.$(O) \
     $(OUTDIR_SLASH)GDBThreadStatus.$(O) \
+    $(OUTDIR_SLASH)GDBTransientDataHolder.$(O) \
     $(OUTDIR_SLASH)GDBValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBValueDescriptorError.$(O) \
     $(OUTDIR_SLASH)jv_libgdbs.$(O) \
--- a/abbrev.stc	Wed Sep 17 09:01:56 2014 +0100
+++ b/abbrev.stc	Thu Sep 18 09:32:30 2014 +0100
@@ -7,6 +7,7 @@
 GDBError GDBError jv:libgdbs 'GDB-Core-Exeptions' 1
 GDBEvent GDBEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBEventSet GDBEventSet jv:libgdbs 'GDB-Core-Events' 0
+GDBEventSubscription GDBEventSubscription jv:libgdbs 'GDB-Private' 0
 GDBInternalPipeStream GDBInternalPipeStream jv:libgdbs 'GDB-Support' 0
 GDBObject GDBObject jv:libgdbs 'GDB-Core' 0
 GDBPTY GDBPTY jv:libgdbs 'GDB-Private' 0
@@ -14,6 +15,7 @@
 GDBSessionRecord GDBSessionRecord jv:libgdbs 'GDB-Private-Simulator' 0
 GDBSimulatorResource GDBSimulatorResource jv:libgdbs 'GDB-Resources' 1
 GDBThreadStatus GDBThreadStatus jv:libgdbs 'GDB-Core' 0
+GDBTransientDataHolder GDBTransientDataHolder jv:libgdbs 'GDB-Private' 0
 GDBValueDescriptor GDBValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBValueDescriptorError GDBValueDescriptorError jv:libgdbs 'GDB-Private-Descriptors' 1
 jv_libgdbs jv_libgdbs jv:libgdbs '* Projects & Packages *' 3
--- a/bc.mak	Wed Sep 17 09:01:56 2014 +0100
+++ b/bc.mak	Thu Sep 18 09:32:30 2014 +0100
@@ -34,7 +34,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\announcements -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\announcements -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview2
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -79,12 +79,14 @@
 $(OUTDIR)GDBError.$(O) GDBError.$(H): GDBError.st $(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)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEventSet.$(O) GDBEventSet.$(H): GDBEventSet.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
+$(OUTDIR)GDBEventSubscription.$(O) GDBEventSubscription.$(H): GDBEventSubscription.st $(INCLUDE_TOP)\stx\goodies\announcements\StrongSubscription.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Subscription.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalPipeStream.$(O) GDBInternalPipeStream.$(H): GDBInternalPipeStream.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
 $(OUTDIR)GDBObject.$(O) GDBObject.$(H): GDBObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBPTY.$(O) GDBPTY.$(H): GDBPTY.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBProcess.$(O) GDBProcess.$(H): GDBProcess.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecord.$(O) GDBSessionRecord.$(H): GDBSessionRecord.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
 $(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTransientDataHolder.$(O) GDBTransientDataHolder.$(H): GDBTransientDataHolder.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptor.$(O) GDBValueDescriptor.$(H): GDBValueDescriptor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptorError.$(O) GDBValueDescriptorError.$(H): GDBValueDescriptorError.st $(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)jv_libgdbs.$(O) jv_libgdbs.$(H): jv_libgdbs.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
--- a/jv_libgdbs.st	Wed Sep 17 09:01:56 2014 +0100
+++ b/jv_libgdbs.st	Thu Sep 18 09:32:30 2014 +0100
@@ -43,6 +43,7 @@
 
     ^ #(
         #'stx:libbasic2'    "List - referenced by GDBDebugger>>onThreadGroupAddedEvent:"
+        #'stx:libview2'    "ApplicationModel - referenced by GDBEventSubscription class>>blockFor:withSelector:"
     )
 !
 
@@ -72,6 +73,7 @@
         GDBError
         GDBEvent
         GDBEventSet
+        GDBEventSubscription
         GDBInternalPipeStream
         GDBObject
         GDBPTY
@@ -79,6 +81,7 @@
         GDBSessionRecord
         (GDBSimulatorResource autoload)
         GDBThreadStatus
+        GDBTransientDataHolder
         GDBValueDescriptor
         GDBValueDescriptorError
         #'jv_libgdbs'
--- a/libInit.cc	Wed Sep 17 09:01:56 2014 +0100
+++ b/libInit.cc	Thu Sep 18 09:32:30 2014 +0100
@@ -33,12 +33,14 @@
 _GDBError_Init(pass,__pRT__,snd);
 _GDBEvent_Init(pass,__pRT__,snd);
 _GDBEventSet_Init(pass,__pRT__,snd);
+_GDBEventSubscription_Init(pass,__pRT__,snd);
 _GDBInternalPipeStream_Init(pass,__pRT__,snd);
 _GDBObject_Init(pass,__pRT__,snd);
 _GDBPTY_Init(pass,__pRT__,snd);
 _GDBProcess_Init(pass,__pRT__,snd);
 _GDBSessionRecord_Init(pass,__pRT__,snd);
 _GDBThreadStatus_Init(pass,__pRT__,snd);
+_GDBTransientDataHolder_Init(pass,__pRT__,snd);
 _GDBValueDescriptor_Init(pass,__pRT__,snd);
 _GDBValueDescriptorError_Init(pass,__pRT__,snd);
 _jv_137libgdbs_Init(pass,__pRT__,snd);
--- a/libgdbs.rc	Wed Sep 17 09:01:56 2014 +0100
+++ b/libgdbs.rc	Thu Sep 18 09:32:30 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
       VALUE "ProductName", "LibraryName\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Wed, 17 Sep 2014 07:57:32 GMT\0"
+      VALUE "ProductDate", "Thu, 18 Sep 2014 08:28:22 GMT\0"
     END
 
   END
--- a/tests/tests.rc	Wed Sep 17 09:01:56 2014 +0100
+++ b/tests/tests.rc	Thu Sep 18 09:32:30 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
       VALUE "ProductName", "LibraryName\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Wed, 17 Sep 2014 07:57:34 GMT\0"
+      VALUE "ProductDate", "Thu, 18 Sep 2014 08:28:24 GMT\0"
     END
 
   END