+2014-05-16 Kaushik Phata <Kaushik.Phatak@kpit.com>
+
+ * elf32-rl78.c (rl78_elf_merge_private_bfd_data): Complain if
+ 64-bit doubles objects mix with 32-bit doubles objects.
+ (rl78_elf_print_private_bfd_data): Describe 64-bit doubles flag.
+
2014-05-08 Hans-Peter Nilsson <hp@bitrange.com>
* mmo.c: Update URLs in documentation comments.
(*_bfd_error_handler) (_("- %s is G10, %s is not"),
bfd_get_filename (ibfd), bfd_get_filename (obfd));
}
+
+ if (changed_flags & E_FLAG_RL78_64BIT_DOUBLES)
+ {
+ (*_bfd_error_handler)
+ (_("RL78 merge conflict: cannot link 32-bit and 64-bit objects together"));
+
+ if (old_flags & E_FLAG_RL78_64BIT_DOUBLES)
+ (*_bfd_error_handler) (_("- %s is 64-bit, %s is not"),
+ bfd_get_filename (obfd), bfd_get_filename (ibfd));
+ else
+ (*_bfd_error_handler) (_("- %s is 64-bit, %s is not"),
+ bfd_get_filename (ibfd), bfd_get_filename (obfd));
+ }
}
return !error;
if (flags & E_FLAG_RL78_G10)
fprintf (file, _(" [G10]"));
+ if (flags & E_FLAG_RL78_64BIT_DOUBLES)
+ fprintf (file, _(" [64-bit doubles]"));
+
fputc ('\n', file);
return TRUE;
}
+2014-05-16 Kaushik Phata <Kaushik.Phatak@kpit.com>
+
+ * readelf.c (get_machine_flags): Handle RL78 64-bit doubles flag.
+
2014-05-02 Alan Modra <amodra@gmail.com>
* emul_aix.c: Update bfd target vector naming.
case EM_RL78:
if (e_flags & E_FLAG_RL78_G10)
strcat (buf, ", G10");
+ if (e_flags & E_FLAG_RL78_64BIT_DOUBLES)
+ strcat (buf, ", 64-bit doubles");
break;
case EM_RX:
+2014-05-16 Kaushik Phata <Kaushik.Phatak@kpit.com>
+
+ * config/tc-rl78.c (enum options): Add OPTION_32BIT_DOUBLES
+ and OPTION_64BIT_DOUBLES.
+ (md_longopts): Add -m32bit-doubles and -m64bit-doubles.
+ (md_parse_option): Parse -m32bit-doubles and -m64bit-doubles.
+ (md_show_usage): Show all of the RL78 options.
+ (rl78_float_cons): New static functions.
+ (md_pseudo_table): Update handler for "double".
+ * doc/c-rl78.texi: Document new options.
+ * doc/as.texinfo: Likewise.
+
2014-05-13 Matthew Fortune <matthew.fortune@imgtec.com>
* config/tc-mips.c (mips_set_options): Rename gp32 to gp throughout.
{
OPTION_RELAX = OPTION_MD_BASE,
OPTION_G10,
+ OPTION_32BIT_DOUBLES,
+ OPTION_64BIT_DOUBLES,
};
#define RL78_SHORTOPTS ""
{
{"relax", no_argument, NULL, OPTION_RELAX},
{"mg10", no_argument, NULL, OPTION_G10},
+ {"m32bit-doubles", no_argument, NULL, OPTION_32BIT_DOUBLES},
+ {"m64bit-doubles", no_argument, NULL, OPTION_64BIT_DOUBLES},
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
case OPTION_G10:
elf_flags |= E_FLAG_RL78_G10;
return 1;
+
+ case OPTION_32BIT_DOUBLES:
+ elf_flags &= ~ E_FLAG_RL78_64BIT_DOUBLES;
+ return 1;
+
+ case OPTION_64BIT_DOUBLES:
+ elf_flags |= E_FLAG_RL78_64BIT_DOUBLES;
+ return 1;
}
return 0;
}
void
md_show_usage (FILE * stream ATTRIBUTE_UNUSED)
{
+ fprintf (stream, _(" RL78 specific command line options:\n"));
+ fprintf (stream, _(" --mg10 Enable support for G10 variant\n"));
+ fprintf (stream, _(" --m32bit-doubles [default]\n"));
+ fprintf (stream, _(" --m64bit-doubles\n"));
}
-
static void
s_bss (int ignore ATTRIBUTE_UNUSED)
{
demand_empty_rest_of_line ();
}
+static void
+rl78_float_cons (int ignore ATTRIBUTE_UNUSED)
+{
+ if (elf_flags & E_FLAG_RL78_64BIT_DOUBLES)
+ return float_cons ('d');
+ return float_cons ('f');
+}
+
/* The target specific pseudo-ops which we support. */
const pseudo_typeS md_pseudo_table[] =
{
- /* Our "standard" pseudos. */
- { "double", float_cons, 'd' },
- { "bss", s_bss, 0 },
- { "3byte", cons, 3 },
- { "int", cons, 4 },
- { "word", cons, 4 },
+ /* Our "standard" pseudos. */
+ { "double", rl78_float_cons, 'd' },
+ { "bss", s_bss, 0 },
+ { "3byte", cons, 3 },
+ { "int", cons, 4 },
+ { "word", cons, 4 },
/* End of list marker. */
{ NULL, NULL, 0 }
[@b{-msolaris}|@b{-mno-solaris}]
[@b{-nops=@var{count}}]
@end ifset
+@ifset RL78
+
+@emph{Target RL78 options:}
+ [@b{-mg10}]
+ [@b{-m32bit-doubles}|@b{-m64bit-doubles}]
+@end ifset
@ifset RX
@emph{Target RX options:}
Mark the generated binary as targeting the G10 variant of the RL78
architecture.
+@item m32bit-doubles
+Mark the generated binary as one that uses 32-bits to hold the
+@code{double} floating point type. This is the default.
+
+@item m64bit-doubles
+Mark the generated binary as one that uses 64-bits to hold the
+@code{double} floating point type.
+
@end table
@node RL78-Modifiers
@table @code
@item .double
-Output a constant in ``double'' format, which is a 32-bit floating
-point value on RL78.
+Output a constant in ``double'' format, which is either a 32-bit
+or a 64-bit floating point value, depending upon the setting of the
+@option{-m32bit-doubles}|@option{-m64bit-doubles} command line
+option.
@item .bss
Select the BSS section.