diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 69f65121a9b..027d5a7d7ec 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-30  Eric Christopher  <echristo@apple.com>
+
+	* elfxx-mips.c (mips_elf_record_global_got_symbol): Add assert
+	to verify we have a got.
+	(_bfd_mips_elf_check_relocs): Add R_MIPS_TLS_GOTTPREL to relocs
+	needing a GOT.
+
 2005-12-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
 	* configure.host (hppa*64*-*-hpux*): Set host64 to true.
@@ -106,7 +113,7 @@
 	to make it clear that parameter ABFD is not used.
 	(hpux_core_core_file_matches_executable_p): Delete, replaced
 	by macro pointing to generic_core_file_matches_executable_p.
-	
+
 	* aix386-core.c: Replace core_file_matches_executable_p null
 	implementation by generic_core_file_matches_executable_p by
 	using a macro.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 68490487173..99a0def3b9d 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -2637,6 +2637,9 @@ mips_elf_record_global_got_symbol (struct elf_link_hash_entry *h,
 	return FALSE;
     }
 
+  /* Make sure we have a GOT to put this entry into.  */
+  BFD_ASSERT (g != NULL);
+
   entry.abfd = abfd;
   entry.symndx = -1;
   entry.d.h = (struct mips_elf_link_hash_entry *) h;
@@ -3980,7 +3983,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
 
   if (gnu_local_gp_p)
     symbol = gp;
-  
+
   /* Figure out what kind of relocation is being performed.  */
   switch (r_type)
     {
@@ -5997,6 +6000,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    case R_MIPS_GOT_PAGE:
 	    case R_MIPS_GOT_OFST:
 	    case R_MIPS_GOT_DISP:
+	    case R_MIPS_TLS_GOTTPREL:
 	    case R_MIPS_TLS_GD:
 	    case R_MIPS_TLS_LDM:
 	      if (dynobj == NULL)
@@ -8852,7 +8856,7 @@ _bfd_elf_mips_get_relocated_section_contents
 					       input_section, relocatable,
 					       data, gp);
 	  else
-	    r = bfd_perform_relocation (input_bfd, *parent, data, 
+	    r = bfd_perform_relocation (input_bfd, *parent, data,
 					input_section,
 					relocatable ? abfd : NULL,
 					&error_message);
@@ -9005,7 +9009,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 		&& !(*bed->elf_backend_omit_section_dynsym) (abfd, info, p))
 	      ++ dynsecsymcount;
 	}
-      
+
       if (! mips_elf_sort_hash_table (info, dynsecsymcount + 1))
 	return FALSE;