RX: bfd - Add RXv3 support.
authorYoshinori Sato <ysato@users.sourceforge.jp>
Tue, 25 Dec 2018 10:58:54 +0000 (19:58 +0900)
committerYoshinori Sato <ysato@users.sourceforge.jp>
Sat, 5 Jan 2019 13:52:53 +0000 (22:52 +0900)
        * bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
        * bfd/bfd-in2.h: Regenerate.
        * bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
        * bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.

bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-rx.c
bfd/elf32-rx.c

index 880ee8e..3d619e4 100644 (file)
@@ -1,3 +1,10 @@
+2019-01-05  Yoshinori Sato <ysato@users.sourceforge.jp>
+
+       * bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
+       * bfd/bfd-in2.h: Regenerate.
+       * bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
+       * bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.
+
 2019-01-04  Lifang Xia  <lifang_xia@c-sky.com>
 
        * config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
index ce97059..647cf0d 100644 (file)
@@ -460,6 +460,8 @@ DESCRIPTION
 .#define bfd_mach_rl78         0x75
 .  bfd_arch_rx,               {* Renesas RX.  *}
 .#define bfd_mach_rx           0x75
+.#define bfd_mach_rx_v2                0x76
+.#define bfd_mach_rx_v3                0x77
 .  bfd_arch_s390,      {* IBM s390.  *}
 .#define bfd_mach_s390_31      31
 .#define bfd_mach_s390_64      64
index 59c48e7..b78d212 100644 (file)
@@ -2359,6 +2359,8 @@ enum bfd_architecture
 #define bfd_mach_rl78          0x75
   bfd_arch_rx,        /* Renesas RX.  */
 #define bfd_mach_rx            0x75
+#define bfd_mach_rx_v2         0x76
+#define bfd_mach_rx_v3         0x77
   bfd_arch_s390,      /* IBM s390.  */
 #define bfd_mach_s390_31       31
 #define bfd_mach_s390_64       64
index 448f1e9..821edeb 100644 (file)
@@ -37,6 +37,36 @@ static const bfd_arch_info_type arch_info_struct[] =
     bfd_default_compatible,    /* Architecture comparison fn.  */
     bfd_default_scan,          /* String to architecture convert fn.  */
     bfd_arch_default_fill,     /* Default fill.  */
+    &arch_info_struct[1]       /* Next in list.  */
+  },
+  {
+    32,                                /* Bits per word.  */
+    32,                                /* Bits per address.  */
+    8,                         /* Bits per byte.  */
+    bfd_arch_rx,               /* Architecture.  */
+    bfd_mach_rx_v2,            /* Machine.  */
+    "rx:v2",                   /* Architecture name.  */
+    "rx:v2",                   /* Printable name.  */
+    3,                         /* Section align power.  */
+    FALSE,                     /* The default ?  */
+    bfd_default_compatible,    /* Architecture comparison fn.  */
+    bfd_default_scan,          /* String to architecture convert fn.  */
+    bfd_arch_default_fill,     /* Default fill.  */
+    &arch_info_struct[2]       /* Next in list.  */
+  },
+  {
+    32,                                /* Bits per word.  */
+    32,                                /* Bits per address.  */
+    8,                         /* Bits per byte.  */
+    bfd_arch_rx,               /* Architecture.  */
+    bfd_mach_rx_v3,            /* Machine.  */
+    "rx:v3",                   /* Architecture name.  */
+    "rx:v3",                   /* Printable name.  */
+    3,                         /* Section align power.  */
+    FALSE,                     /* The default ?  */
+    bfd_default_compatible,    /* Architecture comparison fn.  */
+    bfd_default_scan,          /* String to architecture convert fn.  */
+    bfd_arch_default_fill,     /* Default fill.  */
     NULL                       /* Next in list.  */
   },
 };
index e28edb6..0b5f983 100644 (file)
@@ -3212,7 +3212,12 @@ elf32_rx_machine (bfd * abfd ATTRIBUTE_UNUSED)
         For now we assume that the flags are OK.  */
   if ((elf_elfheader (abfd)->e_flags & EF_RX_CPU_MASK) == EF_RX_CPU_RX)
 #endif
-    return bfd_mach_rx;
+    if ((elf_elfheader (abfd)->e_flags & E_FLAG_RX_V2))
+      return bfd_mach_rx_v2;
+    else if ((elf_elfheader (abfd)->e_flags & E_FLAG_RX_V3))
+      return bfd_mach_rx_v3;
+    else
+      return bfd_mach_rx;
 
   return 0;
 }