* elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
authorMark Mitchell <mark@codesourcery.com>
Fri, 27 Aug 1999 00:08:50 +0000 (00:08 +0000)
committerMark Mitchell <mark@codesourcery.com>
Fri, 27 Aug 1999 00:08:50 +0000 (00:08 +0000)
GOT entries for GOT16 relocations; they're not required.

bfd/ChangeLog
bfd/elf32-mips.c

index e5a9e169ae8aec32b7e96c075e507b2dbdd1e67e..b4f9226b4f3c3afe4a92581be2b54b888223c965 100644 (file)
@@ -1,3 +1,8 @@
+1999-08-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
+       GOT entries for GOT16 relocations; they're not required.
+
 1999-08-24  Nick Clifton  <nickc@cygnus.com>
 
        From a patch submitted by Roland McGrath  <roland@baalperazim.frob.com>
index f18f1fd03ac045537b3cc3bdf10ff655095d8a22..3d4ddf5ffac49a8da7f329fa11eaf941c500ba4a 100644 (file)
@@ -7456,15 +7456,15 @@ _bfd_mips_elf_check_relocs (abfd, info, sec, relocs)
 
       if (!h && (r_type == R_MIPS_CALL_LO16
                 || r_type == R_MIPS_GOT_LO16
-                || r_type == R_MIPS_GOT_DISP
-                || r_type == R_MIPS_GOT16))
+                || r_type == R_MIPS_GOT_DISP))
        {
          /* We may need a local GOT entry for this relocation.  We
             don't count R_MIPS_GOT_PAGE because we can estimate the
             maximum number of pages needed by looking at the size of
-            the segment.  We don't count R_MIPS_GOT_HI16, or
-            R_MIPS_CALL_HI16 because these are always followed by an
-            R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16.
+            the segment.  Similar comments apply to R_MIPS_GOT16.  We
+            don't count R_MIPS_GOT_HI16, or R_MIPS_CALL_HI16 because
+            these are always followed by an R_MIPS_GOT_LO16 or
+            R_MIPS_CALL_LO16.
 
             This estimation is very conservative since we can merge
             duplicate entries in the GOT.  In order to be less
@@ -8003,8 +8003,14 @@ _bfd_mips_elf_size_dynamic_sections (output_bfd, info)
          loadable_size += MIPS_FUNCTION_STUB_SIZE;
 
          /* Assume there are two loadable segments consisting of
-            contiguous sections.  Is 5 enough? */
+            contiguous sections.  Is 5 enough?  */
          local_gotno = (loadable_size >> 16) + 5;
+         if (IRIX_COMPAT (output_bfd) == ict_irix6)
+           /* It's possible we will need GOT_PAGE entries as well as
+              GOT16 entries.  Often, these will be able to share GOT
+              entries, but not always.  */
+           local_gotno *= 2;
+
          g->local_gotno += local_gotno;
          s->_raw_size += local_gotno * MIPS_ELF_GOT_SIZE (dynobj);
 
This page took 0.03011 seconds and 4 git commands to generate.