0e50f1f
2008-05-07:  Lubomir Rintel  <lkundrak@fedoraproject.org>
0e50f1f
0e50f1f
        * kern/dl.c (grub_dl_resolve_symbols): Let the
0e50f1f
        grub_gdb_trapvec symbol be resolved correctly (instead of 0).
0e50f1f
0e50f1f
--- grub2/kern/dl.c	2008-01-26 21:34:58.000000000 +0100
0e50f1f
+++ grub2-gdb/kern/dl.c	2008-05-07 09:27:08.000000000 +0200
0e50f1f
@@ -352,16 +352,18 @@ grub_dl_resolve_symbols (grub_dl_t mod, 
0e50f1f
 	{
0e50f1f
 	case STT_NOTYPE:
0e50f1f
 	  /* Resolve a global symbol.  */
0e50f1f
-	  if (sym->st_name != 0 && sym->st_shndx == 0)
0e50f1f
+	  if (sym->st_name == 0)
0e50f1f
+	    break;
0e50f1f
+
0e50f1f
+	  if (sym->st_shndx == 0) /* external */
0e50f1f
 	    {
0e50f1f
 	      sym->st_value = (Elf_Addr) grub_dl_resolve_symbol (name);
0e50f1f
 	      if (! sym->st_value)
0e50f1f
 		return grub_error (GRUB_ERR_BAD_MODULE,
0e50f1f
 				   "the symbol `%s' not found", name);
0e50f1f
-	    }
0e50f1f
-	  else
0e50f1f
-	    sym->st_value = 0;
0e50f1f
 	  break;
0e50f1f
+	    }
0e50f1f
+	  /* nonexternal, same as STT_OBJECT */
0e50f1f
 
0e50f1f
 	case STT_OBJECT:
0e50f1f
 	  sym->st_value += (Elf_Addr) grub_dl_get_section_addr (mod,