This is the mail archive of the
insight@sources.redhat.com
mailing list for the Insight project.
[RFA] gdbtk_locate_main cleanup
- To: insight at sources dot redhat dot com
- Subject: [RFA] gdbtk_locate_main cleanup
- From: "Martin M. Hunt" <hunt at redhat dot com>
- Date: Sat, 21 Jul 2001 00:30:03 -0700
- Organization: Red Hat Inc
see http://sources.redhat.com/ml/insight/2001-q3/msg00006.html for discussion
2001-07-21 Martin M. Hunt <hunt@redhat.com>
* library/interface.tcl (gdbtk_locate_main): Fix function
so that it returns either a null string or a valid location,
as documented.
Index: interface.tcl
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/library/interface.tcl,v
retrieving revision 1.26
diff -u -p -r1.26 interface.tcl
--- interface.tcl 2001/06/04 15:49:53 1.26
+++ interface.tcl 2001/07/21 07:28:00
@@ -774,24 +774,33 @@ proc gdbtk_tcl_exec_file_display {filena
# 3: source line number
# 4: address
# 5: current PC - which will often be the same as address, but not when
-# 6: shared library name if the pc is in a shared lib
# we are browsing, or walking the stack.
+# 6: shared library name if the pc is in a shared lib
#
# ------------------------------------------------------------------
proc gdbtk_locate_main {} {
+ set result {}
set main_names [pref get gdb/main_names]
debug "Searching $main_names"
+
foreach main $main_names {
if {![catch {gdb_search functions $main -static 1}] \
&& ![catch {gdb_loc $main} linespec]} {
- return $linespec
+ set result $linespec
+ break
}
}
- if {![catch gdb_entry_point entry_point]
+ if {$result == {}
+ && ![catch gdb_entry_point entry_point]
&& ![catch {gdb_loc "*$entry_point"} linespec]} {
- return $linespec
+ set result $linespec
}
- return {}
+
+ # need to see if result is valid
+ lassign $result file func ffile line addr rest
+ if {$addr == 0x0 && $func == {}} { set result {} }
+
+ return $result
}
##############################################
˙HHH˙GGG˙A