瀏覽代碼

* fixed crash in getaddrsyminfo with symfync=nil

peter 25 年之前
父節點
當前提交
44ff14bd7d
共有 1 個文件被更改,包括 33 次插入55 次删除
  1. 33 55
      packages/gdbint/gdbint.pp

+ 33 - 55
packages/gdbint/gdbint.pp

@@ -393,8 +393,8 @@ type
      value : record
        case integer of
       (* The fact that this is a long not a LONGEST mainly limits the
-	 range of a LOC_CONST.  Since LOC_CONST_BYTES exists, I'm not
-	 sure that is a big deal.  *)
+         range of a LOC_CONST.  Since LOC_CONST_BYTES exists, I'm not
+         sure that is a big deal.  *)
        0 : (ivalue : longint;);
 
        1 : (block  : pblock;);
@@ -414,14 +414,14 @@ type
    (* union
     {
       struct cplus_specific      /* For C++ */
-				/*  and Java */
-	{
-	  char *demangled_name;
-	} cplus_specific;
+                                /*  and Java */
+        {
+          char *demangled_name;
+        } cplus_specific;
       struct chill_specific      /* For Chill */
-	{
-	  char *demangled_name;
-	} chill_specific;
+        {
+          char *demangled_name;
+        } chill_specific;
     } language_specific; *)
      demangled_name : pchar;
 
@@ -447,25 +447,25 @@ type
 
   tminimal_symbol_type =
     (
-      mst_unknown := 0,	        (* Unknown type, the default *)
-      mst_text,		        (* Generally executable instructions *)
-      mst_data,		        (* Generally initialized data *)
-      mst_bss,		        (* Generally uninitialized data *)
-      mst_abs,		        (* Generally absolute (nonrelocatable) *)
+      mst_unknown := 0,         (* Unknown type, the default *)
+      mst_text,                 (* Generally executable instructions *)
+      mst_data,                 (* Generally initialized data *)
+      mst_bss,                  (* Generally uninitialized data *)
+      mst_abs,                  (* Generally absolute (nonrelocatable) *)
       (* GDB uses mst_solib_trampoline for the start address of a shared
-	 library trampoline entry.  Breakpoints for shared library functions
-	 are put there if the shared library is not yet loaded.
-	 After the shared library is loaded, lookup_minimal_symbol will
-	 prefer the minimal symbol from the shared library (usually
-	 a mst_text symbol) over the mst_solib_trampoline symbol, and the
-	 breakpoints will be moved to their true address in the shared
-	 library via breakpoint_re_set.  *)
+         library trampoline entry.  Breakpoints for shared library functions
+         are put there if the shared library is not yet loaded.
+         After the shared library is loaded, lookup_minimal_symbol will
+         prefer the minimal symbol from the shared library (usually
+         a mst_text symbol) over the mst_solib_trampoline symbol, and the
+         breakpoints will be moved to their true address in the shared
+         library via breakpoint_re_set.  *)
       mst_solib_trampoline,     (* Shared library trampoline code *)
       (* For the mst_file* types, the names are only guaranteed to be unique
-	 within a given .o file.  *)
+         within a given .o file.  *)
       mst_file_text,            (* Static version of mst_text *)
-      mst_file_data,	        (* Static version of mst_data *)
-      mst_file_bss	        (* Static version of mst_bss *)
+      mst_file_data,            (* Static version of mst_data *)
+      mst_file_bss              (* Static version of mst_bss *)
     );
 
   namespace_enum = (
@@ -1906,39 +1906,14 @@ begin
   if assigned(sym.symtab) then
    si.fname:=sym.symtab^.filename
   else
-    si.fname:=nil;
+   si.fname:=nil;
   si.line:=sym.line;
   symbol:=find_pc_function(addr);
-  si.funcname:=symbol^.ginfo._name;
-end;
-
-
-{$ifdef kl}
-char *SourceForMain(int *line)
-  struct symbol *sym;
-  struct symtab *symtab;
-  *line = 0;
-  sym = lookup_symbol(_GetMainFunction(), NULL, VAR_NAMESPACE, NULL, &symtab);
-  if (!sym)
-    struct minimal_symbol *msymbol =
-      lookup_minimal_symbol (_GetMainFunction(), NULL, NULL);
-    if (msymbol)
-      *line = SYMBOL_VALUE_ADDRESS(msymbol);
-    return NULL;
-  if (!symtab || !symtab->filename)
-    *line = BLOCK_START(SYMBOL_BLOCK_VALUE(sym));
-    return NULL;
-  if (symtab->linetable)
-    int i;
-    for (i=0;i<symtab->linetable->nitems;i++)
-      if (symtab->linetable->item[i].pc
-          == BLOCK_START(SYMBOL_BLOCK_VALUE(sym)))
-        *line = symtab->linetable->item[i].line;
-        break;
+  if assigned(symbol) then
+   si.funcname:=symbol^.ginfo._name
   else
-    *line = 0;
-  return symtab->filename;
-{$endif}
+   si.funcname:=nil;
+end;
 
 
 procedure tgdbinterface.SelectSourceLine(fn:pchar;line:longint);
@@ -2152,7 +2127,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.2  1999-11-26 14:50:40  pierre
+  Revision 1.3  2000-01-10 11:14:42  peter
+    * fixed crash in getaddrsyminfo with symfync=nil
+
+  Revision 1.2  1999/11/26 14:50:40  pierre
    * shell32 lib is not needed in gdbint unit
 
   Revision 1.1  1999/11/24 23:36:32  peter