blackfin: add support for L1 code/data flags
authorMike Frysinger <vapier@gentoo.org>
Mon, 15 Nov 2010 22:30:47 +0000 (22:30 +0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 15 Nov 2010 22:30:47 +0000 (22:30 +0000)
Add new linker options for marking programs to load into L1 memory
at runtime.  This needs new EF flag bits, so declare them.

Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
bfd/ChangeLog
bfd/elf32-bfin.c
binutils/ChangeLog
binutils/readelf.c
include/ChangeLog
include/elf/bfin.h
ld/ChangeLog
ld/Makefile.am
ld/Makefile.in
ld/emulparams/bfin.sh
ld/emulparams/elf32bfinfd.sh

index 596c57764e8294109b4430673cae749273515da0..a67868ed574eb526ad3ef313ca2b95dcd2132f6c 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-16  Jie Zhang  <jie.zhang@analog.com>
+
+       * elf32-bfin.c (elf32_bfin_code_in_l1): New variable.
+       (elf32_bfin_data_in_l1): New variable.
+       (elf32_bfin_final_write_processing): New.
+       (elf_backend_final_write_processing): Define.
+
 2010-11-15  Mike Frysinger  <vapier@gentoo.org>
 
        PR binutils/12177
index 38f31e4f5a931d737c4b3819a364e7a9bb3142c4..56af244f4c32c917afcb316d1fe3469d82b5d4c0 100644 (file)
@@ -1120,6 +1120,22 @@ bfin_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
   return (reloc_howto_type *) NULL;
 }
 
+/* Set by ld emulation if --code-in-l1.  */
+bfd_boolean elf32_bfin_code_in_l1 = 0;
+
+/* Set by ld emulation if --data-in-l1.  */
+bfd_boolean elf32_bfin_data_in_l1 = 0;
+
+static void
+elf32_bfin_final_write_processing (bfd *abfd,
+                                  bfd_boolean linker ATTRIBUTE_UNUSED)
+{
+  if (elf32_bfin_code_in_l1)
+    elf_elfheader (abfd)->e_flags |= EF_BFIN_CODE_IN_L1;
+  if (elf32_bfin_data_in_l1)
+    elf_elfheader (abfd)->e_flags |= EF_BFIN_DATA_IN_L1;
+}
+
 /* Return TRUE if the name is a local label.
    bfin local labels begin with L$.  */
 static bfd_boolean
@@ -5787,6 +5803,8 @@ struct bfd_elf_special_section const elf32_bfin_special_sections[] =
                                         elf32_bfin_set_private_flags
 #define bfd_elf32_bfd_print_private_bfd_data \
                                         elf32_bfin_print_private_bfd_data
+#define elf_backend_final_write_processing \
+                                        elf32_bfin_final_write_processing
 #define elf_backend_reloc_type_class    elf32_bfin_reloc_type_class
 #define elf_backend_can_gc_sections 1
 #define elf_backend_special_sections   elf32_bfin_special_sections
index 7f32615adc9a76bd563fb0af4cffa7abc15c00a1..0c431af0f1865c5d7f5036dec1745d253c715373 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-16  Jie Zhang  <jie.zhang@analog.com>
+
+       * readelf.c (get_machine_flags): Deal with Blackfin specific flags.
+
 2010-11-11  Mingming Sun  <mingm.sun@gmail.com>
 
        * readelf.c (get_machine_flags): Add loongson-3a.
index 22ca25c558b22a3452c13359d8baf978a35c99bb..1682e0a26ceb6af009b8bb6841f49c2b24e958fd 100644 (file)
@@ -2238,6 +2238,21 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
          decode_ARM_machine_flags (e_flags, buf);
          break;
 
