OSDN Git Service

2001-07-21 Martin M. Hunt <hunt@redhat.com>
authorhunt <hunt>
Sat, 21 Jul 2001 18:44:03 +0000 (18:44 +0000)
committerhunt <hunt>
Sat, 21 Jul 2001 18:44:03 +0000 (18:44 +0000)
* library/interface.tcl (gdbtk_locate_main): Fix function
so that it returns either a null string or a valid location,
as documented.

gdb/gdbtk/ChangeLog
gdb/gdbtk/library/interface.tcl

index ec1bf77..7f319a0 100644 (file)
@@ -1,5 +1,9 @@
 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.
+
        * library/variables.tcl (build_menu_helper): Set
        the Format menu option to "disabled" initially.
 
index 6b87e7f..3737ddd 100644 (file)
@@ -774,24 +774,33 @@ proc gdbtk_tcl_exec_file_display {filename} {
 #  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
 }
 
 ##############################################