Some more support for stack frames.
--- a/GDBDebugger.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBDebugger.st Wed Sep 17 09:01:56 2014 +0100
@@ -115,26 +115,29 @@
"Sends given command to GDB. If `aBoolean` is true, wait for
command to finish. Otherwise, return immediately."
- | token blocker releaser |
+ | token blocker releaser result |
token := self nextCommandSequnceNumber.
aGDBCommand token: token.
- aBoolean ifTrue:[
+ ^ aBoolean ifTrue:[
releaser := [ :ev |
ev token == token ifTrue:[
- self announcer unsubscribe: releaser.
+ self announcer unsubscribe: releaser.
+ result := ev result.
blocker signal.
]].
blocker := Semaphore new.
self announcer when: GDBCommandResultEvent do: releaser.
connection pushEvent: (GDBCommandEvent new command: aGDBCommand).
blocker wait.
+ result.
] ifFalse:[
connection pushEvent: (GDBCommandEvent new command: aGDBCommand).
+ nil.
]
"Created: / 02-06-2014 / 23:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 04-06-2014 / 09:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-09-2014 / 23:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBDebugger methodsFor:'event handling'!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBFrame.st Wed Sep 17 09:01:56 2014 +0100
@@ -0,0 +1,55 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBDebuggerObject subclass:#GDBFrame
+ instanceVariableNames:'level addr func file fullname line from'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'GDB-Core'
+!
+
+!GDBFrame class methodsFor:'accessing - GDB value descriptors'!
+
+gdbValueDescriptor
+ ^ (super gdbValueDescriptor)
+ define: #level as: Integer;
+ define: #func as: String;
+ define: #file as: String;
+ define: #fullname as: String;
+ define: #line as: Integer;
+ define: #from as: String;
+ define: #addr as: Integer;
+ yourself
+
+ "Created: / 16-09-2014 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBFrame methodsFor:'accessing'!
+
+addr
+ ^ addr
+!
+
+file
+ ^ file
+!
+
+from
+ ^ from
+!
+
+fullname
+ ^ fullname
+!
+
+func
+ ^ func
+!
+
+level
+ ^ level
+!
+
+line
+ ^ line
+! !
+
--- a/GDBMI_stack_info_depth.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBMI_stack_info_depth.st Wed Sep 17 09:01:56 2014 +0100
@@ -59,6 +59,16 @@
^ 'stack-info-depth'
! !
+!GDBMI_stack_info_depth methodsFor:'accessing-descriptors'!
+
+resultValueDescriptor
+ ^ (super resultValueDescriptor)
+ define: #depth as: Integer;
+ yourself
+
+ "Created: / 16-09-2014 / 23:37:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GDBMI_stack_info_depth class methodsFor:'documentation'!
version_HG
--- a/GDBMI_stack_list_frames.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBMI_stack_list_frames.st Wed Sep 17 09:01:56 2014 +0100
@@ -127,3 +127,13 @@
^ 'stack-list-frames'
! !
+!GDBMI_stack_list_frames methodsFor:'accessing-descriptors'!
+
+resultValueDescriptor
+ ^ (super resultValueDescriptor)
+ define: #stack as: Array of: GDBFrame;
+ yourself
+
+ "Created: / 17-09-2014 / 00:00:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBMI_thread_info.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBMI_thread_info.st Wed Sep 17 09:01:56 2014 +0100
@@ -104,3 +104,10 @@
^ 'thread-info'
! !
+!GDBMI_thread_info class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/GDBParser.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBParser.st Wed Sep 17 09:01:56 2014 +0100
@@ -759,6 +759,10 @@
self peek ~~ $] ifTrue:[
list := OrderedCollection new.
[
+ self peek isAlphaNumeric ifTrue:[
+ self parseVariable.
+ self expect: $=.
+ ].
list add: (descriptor parseUsingParser: self)
] doWhile: [
(self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]
@@ -768,6 +772,7 @@
^ list
"Created: / 18-06-2014 / 21:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 17-09-2014 / 08:03:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBParser methodsFor:'streaming'!
--- a/GDBSimulatorResource.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBSimulatorResource.st Wed Sep 17 09:01:56 2014 +0100
@@ -70,22 +70,38 @@
';
>>>
-'5del 1';
+'5-stack-info-depth --thread 1 100';
+
+<<<
+'5^done,depth="2"
+(gdb)
+';
+
+>>>
+'6-stack-list-frames --thread 1 0 1';
+
+<<<
+'6^done,stack=[frame={level="0",addr="0x000107a4",func="factorial",file="factorial.c",fullname="/home/foo/bar/factorial.c",line="4"},frame={level="0",addr="0x000107a0",func="main",file="factorial.c",fullname="/home/foo/bar/factorial.c",line="13"}]
+(gdb)
+';
+
+>>>
+'7del 1';
<<<
'&"del 1\n"
=breakpoint-deleted,id="1"
-5^done
+7^done
(gdb)
';
>>>
-'6c';
+'8c';
<<<
'&"c\n"
~"Continuing.\n"
-6^running
+8^running
*running,thread-id="all"
(gdb)
';
@@ -99,5 +115,7 @@
';
yourself
+
+ "Modified: / 17-09-2014 / 07:36:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
--- a/GDBStack.st Tue Sep 09 12:44:37 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-"{ Package: 'jv:libgdbs' }"
-
-SequenceableCollection subclass:#GDBStack
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'GDB-Core'
-!
-
-!GDBStack class methodsFor:'instance creation'!
-
-newWithThread:arg
- "raise an error: this method should be implemented (TODO)"
-
- ^ self shouldImplement
-
- "Created: / 09-09-2014 / 00:05:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GDBStack class methodsFor:'misc ui support'!
-
-iconInBrowserSymbol
- <resource: #programImage>
-
- ^ #containerClassBrowserIcon
-! !
-
--- a/GDBThread.st Tue Sep 09 12:44:37 2014 +0100
+++ b/GDBThread.st Wed Sep 17 09:01:56 2014 +0100
@@ -39,12 +39,17 @@
stack
self ensureIsStopped.
- stack isNil ifTrue:[
- stack := GDBStack newWithThread: self.
+ 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
"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>"
!
status
@@ -89,7 +94,7 @@
!GDBThread methodsFor:'private'!
ensureIsStopped
- self isStopped ifTrue:[
+ self isStopped ifFalse:[
(GDBInvalidObject newException)
parameter:self;
messageText:'Invalid state (thread is running or already dead)';
@@ -97,6 +102,7 @@
].
"Created: / 09-09-2014 / 00:04:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-09-2014 / 23:51:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBThread methodsFor:'testing'!
--- a/Make.proto Tue Sep 09 12:44:37 2014 +0100
+++ b/Make.proto Wed Sep 17 09:01:56 2014 +0100
@@ -138,7 +138,6 @@
$(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)GDBStack.$(O) GDBStack.$(H): GDBStack.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.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)
@@ -171,6 +170,7 @@
$(OUTDIR)GDBConsoleOutputEvent.$(O) GDBConsoleOutputEvent.$(H): GDBConsoleOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBExecutionEvent.$(O) GDBExecutionEvent.$(H): GDBExecutionEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBExitEvent.$(O) GDBExitEvent.$(H): GDBExitEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBInternalEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBFrame.$(O) GDBFrame.$(H): GDBFrame.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBIntegerValueDescriptor.$(O) GDBIntegerValueDescriptor.$(H): GDBIntegerValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBListValueDescriptor.$(O) GDBListValueDescriptor.$(H): GDBListValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBCompoundValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBLogOutputEvent.$(O) GDBLogOutputEvent.$(H): GDBLogOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Tue Sep 09 12:44:37 2014 +0100
+++ b/Make.spec Wed Sep 17 09:01:56 2014 +0100
@@ -61,7 +61,6 @@
GDBPTY \
GDBProcess \
GDBSessionRecord \
- GDBStack \
GDBThreadStatus \
GDBValueDescriptor \
GDBValueDescriptorError \
@@ -94,6 +93,7 @@
GDBConsoleOutputEvent \
GDBExecutionEvent \
GDBExitEvent \
+ GDBFrame \
GDBIntegerValueDescriptor \
GDBListValueDescriptor \
GDBLogOutputEvent \
@@ -247,7 +247,6 @@
$(OUTDIR_SLASH)GDBPTY.$(O) \
$(OUTDIR_SLASH)GDBProcess.$(O) \
$(OUTDIR_SLASH)GDBSessionRecord.$(O) \
- $(OUTDIR_SLASH)GDBStack.$(O) \
$(OUTDIR_SLASH)GDBThreadStatus.$(O) \
$(OUTDIR_SLASH)GDBValueDescriptor.$(O) \
$(OUTDIR_SLASH)GDBValueDescriptorError.$(O) \
@@ -280,6 +279,7 @@
$(OUTDIR_SLASH)GDBConsoleOutputEvent.$(O) \
$(OUTDIR_SLASH)GDBExecutionEvent.$(O) \
$(OUTDIR_SLASH)GDBExitEvent.$(O) \
+ $(OUTDIR_SLASH)GDBFrame.$(O) \
$(OUTDIR_SLASH)GDBIntegerValueDescriptor.$(O) \
$(OUTDIR_SLASH)GDBListValueDescriptor.$(O) \
$(OUTDIR_SLASH)GDBLogOutputEvent.$(O) \
--- a/abbrev.stc Tue Sep 09 12:44:37 2014 +0100
+++ b/abbrev.stc Wed Sep 17 09:01:56 2014 +0100
@@ -13,7 +13,6 @@
GDBProcess GDBProcess jv:libgdbs 'GDB-Private' 0
GDBSessionRecord GDBSessionRecord jv:libgdbs 'GDB-Private-Simulator' 0
GDBSimulatorResource GDBSimulatorResource jv:libgdbs 'GDB-Resources' 1
-GDBStack GDBStack jv:libgdbs 'GDB-Core' 0
GDBThreadStatus GDBThreadStatus jv:libgdbs 'GDB-Core' 0
GDBValueDescriptor GDBValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
GDBValueDescriptorError GDBValueDescriptorError jv:libgdbs 'GDB-Private-Descriptors' 1
@@ -46,6 +45,7 @@
GDBConsoleOutputEvent GDBConsoleOutputEvent jv:libgdbs 'GDB-Core-Events' 0
GDBExecutionEvent GDBExecutionEvent jv:libgdbs 'GDB-Core-Events' 0
GDBExitEvent GDBExitEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBFrame GDBFrame jv:libgdbs 'GDB-Core' 0
GDBIntegerValueDescriptor GDBIntegerValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
GDBListValueDescriptor GDBListValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
GDBLogOutputEvent GDBLogOutputEvent jv:libgdbs 'GDB-Core-Events' 0
--- a/bc.mak Tue Sep 09 12:44:37 2014 +0100
+++ b/bc.mak Wed Sep 17 09:01:56 2014 +0100
@@ -84,7 +84,6 @@
$(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)GDBStack.$(O) GDBStack.$(H): GDBStack.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
$(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.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)
@@ -117,6 +116,7 @@
$(OUTDIR)GDBConsoleOutputEvent.$(O) GDBConsoleOutputEvent.$(H): GDBConsoleOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBExecutionEvent.$(O) GDBExecutionEvent.$(H): GDBExecutionEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBExitEvent.$(O) GDBExitEvent.$(H): GDBExitEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBInternalEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBFrame.$(O) GDBFrame.$(H): GDBFrame.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBIntegerValueDescriptor.$(O) GDBIntegerValueDescriptor.$(H): GDBIntegerValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBListValueDescriptor.$(O) GDBListValueDescriptor.$(H): GDBListValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBCompoundValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBLogOutputEvent.$(O) GDBLogOutputEvent.$(H): GDBLogOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_libgdbs.st Tue Sep 09 12:44:37 2014 +0100
+++ b/jv_libgdbs.st Wed Sep 17 09:01:56 2014 +0100
@@ -78,7 +78,6 @@
GDBProcess
GDBSessionRecord
(GDBSimulatorResource autoload)
- GDBStack
GDBThreadStatus
GDBValueDescriptor
GDBValueDescriptorError
@@ -111,6 +110,7 @@
GDBConsoleOutputEvent
GDBExecutionEvent
GDBExitEvent
+ GDBFrame
GDBIntegerValueDescriptor
GDBListValueDescriptor
GDBLogOutputEvent
--- a/libInit.cc Tue Sep 09 12:44:37 2014 +0100
+++ b/libInit.cc Wed Sep 17 09:01:56 2014 +0100
@@ -38,7 +38,6 @@
_GDBPTY_Init(pass,__pRT__,snd);
_GDBProcess_Init(pass,__pRT__,snd);
_GDBSessionRecord_Init(pass,__pRT__,snd);
-_GDBStack_Init(pass,__pRT__,snd);
_GDBThreadStatus_Init(pass,__pRT__,snd);
_GDBValueDescriptor_Init(pass,__pRT__,snd);
_GDBValueDescriptorError_Init(pass,__pRT__,snd);
@@ -71,6 +70,7 @@
_GDBConsoleOutputEvent_Init(pass,__pRT__,snd);
_GDBExecutionEvent_Init(pass,__pRT__,snd);
_GDBExitEvent_Init(pass,__pRT__,snd);
+_GDBFrame_Init(pass,__pRT__,snd);
_GDBIntegerValueDescriptor_Init(pass,__pRT__,snd);
_GDBListValueDescriptor_Init(pass,__pRT__,snd);
_GDBLogOutputEvent_Init(pass,__pRT__,snd);
--- a/libgdbs.rc Tue Sep 09 12:44:37 2014 +0100
+++ b/libgdbs.rc Wed Sep 17 09:01:56 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", "Tue, 09 Sep 2014 11:44:03 GMT\0"
+ VALUE "ProductDate", "Wed, 17 Sep 2014 07:57:32 GMT\0"
END
END
--- a/tests/GDBDebuggerTests.st Tue Sep 09 12:44:37 2014 +0100
+++ b/tests/GDBDebuggerTests.st Wed Sep 17 09:01:56 2014 +0100
@@ -99,6 +99,7 @@
self assert: debugger inferiors anElement threads anElement isTerminated not.
self assert: debugger inferiors anElement threads anElement isRunning not.
self assert: debugger inferiors anElement threads anElement isStopped.
+ self assert: debugger inferiors anElement threads anElement stack size == 2.
tgevent := tevent := nil.
@@ -117,7 +118,7 @@
self assert: debugger inferiors anElement threads anElement isStopped not.
"Created: / 07-09-2014 / 13:37:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 07-09-2014 / 23:25:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-09-2014 / 23:47:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBDebuggerTests class methodsFor:'documentation'!
--- a/tests/GDBParserTests.st Tue Sep 09 12:44:37 2014 +0100
+++ b/tests/GDBParserTests.st Wed Sep 17 09:01:56 2014 +0100
@@ -467,6 +467,50 @@
self assert:object properties isEmptyOrNil
"Created: / 19-06-2014 / 09:42:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_typed_object_02a
+ | descriptor object |
+
+ descriptor := GDBObjectValueDescriptor forClass:self class.
+ descriptor define:#prop1 as:Integer.
+ descriptor define:#prop2 as:Boolean.
+ object := (GDBParser on:'[{prop1="123",prop2="y"},{prop1="789",prop2="n"}]')
+ parseValueAsListOf:self class
+ describedBy:descriptor.
+ self assert: object size == 2.
+ self assert: object first class == self class.
+ self assert: object first prop1 == 123.
+ self assert: object first prop2.
+ self assert: object first properties isEmptyOrNil.
+ self assert: object second class == self class.
+ self assert: object second prop1 == 789.
+ self assert: object second prop2 not.
+ self assert: object second properties isEmptyOrNil
+
+ "Created: / 17-09-2014 / 07:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_typed_object_02b
+ | descriptor object |
+
+ descriptor := GDBObjectValueDescriptor forClass:self class.
+ descriptor define:#prop1 as:Integer.
+ descriptor define:#prop2 as:Boolean.
+ object := (GDBParser on:'[object={prop1="123",prop2="y"},object={prop1="789",prop2="n"}]')
+ parseValueAsListOf:self class
+ describedBy:descriptor.
+ self assert: object size == 2.
+ self assert: object first class == self class.
+ self assert: object first prop1 == 123.
+ self assert: object first prop2.
+ self assert: object first properties isEmptyOrNil.
+ self assert: object second class == self class.
+ self assert: object second prop1 == 789.
+ self assert: object second prop2 not.
+ self assert: object second properties isEmptyOrNil
+
+ "Created: / 17-09-2014 / 07:43:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBParserTests class methodsFor:'documentation'!
--- a/tests/tests.rc Tue Sep 09 12:44:37 2014 +0100
+++ b/tests/tests.rc Wed Sep 17 09:01:56 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", "Tue, 09 Sep 2014 11:44:04 GMT\0"
+ VALUE "ProductDate", "Wed, 17 Sep 2014 07:57:34 GMT\0"
END
END