2000-07-19 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 20 Jul 2000 03:21:59 +0000 (03:21 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 20 Jul 2000 03:21:59 +0000 (03:21 +0000)
* elf32-arm.h (elf32_arm_size_dynamic_sections): Also set
DF_TEXTREL if DT_TEXTREL is set.
* elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
* elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
* elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Likewise.
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
* elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
* elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise.
* elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.

* bfd/elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also
set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if
DT_RPATH is set.
Set the DT_FLAGS and DT_FLAGS_1 entries if necessary.

13 files changed:
bfd/ChangeLog
bfd/elf32-arm.h
bfd/elf32-i370.c
bfd/elf32-i386.c
bfd/elf32-m68k.c
bfd/elf32-mips.c
bfd/elf32-ppc.c
bfd/elf32-sparc.c
bfd/elf64-alpha.c
bfd/elf64-hppa.c
bfd/elf64-ia64.c
bfd/elf64-sparc.c
bfd/elflink.h

index 210d6ad..0e2a4c7 100644 (file)
@@ -1,5 +1,25 @@
 2000-07-19  H.J. Lu  <hjl@gnu.org>
 
+       * elf32-arm.h (elf32_arm_size_dynamic_sections): Also set
+       DF_TEXTREL if DT_TEXTREL is set.
+       * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
+       * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
+       * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
+       * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Likewise.
+       * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
+       * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
+       * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
+       * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
+       * elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise.
+       * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
+
+       * bfd/elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also
+       set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if
+       DT_RPATH is set.
+       Set the DT_FLAGS and DT_FLAGS_1 entries if necessary.
+
+2000-07-19  H.J. Lu  <hjl@gnu.org>
+
        * bfd-in.h (bfd_elf_set_dt_needed_soname): New.
        * bfd-in2.h: Rebuild.
 
index 828a583..6b748ef 100644 (file)
@@ -2991,6 +2991,7 @@ elf32_arm_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index 0715d86..67c6964 100644 (file)
@@ -959,6 +959,7 @@ i370_elf_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index 997ae54..ace8287 100644 (file)
@@ -1238,6 +1238,7 @@ elf_i386_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index b015234..bee73b5 100644 (file)
@@ -1307,6 +1307,7 @@ elf_m68k_size_dynamic_sections (output_bfd, info)
        {
          if (!bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index 1e9e99b..27ae18a 100644 (file)
@@ -8319,6 +8319,7 @@ _bfd_mips_elf_size_dynamic_sections (output_bfd, info)
        {
          if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
 
       if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
index 6dc3eff..3c7999b 100644 (file)
@@ -2044,6 +2044,7 @@ ppc_elf_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index 70d65a5..0029384 100644 (file)
@@ -1056,6 +1056,7 @@ elf32_sparc_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index 84f3075..b4025c0 100644 (file)
@@ -3312,6 +3312,7 @@ elf64_alpha_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index b90b478..b5edaf1 100644 (file)
@@ -1789,6 +1789,7 @@ elf64_hppa_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index cacfd65..a8bebf2 100644 (file)
@@ -2517,6 +2517,7 @@ elf64_ia64_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
     }
 
index ca2e7c1..b2b8cbf 100644 (file)
@@ -1803,6 +1803,7 @@ sparc64_elf_size_dynamic_sections (output_bfd, info)
        {
          if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
            return false;
+         info->flags |= DF_TEXTREL;
        }
 
       /* Add dynamic STT_REGISTER symbols and corresponding DT_SPARC_REGISTER
index 7fa35a9..1bf3668 100644 (file)
@@ -2837,6 +2837,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
        {
          if (! elf_add_dynamic_entry (info, DT_SYMBOLIC, 0))
            return false;
+         info->flags |= DF_SYMBOLIC;
        }
 
       if (rpath != NULL)
@@ -2846,7 +2847,8 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
          indx = _bfd_stringtab_add (elf_hash_table (info)->dynstr, rpath,
                                     true, true);
          if (indx == (bfd_size_type) -1
-             || ! elf_add_dynamic_entry (info, DT_RPATH, indx))
+             || ! elf_add_dynamic_entry (info, DT_RPATH, indx)
+             || ! elf_add_dynamic_entry (info, DT_RUNPATH, indx))
            return false;
        }
 
@@ -3135,6 +3137,22 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
          elf_tdata (output_bfd)->cverdefs = cdefs;
        }
 
+      if (info->flags)
+       {
+         if (! elf_add_dynamic_entry (info, DT_FLAGS, info->flags))
+           return false;
+       }
+
+      if (info->flags_1)
+       {
+         if (! info->shared)
+           info->flags_1 &= ~ (DF_1_INITFIRST
+                               | DF_1_NODELETE
+                               | DF_1_NOOPEN);
+         if (! elf_add_dynamic_entry (info, DT_FLAGS_1, info->flags_1))
+           return false;
+       }
+
       /* Work out the size of the version reference section.  */
 
       s = bfd_get_section_by_name (dynobj, ".gnu.version_r");