* elf64-alpha.c (elf64_alpha_section_flags): New.
authorRichard Henderson <rth@redhat.com>
Tue, 11 Sep 2001 18:26:27 +0000 (18:26 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 11 Sep 2001 18:26:27 +0000 (18:26 +0000)
        (elf64_alpha_fake_sections): Map SEC_SMALL_DATA to SHF_ALPHA_GPREL.

bfd/ChangeLog
bfd/elf64-alpha.c

index 944790f8f6c6ea235c93df91b303c668de5867be..e696e8d8b3dee65561438ceebbc6c22632575070 100644 (file)
@@ -1,3 +1,8 @@
+2001-09-11  Richard Henderson  <rth@redhat.com>
+
+       * elf64-alpha.c (elf64_alpha_section_flags): New.
+       (elf64_alpha_fake_sections): Map SEC_SMALL_DATA to SHF_ALPHA_GPREL.
+
 2001-09-11  Richard Henderson  <rth@redhat.com>
 
        * elf64-alpha.c (elf64_alpha_relocate_section): Do not
index e345b6d9b0fac5511ae7078861ed6c7cf0d6f1a7..2836fd50b5852aacf3adb3f72873ef3fbef95119 100644 (file)
@@ -74,6 +74,8 @@ static boolean elf64_alpha_object_p
   PARAMS((bfd *));
 static boolean elf64_alpha_section_from_shdr
   PARAMS((bfd *, Elf64_Internal_Shdr *, char *));
+static boolean elf64_alpha_section_flags
+  PARAMS((flagword *, Elf64_Internal_Shdr *));
 static boolean elf64_alpha_fake_sections
   PARAMS((bfd *, Elf64_Internal_Shdr *, asection *));
 static boolean elf64_alpha_create_got_section
@@ -1641,6 +1643,19 @@ elf64_alpha_section_from_shdr (abfd, hdr, name)
   return true;
 }
 
+/* Convert Alpha specific section flags to bfd internal section flags.  */
+
+static boolean
+elf64_alpha_section_flags (flags, hdr)
+     flagword *flags;
+     Elf64_Internal_Shdr *hdr;
+{
+  if (hdr->sh_flags & SHF_ALPHA_GPREL)
+    *flags |= SEC_SMALL_DATA;
+
+  return true;
+}
+
 /* Set the correct type for an Alpha ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
@@ -1664,7 +1679,8 @@ elf64_alpha_fake_sections (abfd, hdr, sec)
       else
        hdr->sh_entsize = 1;
     }
-  else if (strcmp (name, ".sdata") == 0
+  else if ((sec->flags & SEC_SMALL_DATA)
+          || strcmp (name, ".sdata") == 0
           || strcmp (name, ".sbss") == 0
           || strcmp (name, ".lit4") == 0
           || strcmp (name, ".lit8") == 0)
@@ -4220,6 +4236,8 @@ const struct elf_size_info alpha_elf_size_info =
 
 #define elf_backend_section_from_shdr \
   elf64_alpha_section_from_shdr
+#define elf_backend_section_flags \
+  elf64_alpha_section_flags
 #define elf_backend_fake_sections \
   elf64_alpha_fake_sections