+       case EM_BLACKFIN:
+         if (e_flags & EF_BFIN_PIC)
+           strcat (buf, ", PIC");
+
+         if (e_flags & EF_BFIN_FDPIC)
+           strcat (buf, ", FDPIC");
+
+         if (e_flags & EF_BFIN_CODE_IN_L1)
+           strcat (buf, ", code in L1");
+
+         if (e_flags & EF_BFIN_DATA_IN_L1)
+           strcat (buf, ", data in L1");
+
+         break;
+
        case EM_CYGNUS_FRV:
          switch (e_flags & EF_FRV_CPU_MASK)
            {
index fb1f432538d7f9aa55410f1bc4ea67fbfc3b1b87..56314cbf355667c13604c1b6cb1ee08d63f1942c 100644 (file)
@@ -1,3 +1,8 @@
+2010-11-16  Jie Zhang  <jie.zhang@analog.com>
+
+       * elf/bfin.h (EF_BFIN_CODE_IN_L1): Define.
+       (EF_BFIN_DATA_IN_L1): Define.
+
 2010-11-04  Ian Lance Taylor  <iant@google.com>
 
        * dwarf2.h (enum dwarf_source_language): Add DW_LANG_Go.
index 851873f97c79412d8cf984119eb1e7532bb64283..8d92906aab3836ae266591c7ea0f175747bda973 100644 (file)
@@ -88,5 +88,8 @@ END_RELOC_NUMBERS (R_BFIN_max)
 #define EF_BFIN_PIC            0x00000001      /* -fpic */
 #define EF_BFIN_FDPIC          0x00000002      /* -mfdpic */
 
+#define EF_BFIN_CODE_IN_L1     0x00000010      /* --code-in-l1 */
+#define EF_BFIN_DATA_IN_L1     0x00000020      /* --data-in-l1 */
+
 #define        EF_BFIN_PIC_FLAGS       (EF_BFIN_PIC | EF_BFIN_FDPIC)
 #endif /* _ELF_BFIN_H */
index 6af766e9c1abcdf3b762cb65343b907c25587084..7ece09f93f98e25a6988e21e96aaa7fbba1ab2ac 100644 (file)
@@ -1,3 +1,11 @@
+2010-11-16  Jie Zhang  <jie.zhang@analog.com>
+
+       * Makefile.am (eelf32bfinfd.c, eelf32bfin.c): Depend on bfin.em.
+       * Makefile.in: Regenerated.
+       * emulparams/bfin.sh (EXTRA_EM_FILE): Set.
+       * emulparams/elf32bfinfd.sh (EXTRA_EM_FILE): Likewise.
+       * emultempl/bfin.em: New.
+
 2010-11-16  Yasuaki Taniguchi  <taniguchi.yasua@jp.fujitsu.com>
 
        * emultempl/pe.em (_list_options): Correct typo.
index b4364be6f1d81c88e92eae1b14d6c10292e4ac88..d9e1bcca243f36523b26e78c1d9d11828e3f55e8 100644 (file)
@@ -791,11 +791,12 @@ edelta68.c: $(srcdir)/emulparams/delta68.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} delta68 "$(tdir_delta68)"
 eelf32bfin.c: $(srcdir)/emulparams/bfin.sh \
-  $(ELF_DEPS) \
+  $(ELF_DEPS) $(srcdir)/emultempl/bfin.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfin "$(tdir_elf32bfin)" bfin
-eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh $(srcdir)/emulparams/bfin.sh \
-  $(ELF_DEPS) \
+eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh \
+  $(srcdir)/emulparams/bfin.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/bfin.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfinfd "$(tdir_elf32bfinfd)" elf32bfinfd
 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
index dac81b31677b9689b21626ef2252d7c3e9b21525..01511bcf6eec7e041c80382dbe2f712221dfba17 100644 (file)
@@ -2214,11 +2214,12 @@ edelta68.c: $(srcdir)/emulparams/delta68.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} delta68 "$(tdir_delta68)"
 eelf32bfin.c: $(srcdir)/emulparams/bfin.sh \
-  $(ELF_DEPS) \
+  $(ELF_DEPS) $(srcdir)/emultempl/bfin.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfin "$(tdir_elf32bfin)" bfin
-eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh $(srcdir)/emulparams/bfin.sh \
-  $(ELF_DEPS) \
+eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh \
+  $(srcdir)/emulparams/bfin.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/bfin.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfinfd "$(tdir_elf32bfinfd)" elf32bfinfd
 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
index 3de89218ccced08bcc93791e7e33397c03244bab..6c0bb4090b8992bf35112dad399952339aaf3929 100755 (executable)
@@ -9,3 +9,4 @@ TEMPLATE_NAME=elf32
 GENERATE_SHLIB_SCRIPT=yes
 EMBEDDED=yes
 USER_LABEL_PREFIX=_
+EXTRA_EM_FILE=bfin
index 3e0420e793e89f2c4ac0da499cf14afffa8832d0..26f8f4701da25ee679f01f2d5cc4d2938fe57397 100644 (file)
@@ -43,3 +43,4 @@ OTHER_SECTIONS="
     *(.l1.text)
   }
 "
+EXTRA_EM_FILE=bfin
This page took 0.034901 seconds and 4 git commands to generate.