* Re: [PATCH] Add fullname field for MI -break-info command
@ 2006-01-26 11:27 Nick Roberts
2006-01-26 11:44 ` Vladimir Prus
0 siblings, 1 reply; 23+ messages in thread
From: Nick Roberts @ 2006-01-26 11:27 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
+ if (ui_out_is_mi_like_p (uiout))
+ {
+ if (b->loc->loc_type == bp_loc_software_breakpoint ||
+ b->loc->loc_type == bp_loc_hardware_watchpoint)
^^^^^^^^^^
Should this be bp_loc_hardware_breakpoint?
+ {
+ struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
+ symtab_to_fullname (sal.symtab);
+
+ if (sal.symtab->fullname)
+ {
+ annotate_field(10);
+ ui_out_field_string (uiout, "fullname", sal.symtab->fullname);
+ }
+ }
+ }
+
Also, I would move it up breakpoint.c (without the call to annotate_field)
to here:
if (b->source_file)
{
sym = find_pc_sect_function (b->loc->address, b->loc->section);
if (sym)
{
ui_out_text (uiout, "in ");
ui_out_field_string (uiout, "func",
SYMBOL_PRINT_NAME (sym));
ui_out_wrap_hint (uiout, wrap_indent);
ui_out_text (uiout, " at ");
}
ui_out_field_string (uiout, "file", b->source_file);
ui_out_text (uiout, ":");
--->
ui_out_field_int (uiout, "line", b->line_number);
}
to be consistent with the output of print_frame, where the order is
file, fullname, line.
Putting it here might also mean that the test for b->loc->loc_type isn't
needed, but I don't really know.
Nick http://www.inet.net.nz/~nickrob
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-26 11:27 [PATCH] Add fullname field for MI -break-info command Nick Roberts
@ 2006-01-26 11:44 ` Vladimir Prus
0 siblings, 0 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-26 11:44 UTC (permalink / raw)
To: Nick Roberts; +Cc: gdb-patches
On Thursday 26 January 2006 14:26, Nick Roberts wrote:
> + if (ui_out_is_mi_like_p (uiout))
> + {
> + if (b->loc->loc_type == bp_loc_software_breakpoint ||
> + b->loc->loc_type == bp_loc_hardware_watchpoint)
> ^^^^^^^^^^
> Should this be bp_loc_hardware_breakpoint?
You're right, it's a typo.
> + }
> + }
> +
>
> Also, I would move it up breakpoint.c (without the call to annotate_field)
> to here:
>
> if (b->source_file)
> {
> sym = find_pc_sect_function (b->loc->address, b->loc->section);
> if (sym)
> {
> ui_out_text (uiout, "in ");
> ui_out_field_string (uiout, "func",
> SYMBOL_PRINT_NAME (sym));
> ui_out_wrap_hint (uiout, wrap_indent);
> ui_out_text (uiout, " at ");
> }
> ui_out_field_string (uiout, "file", b->source_file);
> ui_out_text (uiout, ":");
>
> --->
>
> ui_out_field_int (uiout, "line", b->line_number);
> }
>
> to be consistent with the output of print_frame, where the order is
> file, fullname, line.
Makes sense.
> Putting it here might also mean that the test for b->loc->loc_type isn't
> needed, but I don't really know.
Can anybody comment on this?
Thanks,
Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-02-02 7:07 ` Vladimir Prus
@ 2006-02-06 21:55 ` Daniel Jacobowitz
0 siblings, 0 replies; 23+ messages in thread
From: Daniel Jacobowitz @ 2006-02-06 21:55 UTC (permalink / raw)
To: gdb-patches
On Thu, Feb 02, 2006 at 10:06:58AM +0300, Vladimir Prus wrote:
> Changelog entry:
>
> 2006-02-02 Vladimir Prus <ghost@cs.msu.su>
>
> * breakpoint.c (print_one_breakpoint): For MI-like UI, output
> 'fullname' field.
> * doc/gdb.texinit: Document the 'fullname' field in -break-list
> output.
> * testsuite/gdb.mi/mi-break.exp: Test for the 'fullname' field.
> * testsuite/gdb.mi/mi2-break.exp: Likewise
I've checked this in. FYI, here's what the ChangeLog entries I used
looked like; testsuite and doc have their own.
+2006-02-06 Vladimir Prus <ghost@cs.msu.su>
+
+ * breakpoint.c (print_one_breakpoint): For MI-like UI, output
+ fullname field.
+
+2006-02-06 Vladimir Prus <ghost@cs.msu.su>
+
+ * gdb.texinfo (Breakpoint table commands): Document the fullname
+ field in -break-list output.
+
+2006-02-06 Vladimir Prus <ghost@cs.msu.su>
+
+ * gdb.mi/mi-break.exp, gdb.mi/mi2-break.exp: Test for the fullname
+ field.
+
Did I already ask you about a copyright assignment? We don't need one
for this patch, but may for future patches.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-02-01 22:32 ` Daniel Jacobowitz
@ 2006-02-02 7:07 ` Vladimir Prus
2006-02-06 21:55 ` Daniel Jacobowitz
0 siblings, 1 reply; 23+ messages in thread
From: Vladimir Prus @ 2006-02-02 7:07 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1786 bytes --]
Daniel Jacobowitz wrote:
> On Sat, Jan 28, 2006 at 04:09:42PM +0300, Vladimir Prus wrote:
>> Revised patch attached. I did verify that it causes no regressions for MI
>> tests.
>>
>>
>> Note, however, that I could not verify that it does not cause any
>> regressions globally, because something seems wrong with my configuration
>> or the test system. Sporadically, I get errors like this:
>
> What system are you testing on? Presumably a bug in the host or in the
> port of expect to the host.
(Almost) vanilla Debian Sarge on x86 (dual Xeon). Maybe this can have
something to do with dual-cpu system?
> I've verified no regressions on x86_64-pc-linux-gnu.
>
> The patch looks OK. There's a couple of formatting errors, and
> it needs ChangeLog entries, and then it can be applied.
>
> Oh, and Nick was right: you don't need the loc_type check any more.
> Everything in that case statement will be a breakpoint and have
> a valid address.
OK.
>
>> + struct symtab_and_line sal = find_pc_line
>> (b->loc->address, 0);
>> + char* fullname = symtab_to_fullname (sal.symtab);
>
> char *fullname, please, for consistency.
>
>> + if (fullname)
>> + {
>> + ui_out_field_string (uiout, "fullname", fullname);
>> + }
>
> Don't need the extra braces here.
Ok.
Revised patch attached.
Changelog entry:
2006-02-02 Vladimir Prus <ghost@cs.msu.su>
* breakpoint.c (print_one_breakpoint): For MI-like UI, output
'fullname' field.
* doc/gdb.texinit: Document the 'fullname' field in -break-list
output.
* testsuite/gdb.mi/mi-break.exp: Test for the 'fullname' field.
* testsuite/gdb.mi/mi2-break.exp: Likewise
- Volodya
[-- Attachment #2: breakpoint_info_fullname.diff --]
[-- Type: text/plain, Size: 27994 bytes --]
? .gdbinit
? Makefile
? ada-exp.c
? ada-lex.c
? break_info_fullname.diff
? breakpoint2.diff
? breakpoint_info_fullname.diff
? c-exp.c
? config.cache
? config.h
? config.log
? config.status
? cp-name-parser.c
? f-exp.c
? gdb
? gdbtui
? infrun.new.c
? init.c
? jv-exp.c
? m2-exp.c
? objc-exp.c
? observer.h
? observer.inc
? p-exp.c
? stamp-h
? version.c
? doc/Makefile
? doc/config.log
? doc/config.status
? gdbserver/Makefile
? gdbserver/config.h
? gdbserver/config.log
? gdbserver/config.status
? gdbserver/gdbreplay
? gdbserver/gdbserver
? gdbserver/reg-i386-linux.c
? gdbserver/stamp-h
? gdbtk/library/images2/console.gif
? testsuite/.gdb_history
? testsuite/Makefile
? testsuite/bigcore.corefile
? testsuite/config.log
? testsuite/config.status
? testsuite/foobar.baz
? testsuite/gdb.log
? testsuite/gdb.original.sum
? testsuite/gdb.original_mi.sum
? testsuite/gdb.sum
? testsuite/gdb.with_my_changes.sum
? testsuite/pi.txt
? testsuite/site.exp
? testsuite/gdb.ada/Makefile
? testsuite/gdb.ada/array_return/b~p.adb
? testsuite/gdb.ada/array_return/b~p.ads
? testsuite/gdb.ada/array_return/b~p.ali
? testsuite/gdb.ada/array_return/p
? testsuite/gdb.ada/array_return/p.ali
? testsuite/gdb.ada/array_return/pck.ali
? testsuite/gdb.ada/arrayidx/b~p.adb
? testsuite/gdb.ada/arrayidx/b~p.ads
? testsuite/gdb.ada/arrayidx/b~p.ali
? testsuite/gdb.ada/arrayidx/p
? testsuite/gdb.ada/arrayidx/p.ali
? testsuite/gdb.ada/exec_changed/b~first.adb
? testsuite/gdb.ada/exec_changed/b~first.ads
? testsuite/gdb.ada/exec_changed/b~first.ali
? testsuite/gdb.ada/exec_changed/b~second.adb
? testsuite/gdb.ada/exec_changed/b~second.ads
? testsuite/gdb.ada/exec_changed/b~second.ali
? testsuite/gdb.ada/exec_changed/common
? testsuite/gdb.ada/exec_changed/first
? testsuite/gdb.ada/exec_changed/first.ali
? testsuite/gdb.ada/exec_changed/second.ali
? testsuite/gdb.ada/fixed_points/b~fixed_points.adb
? testsuite/gdb.ada/fixed_points/b~fixed_points.ads
? testsuite/gdb.ada/fixed_points/b~fixed_points.ali
? testsuite/gdb.ada/fixed_points/fixed_points
? testsuite/gdb.ada/fixed_points/fixed_points.ali
? testsuite/gdb.ada/null_record/bar.ali
? testsuite/gdb.ada/null_record/b~null_record.adb
? testsuite/gdb.ada/null_record/b~null_record.ads
? testsuite/gdb.ada/null_record/b~null_record.ali
? testsuite/gdb.ada/null_record/null_record
? testsuite/gdb.ada/null_record/null_record.ali
? testsuite/gdb.ada/packed_array/b~pa.adb
? testsuite/gdb.ada/packed_array/b~pa.ads
? testsuite/gdb.ada/packed_array/b~pa.ali
? testsuite/gdb.ada/packed_array/pa
? testsuite/gdb.ada/packed_array/pa.ali
? testsuite/gdb.ada/start/b~dummy.adb
? testsuite/gdb.ada/start/b~dummy.ads
? testsuite/gdb.ada/start/b~dummy.ali
? testsuite/gdb.ada/start/dummy
? testsuite/gdb.ada/start/dummy.ali
? testsuite/gdb.arch/Makefile
? testsuite/gdb.arch/i386-prologue
? testsuite/gdb.arch/i386-sse
? testsuite/gdb.arch/i386-unwind
? testsuite/gdb.asm/Makefile
? testsuite/gdb.asm/asm-source
? testsuite/gdb.base/.debug
? testsuite/gdb.base/Makefile
? testsuite/gdb.base/advance
? testsuite/gdb.base/all-types
? testsuite/gdb.base/annota1
? testsuite/gdb.base/annota3
? testsuite/gdb.base/args
? testsuite/gdb.base/arrayidx
? testsuite/gdb.base/async
? testsuite/gdb.base/attach
? testsuite/gdb.base/attach2
? testsuite/gdb.base/auxv
? testsuite/gdb.base/auxv.gcore
? testsuite/gdb.base/bang!
? testsuite/gdb.base/bfp-test
? testsuite/gdb.base/bigcore
? testsuite/gdb.base/bigcore.corefile
? testsuite/gdb.base/bitfields
? testsuite/gdb.base/bitfields2
? testsuite/gdb.base/break
? testsuite/gdb.base/breako2
? testsuite/gdb.base/call-ar-st
? testsuite/gdb.base/call-rt-st
? testsuite/gdb.base/call-sc-tc
? testsuite/gdb.base/call-sc-td
? testsuite/gdb.base/call-sc-te
? testsuite/gdb.base/call-sc-tf
? testsuite/gdb.base/call-sc-ti
? testsuite/gdb.base/call-sc-tl
? testsuite/gdb.base/call-sc-tld
? testsuite/gdb.base/call-sc-tll
? testsuite/gdb.base/call-sc-ts
? testsuite/gdb.base/call-strs
? testsuite/gdb.base/callfuncs
? testsuite/gdb.base/charset
? testsuite/gdb.base/checkpoint
? testsuite/gdb.base/chng-syms
? testsuite/gdb.base/commands
? testsuite/gdb.base/complex
? testsuite/gdb.base/consecutive
? testsuite/gdb.base/constvars
? testsuite/gdb.base/corefile
? testsuite/gdb.base/coremaker
? testsuite/gdb.base/cursal
? testsuite/gdb.base/cvexpr
? testsuite/gdb.base/dbx-test
? testsuite/gdb.base/display
? testsuite/gdb.base/dump
? testsuite/gdb.base/ending-run
? testsuite/gdb.base/execd-prog
? testsuite/gdb.base/exprs
? testsuite/gdb.base/fileio
? testsuite/gdb.base/foll-exec
? testsuite/gdb.base/foll-fork
? testsuite/gdb.base/foll-vfork
? testsuite/gdb.base/freebpcmd
? testsuite/gdb.base/funcargs
? testsuite/gdb.base/gcore
? testsuite/gdb.base/gcore.test
? testsuite/gdb.base/gdb1090
? testsuite/gdb.base/gdb1250
? testsuite/gdb.base/gdb1555-main
? testsuite/gdb.base/gdb1821
? testsuite/gdb.base/huge
? testsuite/gdb.base/int-type
? testsuite/gdb.base/interrupt
? testsuite/gdb.base/jump
? testsuite/gdb.base/langs
? testsuite/gdb.base/lineinc
? testsuite/gdb.base/list
? testsuite/gdb.base/long_long
? testsuite/gdb.base/macscp
? testsuite/gdb.base/mips_pro
? testsuite/gdb.base/miscexprs
? testsuite/gdb.base/multi-forks
? testsuite/gdb.base/nodebug
? testsuite/gdb.base/opaque
? testsuite/gdb.base/pc-fp
? testsuite/gdb.base/pending
? testsuite/gdb.base/pendshr.sl
? testsuite/gdb.base/pointers
? testsuite/gdb.base/printcmds
? testsuite/gdb.base/psymtab
? testsuite/gdb.base/ptr-typedef
? testsuite/gdb.base/ptype
? testsuite/gdb.base/recurse
? testsuite/gdb.base/reread
? testsuite/gdb.base/reread1
? testsuite/gdb.base/restore
? testsuite/gdb.base/return
? testsuite/gdb.base/return2
? testsuite/gdb.base/run
? testsuite/gdb.base/savedregs
? testsuite/gdb.base/scope
? testsuite/gdb.base/sep
? testsuite/gdb.base/sepdebug
? testsuite/gdb.base/sepdebug.debug
? testsuite/gdb.base/sepdebug.stripped
? testsuite/gdb.base/setshow
? testsuite/gdb.base/setvar
? testsuite/gdb.base/shmain
? testsuite/gdb.base/shr1.sl
? testsuite/gdb.base/shr2.sl
? testsuite/gdb.base/shreloc
? testsuite/gdb.base/shreloc.txt
? testsuite/gdb.base/shreloc1.sl
? testsuite/gdb.base/shreloc2.sl
? testsuite/gdb.base/sigall
? testsuite/gdb.base/sigaltstack
? testsuite/gdb.base/sigbpt
? testsuite/gdb.base/siginfo
? testsuite/gdb.base/signals
? testsuite/gdb.base/signull
? testsuite/gdb.base/sigrepeat
? testsuite/gdb.base/sigstep
? testsuite/gdb.base/sizeof
? testsuite/gdb.base/so-impl-ld
? testsuite/gdb.base/solib1.sl
? testsuite/gdb.base/start
? testsuite/gdb.base/step-line
? testsuite/gdb.base/step-test
? testsuite/gdb.base/store
? testsuite/gdb.base/structs-tc
? testsuite/gdb.base/structs-tc-td
? testsuite/gdb.base/structs-tc-tf
? testsuite/gdb.base/structs-tc-ti
? testsuite/gdb.base/structs-tc-tl
? testsuite/gdb.base/structs-tc-tld
? testsuite/gdb.base/structs-tc-tll
? testsuite/gdb.base/structs-tc-ts
? testsuite/gdb.base/structs-td
? testsuite/gdb.base/structs-td-tc
? testsuite/gdb.base/structs-td-tf
? testsuite/gdb.base/structs-tf
? testsuite/gdb.base/structs-tf-tc
? testsuite/gdb.base/structs-tf-td
? testsuite/gdb.base/structs-ti
? testsuite/gdb.base/structs-ti-tc
? testsuite/gdb.base/structs-tl
? testsuite/gdb.base/structs-tl-tc
? testsuite/gdb.base/structs-tld
? testsuite/gdb.base/structs-tld-tc
? testsuite/gdb.base/structs-tll
? testsuite/gdb.base/structs-tll-tc
? testsuite/gdb.base/structs-ts
? testsuite/gdb.base/structs-ts-tc
? testsuite/gdb.base/structs2
? testsuite/gdb.base/twice-tmp
? testsuite/gdb.base/twice-tmp.c
? testsuite/gdb.base/unload
? testsuite/gdb.base/unloadshr.sl
? testsuite/gdb.base/varargs
? testsuite/gdb.base/vforked-prog
? testsuite/gdb.base/watchpoint
? testsuite/gdb.base/whatis
? testsuite/gdb.cp/Makefile
? testsuite/gdb.cp/annota2
? testsuite/gdb.cp/annota3
? testsuite/gdb.cp/anon-union
? testsuite/gdb.cp/breakpoint
? testsuite/gdb.cp/bs15503
? testsuite/gdb.cp/casts
? testsuite/gdb.cp/class2
? testsuite/gdb.cp/classes
? testsuite/gdb.cp/cplusfuncs
? testsuite/gdb.cp/cttiadd
? testsuite/gdb.cp/derivation
? testsuite/gdb.cp/exception
? testsuite/gdb.cp/gdb1355
? testsuite/gdb.cp/hang
? testsuite/gdb.cp/inherit
? testsuite/gdb.cp/local
? testsuite/gdb.cp/m-data
? testsuite/gdb.cp/m-static
? testsuite/gdb.cp/member-ptr
? testsuite/gdb.cp/method
? testsuite/gdb.cp/misc
? testsuite/gdb.cp/namespace
? testsuite/gdb.cp/overload
? testsuite/gdb.cp/ovldbreak
? testsuite/gdb.cp/pr-1023
? testsuite/gdb.cp/pr-1210
? testsuite/gdb.cp/pr-574
? testsuite/gdb.cp/printmethod
? testsuite/gdb.cp/psmang
? testsuite/gdb.cp/ref-types
? testsuite/gdb.cp/rtti
? testsuite/gdb.cp/templates
? testsuite/gdb.cp/try_catch
? testsuite/gdb.cp/userdef
? testsuite/gdb.cp/virtfunc
? testsuite/gdb.disasm/Makefile
? testsuite/gdb.dwarf2/Makefile
? testsuite/gdb.dwarf2/dup-psym.x
? testsuite/gdb.dwarf2/dw2-basic.x
? testsuite/gdb.dwarf2/dw2-intercu.x
? testsuite/gdb.dwarf2/dw2-intermix.x
? testsuite/gdb.dwarf2/mac-fileno.x
? testsuite/gdb.fortran/Makefile
? testsuite/gdb.fortran/array-element
? testsuite/gdb.fortran/subarray
? testsuite/gdb.java/Makefile
? testsuite/gdb.mi/A.diff
? testsuite/gdb.mi/B.diff
? testsuite/gdb.mi/Makefile
? testsuite/gdb.mi/basics
? testsuite/gdb.mi/gdb.log
? testsuite/gdb.mi/gdb.sum
? testsuite/gdb.mi/gdb669-pthreads
? testsuite/gdb.mi/gdb701
? testsuite/gdb.mi/gdb792
? testsuite/gdb.mi/mi-console
? testsuite/gdb.mi/mi-pthreads
? testsuite/gdb.mi/mi-read-memory
? testsuite/gdb.mi/mi-stack
? testsuite/gdb.mi/mi-syn-frame
? testsuite/gdb.mi/mi-var-child
? testsuite/gdb.mi/mi2-pthreads
? testsuite/gdb.mi/testrun.log
? testsuite/gdb.mi/testrun.sum
? testsuite/gdb.mi/until
? testsuite/gdb.mi/var-cmd
? testsuite/gdb.objc/Makefile
? testsuite/gdb.server/Makefile
? testsuite/gdb.server/server
? testsuite/gdb.stabs/Makefile
? testsuite/gdb.stabs/config.log
? testsuite/gdb.stabs/config.status
? testsuite/gdb.stabs/exclfwd
? testsuite/gdb.threads/Makefile
? testsuite/gdb.threads/bp_in_thread
? testsuite/gdb.threads/gcore-pthreads
? testsuite/gdb.threads/gcore.test
? testsuite/gdb.threads/killed
? testsuite/gdb.threads/linux-dp
? testsuite/gdb.threads/manythreads
? testsuite/gdb.threads/print-threads
? testsuite/gdb.threads/pthread_cond_wait
? testsuite/gdb.threads/pthreads
? testsuite/gdb.threads/schedlock
? testsuite/gdb.threads/staticthreads
? testsuite/gdb.threads/switch-threads
? testsuite/gdb.threads/thread-specific
? testsuite/gdb.threads/thread_check
? testsuite/gdb.threads/threadapply
? testsuite/gdb.threads/tls
? testsuite/gdb.threads/tls-main
? testsuite/gdb.threads/watchthreads
? testsuite/gdb.trace/Makefile
? testsuite/gdb.trace/actions
? testsuite/gdb.trace/circ
? testsuite/gdb.trace/collection
? testsuite/gdb.trace/limits
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.220
diff -u -r1.220 breakpoint.c
--- breakpoint.c 16 Jan 2006 12:55:18 -0000 1.220
+++ breakpoint.c 2 Feb 2006 07:02:54 -0000
@@ -3506,6 +3506,16 @@
}
ui_out_field_string (uiout, "file", b->source_file);
ui_out_text (uiout, ":");
+
+ if (ui_out_is_mi_like_p (uiout))
+ {
+ struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
+ char *fullname = symtab_to_fullname (sal.symtab);
+
+ if (fullname)
+ ui_out_field_string (uiout, "fullname", fullname);
+ }
+
ui_out_field_int (uiout, "line", b->line_number);
}
else if (b->pending)
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.309
diff -u -r1.309 gdb.texinfo
--- doc/gdb.texinfo 23 Jan 2006 16:28:37 -0000 1.309
+++ doc/gdb.texinfo 2 Feb 2006 07:02:57 -0000
@@ -17588,7 +17588,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c"line="5",times="0",
ignore="3"@}]@}
(@value{GDBP})
@end smallexample
@@ -17636,7 +17636,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",cond="1",
times="0",ignore="3"@}]@}
(@value{GDBP})
@end smallexample
@@ -17708,7 +17708,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -17743,7 +17743,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -17849,9 +17849,9 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
+addr="0x0001072c", func="main",file="recursive2.c",fullname="/home/foo/recursive2.c,"line="4",times="0"@},
bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
-addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}]@}
+addr="0x00010774",func="foo",file="recursive2.c",fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
(@value{GDBP})
-break-insert -r foo.*
~int foo(int, int);
@@ -17911,7 +17911,7 @@
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
-addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}]@}
+addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",line="13",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -18021,7 +18021,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="0"@}]@}
(@value{GDBP})
@@ -18043,7 +18043,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="-5"@}]@}
(@value{GDBP})
@@ -18065,7 +18065,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
(@value{GDBP})
@end smallexample
Index: testsuite/gdb.mi/mi-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-break.exp,v
retrieving revision 1.7
diff -u -r1.7 mi-break.exp
--- testsuite/gdb.mi/mi-break.exp 13 Aug 2004 16:21:29 -0000 1.7
+++ testsuite/gdb.mi/mi-break.exp 2 Feb 2006 07:02:57 -0000
@@ -56,6 +56,8 @@
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
+set fullname "fullname=\"${fullname_syntax}${srcfile}\""
+
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -65,6 +67,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -76,24 +79,24 @@
# -break-list
mi_gdb_test "222-break-insert -t main" \
- "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \
+ "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
- "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \
+ "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \
- "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_head\",times=\"0\"\}" \
+ "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_head\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:\$line_callee3_body"
# Getting the quoting right is tricky. That is "\"<file>\":$line_callee4_head"
mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \
- "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_head\",times=\"0\"\}" \
+ "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_head\",times=\"0\"\}" \
"insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"
mi_gdb_test "666-break-list" \
- "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
+ "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
Index: testsuite/gdb.mi/mi2-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-break.exp,v
retrieving revision 1.3
diff -u -r1.3 mi2-break.exp
--- testsuite/gdb.mi/mi2-break.exp 13 Aug 2004 16:21:29 -0000 1.3
+++ testsuite/gdb.mi/mi2-break.exp 2 Feb 2006 07:02:57 -0000
@@ -56,6 +56,8 @@
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
+set fullname "fullname=\"${fullname_syntax}${srcfile}\""
+
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -65,6 +67,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -76,24 +79,24 @@
# -break-list
mi_gdb_test "222-break-insert -t main" \
- "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \
+ "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
- "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \
+ "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \
- "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_head\",times=\"0\"\}" \
+ "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_head\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:\$line_callee3_body"
# Getting the quoting right is tricky. That is "\"<file>\":$line_callee4_head"
mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \
- "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_head\",times=\"0\"\}" \
+ "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_head\",times=\"0\"\}" \
"insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"
mi_gdb_test "666-break-list" \
- "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
+ "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
@@ -110,6 +113,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -122,27 +126,27 @@
setup_xfail "*-*-*"
mi_gdb_test "122-break-insert -r main" \
- "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_main_body\"\}" \
+ "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_main_body\"\}" \
"break-insert -r operation"
setup_xfail "*-*-*"
mi_gdb_test "133-break-insert -r callee2" \
- "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\}" \
+ "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\}" \
"insert breakpoint with regexp callee2"
setup_xfail "*-*-*"
mi_gdb_test "144-break-insert -r callee" \
- "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_body\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_body\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_body\"\}" \
+ "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
"insert breakpoint with regexp callee"
setup_xfail "*-*-*"
mi_gdb_test "155-break-insert -r \.\*llee" \
- "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_body\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_body\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_body\"\}" \
+ "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
"insert breakpoint with regexp .*llee"
setup_xfail "*-*-*"
mi_gdb_test "166-break-list" \
- "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+ "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
"list of breakpoints"
mi_gdb_test "177-break-delete" \
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-28 13:10 ` Vladimir Prus
@ 2006-02-01 22:32 ` Daniel Jacobowitz
2006-02-02 7:07 ` Vladimir Prus
0 siblings, 1 reply; 23+ messages in thread
From: Daniel Jacobowitz @ 2006-02-01 22:32 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
On Sat, Jan 28, 2006 at 04:09:42PM +0300, Vladimir Prus wrote:
> Revised patch attached. I did verify that it causes no regressions for MI
> tests.
>
>
> Note, however, that I could not verify that it does not cause any
> regressions globally, because something seems wrong with my configuration
> or the test system. Sporadically, I get errors like this:
What system are you testing on? Presumably a bug in the host or in the
port of expect to the host.
I've verified no regressions on x86_64-pc-linux-gnu.
The patch looks OK. There's a couple of formatting errors, and
it needs ChangeLog entries, and then it can be applied.
Oh, and Nick was right: you don't need the loc_type check any more.
Everything in that case statement will be a breakpoint and have
a valid address.
> + struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
> + char* fullname = symtab_to_fullname (sal.symtab);
char *fullname, please, for consistency.
> + if (fullname)
> + {
> + ui_out_field_string (uiout, "fullname", fullname);
> + }
Don't need the extra braces here.
> @@ -75,25 +78,27 @@
> # -break-insert -t srcfile:$line_callee4_head
> # -break-list
>
> +
> +
> mi_gdb_test "222-break-insert -t main" \
> - "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \
> + "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
> "break-insert -t operation"
And don't need the extra blank lines.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-24 16:51 ` Bob Rossi
2006-01-25 11:07 ` Vladimir Prus
@ 2006-01-28 13:10 ` Vladimir Prus
2006-02-01 22:32 ` Daniel Jacobowitz
1 sibling, 1 reply; 23+ messages in thread
From: Vladimir Prus @ 2006-01-28 13:10 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1441 bytes --]
Bob Rossi wrote:
> On Tue, Jan 24, 2006 at 07:32:15PM +0300, Vladimir Prus wrote:
>>
>> Hello!
>>
>> The attached patch adds the "fullname" field to the output of MI
>> -break-info command.
>
> The patch seems good to me at first glance. However, you should also
> update the testsuite, and send in the patch for that as well.
>
> Also, don't forget about the documentation.
Revised patch attached. I did verify that it causes no regressions for MI
tests.
Note, however, that I could not verify that it does not cause any
regressions globally, because something seems wrong with my configuration
or the test system. Sporadically, I get errors like this:
Running ../.././gdb/testsuite/gdb.base/code-expr.exp ...
gdb compile failed, spawn failed
WARNING: Testcase compile failed, so all tests in this file will
automatically fail.
WARNING: remote_expect statement without a default case?!
ERROR: couldn't
load /space/p2/ghost/build/gdb/gdb/testsuite/gdb.base/cvexpr
into /space/p2/ghost/build/gdb/gdb/testsuite/../../gdb/gdb (end of file).
FAIL: gdb.base/code-expr.exp: set print address off
Or messages like:
gdb compile failed, gcc: fork: Resource temporarily unavailable
When running specific tests, the errors don't reproduce. Sometimes the
errors disappear by themself. So, it looks like testsystem needs more
resources (pids?) than is allowed by rlimit or something like that.
- Volodya
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: breakpoint_info_fullname.diff --]
[-- Type: text/x-diff; name="breakpoint_info_fullname.diff", Size: 18132 bytes --]
? testsuite/gdb.mi/A.diff
? testsuite/gdb.mi/B.diff
? testsuite/gdb.mi/Makefile
? testsuite/gdb.mi/basics
? testsuite/gdb.mi/gdb.log
? testsuite/gdb.mi/gdb.sum
? testsuite/gdb.mi/gdb669-pthreads
? testsuite/gdb.mi/gdb701
? testsuite/gdb.mi/gdb792
? testsuite/gdb.mi/mi-console
? testsuite/gdb.mi/mi-pthreads
? testsuite/gdb.mi/mi-read-memory
? testsuite/gdb.mi/mi-stack
? testsuite/gdb.mi/mi-syn-frame
? testsuite/gdb.mi/mi-var-child
? testsuite/gdb.mi/mi2-pthreads
? testsuite/gdb.mi/testrun.log
? testsuite/gdb.mi/testrun.sum
? testsuite/gdb.mi/until
? testsuite/gdb.mi/var-cmd
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.220
diff -u -r1.220 breakpoint.c
--- breakpoint.c 16 Jan 2006 12:55:18 -0000 1.220
+++ breakpoint.c 28 Jan 2006 13:05:38 -0000
@@ -3506,6 +3506,22 @@
}
ui_out_field_string (uiout, "file", b->source_file);
ui_out_text (uiout, ":");
+
+ if (ui_out_is_mi_like_p (uiout))
+ {
+ if (b->loc->loc_type == bp_loc_software_breakpoint
+ || b->loc->loc_type == bp_loc_hardware_breakpoint)
+ {
+ struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
+ char* fullname = symtab_to_fullname (sal.symtab);
+
+ if (fullname)
+ {
+ ui_out_field_string (uiout, "fullname", fullname);
+ }
+ }
+ }
+
ui_out_field_int (uiout, "line", b->line_number);
}
else if (b->pending)
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.309
diff -u -r1.309 gdb.texinfo
--- doc/gdb.texinfo 23 Jan 2006 16:28:37 -0000 1.309
+++ doc/gdb.texinfo 28 Jan 2006 13:05:40 -0000
@@ -17588,7 +17588,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c"line="5",times="0",
ignore="3"@}]@}
(@value{GDBP})
@end smallexample
@@ -17636,7 +17636,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",cond="1",
times="0",ignore="3"@}]@}
(@value{GDBP})
@end smallexample
@@ -17708,7 +17708,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -17743,7 +17743,7 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -17849,9 +17849,9 @@
@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
+addr="0x0001072c", func="main",file="recursive2.c",fullname="/home/foo/recursive2.c,"line="4",times="0"@},
bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
-addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}]@}
+addr="0x00010774",func="foo",file="recursive2.c",fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
(@value{GDBP})
-break-insert -r foo.*
~int foo(int, int);
@@ -17911,7 +17911,7 @@
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
-addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}]@}
+addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",line="13",times="0"@}]@}
(@value{GDBP})
@end smallexample
@@ -18021,7 +18021,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="0"@}]@}
(@value{GDBP})
@@ -18043,7 +18043,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="-5"@}]@}
(@value{GDBP})
@@ -18065,7 +18065,7 @@
@{width="40",alignment="2",col_name="what",colhdr="What"@}],
body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x00010734",func="callee4",
-file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
(@value{GDBP})
@end smallexample
Index: testsuite/gdb.mi/mi-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-break.exp,v
retrieving revision 1.7
diff -u -r1.7 mi-break.exp
--- testsuite/gdb.mi/mi-break.exp 13 Aug 2004 16:21:29 -0000 1.7
+++ testsuite/gdb.mi/mi-break.exp 28 Jan 2006 13:05:40 -0000
@@ -56,6 +56,8 @@
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
+set fullname "fullname=\"${fullname_syntax}${srcfile}\""
+
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -65,6 +67,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -75,25 +78,27 @@
# -break-insert -t srcfile:$line_callee4_head
# -break-list
+
+
mi_gdb_test "222-break-insert -t main" \
- "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \
+ "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
- "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \
+ "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \
- "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_head\",times=\"0\"\}" \
+ "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_head\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:\$line_callee3_body"
# Getting the quoting right is tricky. That is "\"<file>\":$line_callee4_head"
mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \
- "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_head\",times=\"0\"\}" \
+ "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_head\",times=\"0\"\}" \
"insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"
mi_gdb_test "666-break-list" \
- "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
+ "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
Index: testsuite/gdb.mi/mi2-break.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-break.exp,v
retrieving revision 1.3
diff -u -r1.3 mi2-break.exp
--- testsuite/gdb.mi/mi2-break.exp 13 Aug 2004 16:21:29 -0000 1.3
+++ testsuite/gdb.mi/mi2-break.exp 28 Jan 2006 13:05:40 -0000
@@ -56,6 +56,8 @@
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
+set fullname "fullname=\"${fullname_syntax}${srcfile}\""
+
proc test_tbreak_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -65,6 +67,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -76,24 +79,24 @@
# -break-list
mi_gdb_test "222-break-insert -t main" \
- "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}" \
+ "222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
"break-insert -t operation"
mi_gdb_test "333-break-insert -t basics.c:callee2" \
- "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",line=\"$line_callee2_body\",times=\"0\"\}" \
+ "333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:callee2"
mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \
- "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",line=\"$line_callee3_head\",times=\"0\"\}" \
+ "444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_head\",times=\"0\"\}" \
"insert temp breakpoint at basics.c:\$line_callee3_body"
# Getting the quoting right is tricky. That is "\"<file>\":$line_callee4_head"
mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \
- "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_head\",times=\"0\"\}" \
+ "555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_head\",times=\"0\"\}" \
"insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"
mi_gdb_test "666-break-list" \
- "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
+ "666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
"list of breakpoints"
mi_gdb_test "777-break-delete" \
@@ -110,6 +113,7 @@
global line_callee2_head line_callee2_body
global line_callee1_head line_callee1_body
global line_main_head line_main_body
+ global fullname
# Insert some breakpoints and list them
# Also, disable some so they do not interfere with other tests
@@ -122,27 +126,27 @@
setup_xfail "*-*-*"
mi_gdb_test "122-break-insert -r main" \
- "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_main_body\"\}" \
+ "122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_main_body\"\}" \
"break-insert -r operation"
setup_xfail "*-*-*"
mi_gdb_test "133-break-insert -r callee2" \
- "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\}" \
+ "133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\}" \
"insert breakpoint with regexp callee2"
setup_xfail "*-*-*"
mi_gdb_test "144-break-insert -r callee" \
- "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_body\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_body\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_body\"\}" \
+ "144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
"insert breakpoint with regexp callee"
setup_xfail "*-*-*"
mi_gdb_test "155-break-insert -r \.\*llee" \
- "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee1_body\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee2_body\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee3_body\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",line=\"$line_callee4_body\"\}" \
+ "155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
"insert breakpoint with regexp .*llee"
setup_xfail "*-*-*"
mi_gdb_test "166-break-list" \
- "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
+ "1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
"list of breakpoints"
mi_gdb_test "177-break-delete" \
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 13:46 ` Bob Rossi
@ 2006-01-26 7:20 ` Vladimir Prus
0 siblings, 0 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-26 7:20 UTC (permalink / raw)
To: gdb-patches
Bob Rossi wrote:
> On Wed, Jan 25, 2006 at 04:31:19PM +0300, Vladimir Prus wrote:
>> On Wednesday 25 January 2006 00:13, Daniel Jacobowitz wrote:
>>
>> > > + {
>> > > + struct symtab_and_line sal = find_pc_line
>> > > (b->loc->address,
>> > > 0); + symtab_to_fullname (sal.symtab);
>> > > +
>> > > + if (sal.symtab->fullname)
>> > > + {
>> > > + annotate_field(10);
>> >
>> > annotate_field (10);
>>
>> Is that a formatting change, or moving the "annotate_field" call out of
>> "if"?
>>
>> > But I don't think you need this at all; there's no point emitting
>> > annotations when we're guarded by ui_out_is_mi_like_p.
>>
>> For a future: can you explain what "annotate_field" does? The annotate.h
>> file has no comments at all, and gdbint has "annotate_field" only inside
>> code examples. And generally, what are "annotations"?
>
> Annotations were the old interface used between GDB and front ends. It
> was all that was available before MI. For your own sanity, never ever
> try to deal with them.
Does it mean that:
1. No new code should ever contain a call to "annonate_*" functions?
2. It's planned to drop this "annotation" thing completely?
- Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
@ 2006-01-26 7:13 Nick Roberts
0 siblings, 0 replies; 23+ messages in thread
From: Nick Roberts @ 2006-01-26 7:13 UTC (permalink / raw)
To: Bob Rossi; +Cc: gdb-patches
> > For a future: can you explain what "annotate_field" does? The annotate.h
> > file has no comments at all, and gdbint has "annotate_field" only inside
> > code examples. And generally, what are "annotations"?
> Annotations were the old interface used between GDB and front ends. It
> was all that was available before MI. For your own sanity, never ever
> try to deal with them.
Just to clarify: Annotations will be replaced by MI but there are currently
still front ends that use them. So don't add new annotations but please be
careful not to change existing behaviour either.
Nick http://www.inet.net.nz/~nickrob
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 13:45 ` Bob Rossi
@ 2006-01-26 7:10 ` Vladimir Prus
0 siblings, 0 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-26 7:10 UTC (permalink / raw)
To: gdb-patches
Bob Rossi wrote:
>> > > > Also, don't forget about the documentation.
>> > >
>> > > Well, at the moment the -break-info command is not documented at all,
>> > > so there's no place where I can add the extra "fullname" field.
>> >
>> > Hmm, there is a section in the gdb.texinfo manual that says
>> > @c REDUNDANT???
>> > Get information about a single breakpoint.
>> > how is this command useful, instead of just using -break-list?
>>
>> Hmm, so I should update all examples of "-break-list" output as well?
>> What path should I put there? Is
>> /home/foo/bar/<whatever-the-source-file-is>.c fine?
>
> Yes, please update the documentation for -break-list, and I don't know
> if you should even bother with -break-info. I still don't know if that
> command should exist if it's identical to -break-list. A machine
> interface does not need 2 commands for the same functionatlity, IMO.
Strictly speaking, they are not the same. -break-list is documented to print
list of all breakpoints, while -break-info is documented to print
information about one breakpoint.
- Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
@ 2006-01-26 7:06 Nick Roberts
0 siblings, 0 replies; 23+ messages in thread
From: Nick Roberts @ 2006-01-26 7:06 UTC (permalink / raw)
To: Bob Rossi; +Cc: gdb-patches
I've probably not followed the whole thread, but here goes...
> > Hmm, so I should update all examples of "-break-list" output as well? What
> > path should I put there? Is /home/foo/bar/<whatever-the-source-file-is>.c
> > fine?
> Yes, please update the documentation for -break-list,
-break-insert also uses print_one_breakpoint so I guess that should be
updated
> and I don't know
> if you should even bother with -break-info. I still don't know if that
> command should exist if it's identical to -break-list. A machine
> interface does not need 2 commands for the same functionatlity, IMO.
I don't know if its needed either but now its there I don't see any
point in removing it (if it ain't broke don't fix it).
Also the doc says:
The `-break-info' Command
Synopsis
-break-info BREAKPOINT
Get information about a single breakpoint.
GDB command
The corresponding GDB command is `info break BREAKPOINT'.
Example
N.A.
and
Also note that the commands with a non-available example (N.A.) are not
yet implemented.
but -break-info clearly has been implemented.
Nick http://www.inet.net.nz/~nickrob
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 13:31 ` Vladimir Prus
2006-01-25 13:46 ` Bob Rossi
2006-01-25 13:51 ` Daniel Jacobowitz
@ 2006-01-25 17:56 ` Eli Zaretskii
2 siblings, 0 replies; 23+ messages in thread
From: Eli Zaretskii @ 2006-01-25 17:56 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
> From: Vladimir Prus <ghost@cs.msu.su>
> Date: Wed, 25 Jan 2006 16:31:19 +0300
>
> For a future: can you explain what "annotate_field" does? The annotate.h file
> has no comments at all, and gdbint has "annotate_field" only inside code
> examples. And generally, what are "annotations"?
See gdb/doc/annotate.texinfo.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 13:31 ` Vladimir Prus
2006-01-25 13:46 ` Bob Rossi
@ 2006-01-25 13:51 ` Daniel Jacobowitz
2006-01-25 17:56 ` Eli Zaretskii
2 siblings, 0 replies; 23+ messages in thread
From: Daniel Jacobowitz @ 2006-01-25 13:51 UTC (permalink / raw)
To: gdb-patches
On Wed, Jan 25, 2006 at 04:31:19PM +0300, Vladimir Prus wrote:
> On Wednesday 25 January 2006 00:13, Daniel Jacobowitz wrote:
>
> > > + {
> > > + struct symtab_and_line sal = find_pc_line (b->loc->address,
> > > 0); + symtab_to_fullname (sal.symtab);
> > > +
> > > + if (sal.symtab->fullname)
> > > + {
> > > + annotate_field(10);
> >
> > annotate_field (10);
>
> Is that a formatting change, or moving the "annotate_field" call out of "if"?
Sorry, I just meant the space before the parentheses.
> > But I don't think you need this at all; there's no point emitting
> > annotations when we're guarded by ui_out_is_mi_like_p.
>
> For a future: can you explain what "annotate_field" does? The annotate.h file
> has no comments at all, and gdbint has "annotate_field" only inside code
> examples. And generally, what are "annotations"?
As Bob said, an old interface. See "set annotate".
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 13:31 ` Vladimir Prus
@ 2006-01-25 13:46 ` Bob Rossi
2006-01-26 7:20 ` Vladimir Prus
2006-01-25 13:51 ` Daniel Jacobowitz
2006-01-25 17:56 ` Eli Zaretskii
2 siblings, 1 reply; 23+ messages in thread
From: Bob Rossi @ 2006-01-25 13:46 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
On Wed, Jan 25, 2006 at 04:31:19PM +0300, Vladimir Prus wrote:
> On Wednesday 25 January 2006 00:13, Daniel Jacobowitz wrote:
>
> > > + {
> > > + struct symtab_and_line sal = find_pc_line (b->loc->address,
> > > 0); + symtab_to_fullname (sal.symtab);
> > > +
> > > + if (sal.symtab->fullname)
> > > + {
> > > + annotate_field(10);
> >
> > annotate_field (10);
>
> Is that a formatting change, or moving the "annotate_field" call out of "if"?
>
> > But I don't think you need this at all; there's no point emitting
> > annotations when we're guarded by ui_out_is_mi_like_p.
>
> For a future: can you explain what "annotate_field" does? The annotate.h file
> has no comments at all, and gdbint has "annotate_field" only inside code
> examples. And generally, what are "annotations"?
Annotations were the old interface used between GDB and front ends. It
was all that was available before MI. For your own sanity, never ever
try to deal with them.
Thanks,
Bob Rossi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 12:50 ` Vladimir Prus
@ 2006-01-25 13:45 ` Bob Rossi
2006-01-26 7:10 ` Vladimir Prus
0 siblings, 1 reply; 23+ messages in thread
From: Bob Rossi @ 2006-01-25 13:45 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
> > > > Also, don't forget about the documentation.
> > >
> > > Well, at the moment the -break-info command is not documented at all, so
> > > there's no place where I can add the extra "fullname" field.
> >
> > Hmm, there is a section in the gdb.texinfo manual that says
> > @c REDUNDANT???
> > Get information about a single breakpoint.
> > how is this command useful, instead of just using -break-list?
>
> Hmm, so I should update all examples of "-break-list" output as well? What
> path should I put there? Is /home/foo/bar/<whatever-the-source-file-is>.c
> fine?
Yes, please update the documentation for -break-list, and I don't know
if you should even bother with -break-info. I still don't know if that
command should exist if it's identical to -break-list. A machine
interface does not need 2 commands for the same functionatlity, IMO.
For -file-list-exec-source-files I used this path as an example,
@smallexample
(@value{GDBP})
123-file-list-exec-source-file
123^done,line="1",file="foo.c",fullname="/home/bar/foo.c"
(@value{GDBP})
@end smallexample
so, yes, something like you have is OK.
Bob Rossi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-24 21:13 ` Daniel Jacobowitz
@ 2006-01-25 13:31 ` Vladimir Prus
2006-01-25 13:46 ` Bob Rossi
` (2 more replies)
0 siblings, 3 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-25 13:31 UTC (permalink / raw)
To: gdb-patches
On Wednesday 25 January 2006 00:13, Daniel Jacobowitz wrote:
> > + {
> > + struct symtab_and_line sal = find_pc_line (b->loc->address,
> > 0); + symtab_to_fullname (sal.symtab);
> > +
> > + if (sal.symtab->fullname)
> > + {
> > + annotate_field(10);
>
> annotate_field (10);
Is that a formatting change, or moving the "annotate_field" call out of "if"?
> But I don't think you need this at all; there's no point emitting
> annotations when we're guarded by ui_out_is_mi_like_p.
For a future: can you explain what "annotate_field" does? The annotate.h file
has no comments at all, and gdbint has "annotate_field" only inside code
examples. And generally, what are "annotations"?
> Also, you can use the return value from symtab_to_fullname.
Point taken.
- Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 12:10 ` Bob Rossi
2006-01-25 12:37 ` Andreas Schwab
@ 2006-01-25 12:50 ` Vladimir Prus
2006-01-25 13:45 ` Bob Rossi
1 sibling, 1 reply; 23+ messages in thread
From: Vladimir Prus @ 2006-01-25 12:50 UTC (permalink / raw)
To: Bob Rossi; +Cc: gdb-patches
On Wednesday 25 January 2006 15:10, Bob Rossi wrote:
> > I'm looking into this right now, and have a question. Inside the test, I
> > need to get the absolute path to the source file. If I use:
> >
> > "${srcdir}/${subdir}/${srcfile}"
> >
> > the result is:
> >
> > "../.././gdb/testsuite/gdb.mi/basics.c"
>
> No, please user ${fullname_syntax}${srcfile}. That will provide you with
> a regular expression that matches the fullname, and end in the source
> file you are interestd in. You can see how this is done in
> mi2-stack.exp.
Thanks, that works.
> > while output of gdb has absolute path name. So: how do I convert relative
> > path to an absolute one inside a test? (I don't know anything about Tcl,
> > so it's not obvious for me).
> >
> > BTW, it would be nice in gdbint explicitly said how one can run a
> > specific test from testsuite.
>
> Yeah, I totally agree. I forget every time. Try 'runtest mi2-stack.exp',
> to run just that test.
Well, that does not quite work. The command that works for me is:
runtest --tool gdb gdb.mi/mi2-stack.exp
> > > Also, don't forget about the documentation.
> >
> > Well, at the moment the -break-info command is not documented at all, so
> > there's no place where I can add the extra "fullname" field.
>
> Hmm, there is a section in the gdb.texinfo manual that says
> @c REDUNDANT???
> Get information about a single breakpoint.
> how is this command useful, instead of just using -break-list?
Hmm, so I should update all examples of "-break-list" output as well? What
path should I put there? Is /home/foo/bar/<whatever-the-source-file-is>.c
fine?
- Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 12:10 ` Bob Rossi
@ 2006-01-25 12:37 ` Andreas Schwab
2006-01-25 12:50 ` Vladimir Prus
1 sibling, 0 replies; 23+ messages in thread
From: Andreas Schwab @ 2006-01-25 12:37 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
Bob Rossi <bob@brasko.net> writes:
> On Wed, Jan 25, 2006 at 02:07:28PM +0300, Vladimir Prus wrote:
>>
>> BTW, it would be nice in gdbint explicitly said how one can run a specific
>> test from testsuite.
>
> Yeah, I totally agree. I forget every time. Try 'runtest mi2-stack.exp',
> to run just that test.
Usually you pass that via RUNTESTFLAGS.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, MaxfeldstraÃe 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-25 11:07 ` Vladimir Prus
@ 2006-01-25 12:10 ` Bob Rossi
2006-01-25 12:37 ` Andreas Schwab
2006-01-25 12:50 ` Vladimir Prus
0 siblings, 2 replies; 23+ messages in thread
From: Bob Rossi @ 2006-01-25 12:10 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
On Wed, Jan 25, 2006 at 02:07:28PM +0300, Vladimir Prus wrote:
> Bob Rossi wrote:
>
> > On Tue, Jan 24, 2006 at 07:32:15PM +0300, Vladimir Prus wrote:
> >>
> >> Hello!
> >>
> >> The attached patch adds the "fullname" field to the output of MI
> >> -break-info command.
> >
> > The patch seems good to me at first glance. However, you should also
> > update the testsuite, and send in the patch for that as well.
>
> I'm looking into this right now, and have a question. Inside the test, I
> need to get the absolute path to the source file. If I use:
>
> "${srcdir}/${subdir}/${srcfile}"
>
> the result is:
>
> "../.././gdb/testsuite/gdb.mi/basics.c"
No, please user ${fullname_syntax}${srcfile}. That will provide you with
a regular expression that matches the fullname, and end in the source
file you are interestd in. You can see how this is done in
mi2-stack.exp.
> while output of gdb has absolute path name. So: how do I convert relative
> path to an absolute one inside a test? (I don't know anything about Tcl, so
> it's not obvious for me).
>
> BTW, it would be nice in gdbint explicitly said how one can run a specific
> test from testsuite.
Yeah, I totally agree. I forget every time. Try 'runtest mi2-stack.exp',
to run just that test.
> > Also, don't forget about the documentation.
>
> Well, at the moment the -break-info command is not documented at all, so
> there's no place where I can add the extra "fullname" field.
Hmm, there is a section in the gdb.texinfo manual that says
@c REDUNDANT???
Get information about a single breakpoint.
how is this command useful, instead of just using -break-list?
Thanks,
Bob Rossi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-24 16:51 ` Bob Rossi
@ 2006-01-25 11:07 ` Vladimir Prus
2006-01-25 12:10 ` Bob Rossi
2006-01-28 13:10 ` Vladimir Prus
1 sibling, 1 reply; 23+ messages in thread
From: Vladimir Prus @ 2006-01-25 11:07 UTC (permalink / raw)
To: gdb-patches
Bob Rossi wrote:
> On Tue, Jan 24, 2006 at 07:32:15PM +0300, Vladimir Prus wrote:
>>
>> Hello!
>>
>> The attached patch adds the "fullname" field to the output of MI
>> -break-info command.
>
> The patch seems good to me at first glance. However, you should also
> update the testsuite, and send in the patch for that as well.
I'm looking into this right now, and have a question. Inside the test, I
need to get the absolute path to the source file. If I use:
"${srcdir}/${subdir}/${srcfile}"
the result is:
"../.././gdb/testsuite/gdb.mi/basics.c"
while output of gdb has absolute path name. So: how do I convert relative
path to an absolute one inside a test? (I don't know anything about Tcl, so
it's not obvious for me).
BTW, it would be nice in gdbint explicitly said how one can run a specific
test from testsuite.
> Also, don't forget about the documentation.
Well, at the moment the -break-info command is not documented at all, so
there's no place where I can add the extra "fullname" field.
- Volodya
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-24 16:42 Vladimir Prus
2006-01-24 16:51 ` Bob Rossi
@ 2006-01-24 21:13 ` Daniel Jacobowitz
2006-01-25 13:31 ` Vladimir Prus
1 sibling, 1 reply; 23+ messages in thread
From: Daniel Jacobowitz @ 2006-01-24 21:13 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
On Tue, Jan 24, 2006 at 07:32:15PM +0300, Vladimir Prus wrote:
>
> Hello!
>
> The attached patch adds the "fullname" field to the output of MI -break-info
> command.
In addition to what Bob said, formatting points:
> + if (ui_out_is_mi_like_p (uiout))
> + {
> + if (b->loc->loc_type == bp_loc_software_breakpoint ||
> + b->loc->loc_type == bp_loc_hardware_watchpoint)
if (b->loc->loc_type == bp_loc_software_breakpoint
|| b->loc->loc_type == bp_loc_hardware_watchpoint)
> + {
> + struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
> + symtab_to_fullname (sal.symtab);
> +
> + if (sal.symtab->fullname)
> + {
> + annotate_field(10);
annotate_field (10);
But I don't think you need this at all; there's no point emitting
annotations when we're guarded by ui_out_is_mi_like_p.
Also, you can use the return value from symtab_to_fullname.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH] Add fullname field for MI -break-info command
2006-01-24 16:42 Vladimir Prus
@ 2006-01-24 16:51 ` Bob Rossi
2006-01-25 11:07 ` Vladimir Prus
2006-01-28 13:10 ` Vladimir Prus
2006-01-24 21:13 ` Daniel Jacobowitz
1 sibling, 2 replies; 23+ messages in thread
From: Bob Rossi @ 2006-01-24 16:51 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
On Tue, Jan 24, 2006 at 07:32:15PM +0300, Vladimir Prus wrote:
>
> Hello!
>
> The attached patch adds the "fullname" field to the output of MI -break-info
> command.
The patch seems good to me at first glance. However, you should also
update the testsuite, and send in the patch for that as well.
Also, don't forget about the documentation.
Thanks,
Bob Rossi
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH] Add fullname field for MI -break-info command
@ 2006-01-24 16:42 Vladimir Prus
0 siblings, 0 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-24 16:42 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 296 bytes --]
Hello!
The attached patch adds the "fullname" field to the output of MI -break-info
command.
Changelog entry:
2006-01-24 Vladimir Prus <ghost@cs.msu.su>
* breakpoint.c (print_one_breakpoint): For MI-like UI, output
'fullname' field.
Patch attached.
- Volodya
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: break_info_fullname.diff --]
[-- Type: text/x-diff; name="break_info_fullname.diff", Size: 944 bytes --]
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.220
diff -u -r1.220 breakpoint.c
--- breakpoint.c 16 Jan 2006 12:55:18 -0000 1.220
+++ breakpoint.c 24 Jan 2006 15:10:47 -0000
@@ -3603,6 +3603,23 @@
print_command_lines (uiout, l, 4);
do_cleanups (script_chain);
}
+
+ if (ui_out_is_mi_like_p (uiout))
+ {
+ if (b->loc->loc_type == bp_loc_software_breakpoint ||
+ b->loc->loc_type == bp_loc_hardware_watchpoint)
+ {
+ struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
+ symtab_to_fullname (sal.symtab);
+
+ if (sal.symtab->fullname)
+ {
+ annotate_field(10);
+ ui_out_field_string (uiout, "fullname", sal.symtab->fullname);
+ }
+ }
+ }
+
do_cleanups (bkpt_chain);
do_cleanups (old_chain);
}
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH] Add fullname field for MI -break-info command
@ 2006-01-24 16:42 Vladimir Prus
2006-01-24 16:51 ` Bob Rossi
2006-01-24 21:13 ` Daniel Jacobowitz
0 siblings, 2 replies; 23+ messages in thread
From: Vladimir Prus @ 2006-01-24 16:42 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 291 bytes --]
Hello!
The attached patch adds the "fullname" field to the output of MI -break-info
command.
Changelog entry:
2006-01-24 Vladimir Prus <ghost@cs.msu.su>
* breakpoint.c (print_one_breakpoint): For MI-like UI, output
'fullname' field.
Patch attached.
- Volodya
[-- Attachment #2: break_info_fullname.diff --]
[-- Type: text/x-diff, Size: 944 bytes --]
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.220
diff -u -r1.220 breakpoint.c
--- breakpoint.c 16 Jan 2006 12:55:18 -0000 1.220
+++ breakpoint.c 24 Jan 2006 15:10:47 -0000
@@ -3603,6 +3603,23 @@
print_command_lines (uiout, l, 4);
do_cleanups (script_chain);
}
+
+ if (ui_out_is_mi_like_p (uiout))
+ {
+ if (b->loc->loc_type == bp_loc_software_breakpoint ||
+ b->loc->loc_type == bp_loc_hardware_watchpoint)
+ {
+ struct symtab_and_line sal = find_pc_line (b->loc->address, 0);
+ symtab_to_fullname (sal.symtab);
+
+ if (sal.symtab->fullname)
+ {
+ annotate_field(10);
+ ui_out_field_string (uiout, "fullname", sal.symtab->fullname);
+ }
+ }
+ }
+
do_cleanups (bkpt_chain);
do_cleanups (old_chain);
}
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2006-02-06 21:55 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-26 11:27 [PATCH] Add fullname field for MI -break-info command Nick Roberts
2006-01-26 11:44 ` Vladimir Prus
-- strict thread matches above, loose matches on Subject: below --
2006-01-26 7:13 Nick Roberts
2006-01-26 7:06 Nick Roberts
2006-01-24 16:42 Vladimir Prus
2006-01-24 16:51 ` Bob Rossi
2006-01-25 11:07 ` Vladimir Prus
2006-01-25 12:10 ` Bob Rossi
2006-01-25 12:37 ` Andreas Schwab
2006-01-25 12:50 ` Vladimir Prus
2006-01-25 13:45 ` Bob Rossi
2006-01-26 7:10 ` Vladimir Prus
2006-01-28 13:10 ` Vladimir Prus
2006-02-01 22:32 ` Daniel Jacobowitz
2006-02-02 7:07 ` Vladimir Prus
2006-02-06 21:55 ` Daniel Jacobowitz
2006-01-24 21:13 ` Daniel Jacobowitz
2006-01-25 13:31 ` Vladimir Prus
2006-01-25 13:46 ` Bob Rossi
2006-01-26 7:20 ` Vladimir Prus
2006-01-25 13:51 ` Daniel Jacobowitz
2006-01-25 17:56 ` Eli Zaretskii
2006-01-24 16:42 Vladimir Prus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox