* Many files: Added gettext invocations around user-visible

strings.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* dep-in.sed: Added asintl.h.
	* po/Make-in: New file.
	* gasp.c (main): Call setlocale, bindtextdomain, and textdomain.
	Include "asintl.h".
	* read.c (Z_): Renamed from `_'.
	* Makefile.am (SUBDIRS): Added po.
	(POTFILES): new macro.
	(po/POTFILES.in): New target.
	($(OBJS)): Added asintl.h.
	(HFILES): Likewise.
	(INCLUDES): Added -DLOCALEDIR, -I$(top_srcdir)/../intl.
	(as_new_LDADD): Added $(INTLLIBS).
	(as_new_DEPENDENCIES): Added $(INTLDEPS).
	(gasp_new_LDADD): Added $(INTLLIBS).
	(gasp_new_DEPENDENCIES): New macro.
	* configure, aclocal.m4: Rebuilt.
	* configure.in: Call CY_GNU_GETTEXT.  Generate po/Makefile.in and
	po/Makefile.
	(ALL_LINGUAS): Define.
	* macro.c: Include "asintl.h".
	* as.c (main): Call setlocale, bindtextdomain, and textdomain.
	* as.h: Include "asintl.h".
	* config/tc-i386.c (ordinal_names): Removed.
	(md_assemble): Changed error text to avoid ordinal_names.
	(i386_operand): Likewise.
	(reloc): Added as_bad to avoid i18n problems.
	(tc_gen_reloc): Likewise.
	* config/tc-arm.c (bad_args): Now a #define.
	(bad_pc): Likewise.
	* config/obj-vms.c (VMS_stab_parse): Changed type of
	`long_const_msg'.
	(global_symbol_directory): Unified strings to avoid i18n
	problems.
	* config/tc-m68k.c (get_reloc_code): Added some as_bad calls to
	avoid i18n problems.
	* config/tc-ns32k.c (reloc): Added as_bad to avoid i18n problems.
	* config/tc-ppc.c (md_apply_fix3): Added as_bad_where to avoid
	i18n problems.
	* config/tc-sh.c (md_convert_frag): Added as_bad to avoid i18n
	problems.
start-sanitize-v850
	* config/tc-v850.c (md_assemble): Changed C++ comment into C
	comment.
end-sanitize-v850
	* config/tc-vax.c (md_assemble): Added as_warn to avoid i18n
	problems.
	* as.c (print_version_id): Added an fprintf to avoid i18n
	problems.
	* cond.c (cond_finish_check): Added as_bad call to avoid i18n
	problems.
	* expr.c (expr): Added as_warn call to avoid i18n problems.
	* messages.c (as_assert): Changed code to avoid i18n problems.
	(as_abort): Likewise.
	* read.c (pseudo_set): Added as_bad call to avoid i18n problems.
	(s_space): Likewise.
	* po/Make-in, po/POTFILES.in, po/gas.pot: New files.
This commit is contained in:
Tom Tromey 1998-04-22 06:10:03 +00:00
parent 9d04d6183d
commit 48401fcf8c
40 changed files with 4767 additions and 2157 deletions

View File

@ -1,3 +1,66 @@
Tue Apr 21 22:34:25 1998 Tom Tromey <tromey@scribbles.cygnus.com>
* Many files: Added gettext invocations around user-visible
strings.
* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
HAVE_LC_MESSAGES): Define.
* dep-in.sed: Added asintl.h.
* po/Make-in: New file.
* gasp.c (main): Call setlocale, bindtextdomain, and textdomain.
Include "asintl.h".
* read.c (Z_): Renamed from `_'.
* Makefile.am (SUBDIRS): Added po.
(POTFILES): new macro.
(po/POTFILES.in): New target.
($(OBJS)): Added asintl.h.
(HFILES): Likewise.
(INCLUDES): Added -DLOCALEDIR, -I$(top_srcdir)/../intl.
(as_new_LDADD): Added $(INTLLIBS).
(as_new_DEPENDENCIES): Added $(INTLDEPS).
(gasp_new_LDADD): Added $(INTLLIBS).
(gasp_new_DEPENDENCIES): New macro.
* configure, aclocal.m4: Rebuilt.
* configure.in: Call CY_GNU_GETTEXT. Generate po/Makefile.in and
po/Makefile.
(ALL_LINGUAS): Define.
* macro.c: Include "asintl.h".
* as.c (main): Call setlocale, bindtextdomain, and textdomain.
* as.h: Include "asintl.h".
* config/tc-i386.c (ordinal_names): Removed.
(md_assemble): Changed error text to avoid ordinal_names.
(i386_operand): Likewise.
(reloc): Added as_bad to avoid i18n problems.
(tc_gen_reloc): Likewise.
* config/tc-arm.c (bad_args): Now a #define.
(bad_pc): Likewise.
* config/obj-vms.c (VMS_stab_parse): Changed type of
`long_const_msg'.
(global_symbol_directory): Unified strings to avoid i18n
problems.
* config/tc-m68k.c (get_reloc_code): Added some as_bad calls to
avoid i18n problems.
* config/tc-ns32k.c (reloc): Added as_bad to avoid i18n problems.
* config/tc-ppc.c (md_apply_fix3): Added as_bad_where to avoid
i18n problems.
* config/tc-sh.c (md_convert_frag): Added as_bad to avoid i18n
problems.
start-sanitize-v850
* config/tc-v850.c (md_assemble): Changed C++ comment into C
comment.
end-sanitize-v850
* config/tc-vax.c (md_assemble): Added as_warn to avoid i18n
problems.
* as.c (print_version_id): Added an fprintf to avoid i18n
problems.
* cond.c (cond_finish_check): Added as_bad call to avoid i18n
problems.
* expr.c (expr): Added as_warn call to avoid i18n problems.
* messages.c (as_assert): Changed code to avoid i18n problems.
(as_abort): Likewise.
* read.c (pseudo_set): Added as_bad call to avoid i18n problems.
(s_space): Likewise.
* po/Make-in, po/POTFILES.in, po/gas.pot: New files.
Tue Apr 21 17:01:22 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
* config/tc-i386.c (check_prefix): New static function, split out

View File

@ -2,7 +2,7 @@
AUTOMAKE_OPTIONS = cygnus dejagnu
SUBDIRS = doc
SUBDIRS = doc po
tooldir = $(exec_prefix)/$(target_alias)
@ -153,6 +153,7 @@ CFILES = $(GAS_CFILES) gasp.c itbl-ops.c
HFILES = \
as.h \
asintl.h \
bignum.h \
bit_fix.h \
ecoff.h \
@ -340,6 +341,13 @@ GENERIC_OBJS = \
OBJS = $(CONFIG_OBJS) $(GENERIC_OBJS)
POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \
$(OBJ_FORMAT_CFILES) $(TARGET_CPU_HFILES) $(TARGET_CPU_CFILES) \
$(HFILES) $(CFILES) $(GAS_CFILES)
po/POTFILES.in: @MAINT@ Makefile
for file in $(POTFILES); do echo $$file; done | sort > tmp \
&& mv tmp $(srcdir)/po/POTFILES.in
noinst_PROGRAMS = as-new gasp-new
noinst_SCRIPTS = .gdbinit
@ -367,13 +375,13 @@ INCDIR = $(BASEDIR)/include
# Both . and srcdir are used, in that order,
# so that tm.h and config.h will be found in the compilation
# subdirectory rather than in the source directory.
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR)
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR) -I$(srcdir)/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\""
# This should be parallel to INCLUDES, but should replace $(srcdir)
# with $${srcdir}, and should work in a subdirectory. This is used
# when building dependencies, because the dependency building is done
# in a subdirectory.
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\""
# How to link with both our special library facilities
# and the system's installed libraries.
@ -387,18 +395,19 @@ $(OBJS): @ALL_OBJ_DEPS@
as_new_SOURCES = $(GAS_CFILES)
as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS)
$(extra_objects) $(GASLIBS) $(INTLLIBS)
as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS)
$(extra_objects) $(GASLIBS) $(INTLDEPS)
# Stuff that every object file depends upon. If anything is removed
# from this list, remove it from dep-in.sed as well.
$(OBJS): config.h as.h $(TARG_ENV_H) $(OBJ_FORMAT_H) $(TARG_CPU_H) flonum.h \
expr.h struc-symbol.h write.h frags.h hash.h read.h symbols.h tc.h \
obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h
obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h asintl.h
gasp_new_SOURCES = gasp.c macro.c sb.c hash.c
gasp_new_LDADD = ../libiberty/libiberty.a
gasp_new_LDADD = ../libiberty/libiberty.a $(INTLLIBS)
gasp_new_DEPENDENCIES = ../libiberty/libiberty.a $(INTLDEPS)
EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
echo $${rootme}/../expect/expect ; \
@ -657,7 +666,8 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
echo '' > itbl-cpu.h; \
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > .dep; \
$(DEP) -f .dep -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $?
mv -f .depdir/.dep .dep1
sed -e '/IF YOU PUT ANYTHING/,$$d' < .depdir/.dep > .dep1
rm -f .depdir/.dep
# Work out the special dependencies for the tc-*.c files.
.tcdep: $(TARGET_CPU_CFILES)
@ -686,9 +696,9 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
else true; fi; \
done; \
done
echo 'TCDEP_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \' >> .tcdepa
echo ' $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h \' >> .tcdepa
echo ' $(INCDIR)/opcode/hppa.h $(BFDDIR)/som.h' >> .tcdepa
echo 'TCDEP_hppa_som = $$(srcdir)/config/tc-hppa.h subsegs.h \' >> .tcdepa
echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> .tcdepa
echo ' $$(INCDIR)/opcode/hppa.h $$(BFDDIR)/som.h' >> .tcdepa
# We don't try to handle all multi cases.
for c in $(CPU_TYPES); do \
$(CPU_MULTI_VALID) \
@ -731,10 +741,10 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
else true; fi; \
done; \
done
echo 'OBJDEP_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \' >> .objdepa
echo ' $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h \' >> .objdepa
echo ' $(BFDDIR)/som.h $(INCDIR)/aout/stab_gnu.h \' >> .objdepa
echo ' $(INCDIR)/aout/stab.def' >> .objdepa
echo 'OBJDEP_hppa_som = $$(srcdir)/config/obj-som.h subsegs.h \' >> .objdepa
echo ' $$(INCDIR)/obstack.h $$(BFDDIR)/libhppa.h \' >> .objdepa
echo ' $$(BFDDIR)/som.h $$(INCDIR)/aout/stab_gnu.h \' >> .objdepa
echo ' $$(INCDIR)/aout/stab.def' >> .objdepa
# We don't try to handle all multi cases.
for c in $(CPU_TYPES); do \
$(CPU_MULTI_VALID) \
@ -773,7 +783,7 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
else true; fi; \
done; \
done
echo 'DEP_hppa_som = $(srcdir)/../bfd/som.h' >> .dep2a
echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> .dep2a
# We don't try to handle all multi cases.
for c in $(CPU_TYPES); do \
$(CPU_MULTI_VALID) \
@ -791,10 +801,11 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
mv -f .dep2a .dep2
dep.sed: dep-in.sed config.status
srcdir=`cd $(srcdir); pwd`; \
sed <$(srcdir)/dep-in.sed >dep.sed \
-e 's!@INCDIR@!$(INCDIR)!' \
-e 's!@BFDDIR@!$(BFDDIR)!' \
-e 's!@SRCDIR@!$(srcdir)!'
-e "s!@INCDIR@!$${srcdir}/../include!" \
-e "s!@BFDDIR@!$${srcdir}/../bfd!" \
-e "s!@SRCDIR@!$${srcdir}!"
dep: .dep
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
@ -855,7 +866,6 @@ e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c emul.h \
emul-target.h
e-mipself.o: $(srcdir)/config/e-mipself.c emul.h emul-target.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
TCDEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h
TCDEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
@ -957,12 +967,12 @@ TCDEP_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/opcode/i960.h
TCDEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
subsegs.h $(INCDIR)/obstack.h cgen-opc.h $(srcdir)/../opcodes/m32r-opc.h \
$(INCDIR)/opcode/cgen.h
subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h cgen-opc.h \
$(srcdir)/../opcodes/m32r-opc.h $(INCDIR)/opcode/cgen.h
TCDEP_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h subsegs.h \
$(INCDIR)/obstack.h cgen-opc.h $(srcdir)/../opcodes/m32r-opc.h \
$(INCDIR)/obstack.h $(INCDIR)/symcat.h cgen-opc.h $(srcdir)/../opcodes/m32r-opc.h \
$(INCDIR)/opcode/cgen.h
TCDEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
@ -1129,7 +1139,7 @@ OBJDEP_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h subsegs.h \
$(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
$(INCDIR)/aout/aout64.h
$(INCDIR)/elf/alpha.h $(INCDIR)/aout/aout64.h
OBJDEP_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h
OBJDEP_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \

View File

@ -66,28 +66,47 @@ target_triplet = @target@
ALL_OBJ_DEPS = @ALL_OBJ_DEPS@
AS = @AS@
BFDLIB = @BFDLIB@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
NM = @NM@
OPCODES_LIB = @OPCODES_LIB@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
atof = @atof@
extra_objects = @extra_objects@
l = @l@
obj_format = @obj_format@
target_cpu_type = @target_cpu_type@
te_file = @te_file@
AUTOMAKE_OPTIONS = cygnus dejagnu
SUBDIRS = doc
SUBDIRS = doc po
tooldir = $(exec_prefix)/$(target_alias)
@ -238,6 +257,7 @@ CFILES = $(GAS_CFILES) gasp.c itbl-ops.c
HFILES = \
as.h \
asintl.h \
bignum.h \
bit_fix.h \
ecoff.h \
@ -425,6 +445,10 @@ GENERIC_OBJS = \
OBJS = $(CONFIG_OBJS) $(GENERIC_OBJS)
POTFILES = $(MULTI_CFILES) $(TARGET_ENV_HFILES) $(OBJ_FORMAT_HFILES) \
$(OBJ_FORMAT_CFILES) $(TARGET_CPU_HFILES) $(TARGET_CPU_CFILES) \
$(HFILES) $(CFILES) $(GAS_CFILES)
noinst_PROGRAMS = as-new gasp-new
noinst_SCRIPTS = .gdbinit
@ -445,13 +469,13 @@ INCDIR = $(BASEDIR)/include
# Both . and srcdir are used, in that order,
# so that tm.h and config.h will be found in the compilation
# subdirectory rather than in the source directory.
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR)
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) -I$(srcdir)/.. -I$(BFDDIR) -I$(srcdir)/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\""
# This should be parallel to INCLUDES, but should replace $(srcdir)
# with $${srcdir}, and should work in a subdirectory. This is used
# when building dependencies, because the dependency building is done
# in a subdirectory.
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../intl -DLOCALEDIR="\"$(prefix)/share/locale\""
# How to link with both our special library facilities
# and the system's installed libraries.
@ -463,12 +487,13 @@ STAGESTUFF = *.o $(noinst_PROGRAMS)
as_new_SOURCES = $(GAS_CFILES)
as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS)
$(extra_objects) $(GASLIBS) $(INTLLIBS)
as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS)
$(extra_objects) $(GASLIBS) $(INTLDEPS)
gasp_new_SOURCES = gasp.c macro.c sb.c hash.c
gasp_new_LDADD = ../libiberty/libiberty.a
gasp_new_LDADD = ../libiberty/libiberty.a $(INTLLIBS)
gasp_new_DEPENDENCIES = ../libiberty/libiberty.a $(INTLDEPS)
EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
echo $${rootme}/../expect/expect ; \
@ -1216,7 +1241,6 @@ literal.o macro.o messages.o output-file.o read.o sb.o stabs.o \
subsegs.o symbols.o write.o
as_new_LDFLAGS =
gasp_new_OBJECTS = gasp.o macro.o sb.o hash.o
gasp_new_DEPENDENCIES = ../libiberty/libiberty.a
gasp_new_LDFLAGS =
SCRIPTS = $(noinst_SCRIPTS)
@ -1575,6 +1599,9 @@ install-exec-am install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
po/POTFILES.in: @MAINT@ Makefile
for file in $(POTFILES); do echo $$file; done | sort > tmp \
&& mv tmp $(srcdir)/po/POTFILES.in
$(srcdir)/make-gas.com: stamp-mk.com
stamp-mk.com: vmsconf.sh Makefile
@ -1589,7 +1616,7 @@ $(OBJS): @ALL_OBJ_DEPS@
# from this list, remove it from dep-in.sed as well.
$(OBJS): config.h as.h $(TARG_ENV_H) $(OBJ_FORMAT_H) $(TARG_CPU_H) flonum.h \
expr.h struc-symbol.h write.h frags.h hash.h read.h symbols.h tc.h \
obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h
obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h asintl.h
check-DEJAGNU: site.exp
if [ -d testsuite ]; then \

View File

@ -77,3 +77,18 @@
/* Needed only for SCO 5. */
#undef SCO_ELF
/* Define to 1 if NLS is requested. */
#undef ENABLE_NLS
/* Define as 1 if you have catgets and don't want to use GNU gettext. */
#undef HAVE_CATGETS
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Define as 1 if you have the stpcpy function. */
#undef HAVE_STPCPY
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES

View File

@ -116,9 +116,11 @@ print_version_id ()
return;
printed = 1;
fprintf (stderr, "GNU assembler version %s (%s)", VERSION, TARGET_ALIAS);
#ifdef BFD_ASSEMBLER
fprintf (stderr, ", using BFD version %s", BFD_VERSION);
fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s"),
VERSION, TARGET_ALIAS, BFD_VERSION);
#else
fprintf (stderr, _("GNU assembler version %s (%s)"), VERSION, TARGET_ALIAS);
#endif
fprintf (stderr, "\n");
}
@ -127,9 +129,9 @@ static void
show_usage (stream)
FILE *stream;
{
fprintf (stream, "Usage: %s [option...] [asmfile...]\n", myname);
fprintf (stream, _("Usage: %s [option...] [asmfile...]\n"), myname);
fprintf (stream, "\
fprintf (stream, _("\
Options:\n\
-a[sub-option...] turn on listings\n\
Sub-options [default hls]:\n\
@ -140,8 +142,8 @@ Options:\n\
m include macro expansions\n\
n omit forms processing\n\
s include symbols\n\
=file set listing file name (must be last sub-option)\n");
fprintf (stream, "\
=file set listing file name (must be last sub-option)\n"));
fprintf (stream, _("\
-D produce assembler debugging messages\n\
--defsym SYM=VAL define symbol SYM to given value\n\
-f skip whitespace and comment preprocessing\n\
@ -150,8 +152,8 @@ Options:\n\
-I DIR add DIR to search list for .include directives\n\
-J don't warn about signed overflow\n\
-K warn when differences altered for long displacements\n\
-L,--keep-locals keep local symbols (e.g. starting with `L')\n");
fprintf (stream, "\
-L,--keep-locals keep local symbols (e.g. starting with `L')\n"));
fprintf (stream, _("\
-M,--mri assemble in MRI compatibility mode\n\
--MD FILE write dependency information in FILE (default none)\n\
-nocpp ignored\n\
@ -166,8 +168,8 @@ Options:\n\
matching the specifications defined in file INSTTBL\n\
-w ignored\n\
-X ignored\n\
-Z generate object file even after errors\n");
fprintf (stream, "\
-Z generate object file even after errors\n"));
fprintf (stream, _("\
--listing-lhs-width set the width in words of the output data column of\n\
the listing\n\
--listing-lhs-width2 set the width in words of the continuation lines\n\
@ -176,11 +178,11 @@ Options:\n\
--listing-rhs-width set the max width in characters of the lines from\n\
the source file\n\
--listing-cont-lines set the maximum number of continuation lines used\n\
for the output data column of the listing\n");
for the output data column of the listing\n"));
md_show_usage (stream);
fprintf (stream, "\nReport bugs to bug-gnu-utils@prep.ai.mit.edu\n");
fprintf (stream, _("\nReport bugs to bug-gnu-utils@gnu.org\n"));
}
#ifdef USE_EMULATIONS
@ -217,7 +219,7 @@ select_emulation_mode (argc, argv)
p = argv[i+1];
if (!p || !*p)
as_fatal ("missing emulation mode name");
as_fatal (_("missing emulation mode name"));
em = p;
do_default:
@ -232,7 +234,7 @@ select_emulation_mode (argc, argv)
if (!strcmp (emulations[i]->name, em))
break;
if (i == n_emulations)
as_fatal ("unrecognized emulation name `%s'", em);
as_fatal (_("unrecognized emulation name `%s'"), em);
this_emulation = emulations[i];
}
else
@ -450,33 +452,33 @@ parse_args (pargc, pargv)
case OPTION_VERSION:
/* This output is intended to follow the GNU standards document. */
printf ("GNU assembler %s\n", VERSION);
printf ("Copyright 1997 Free Software Foundation, Inc.\n");
printf ("\
printf (_("GNU assembler %s\n"), VERSION);
printf (_("Copyright 1997 Free Software Foundation, Inc.\n"));
printf (_("\
This program is free software; you may redistribute it under the terms of\n\
the GNU General Public License. This program has absolutely no warranty.\n");
printf ("This assembler was configured for a target of `%s'.\n",
the GNU General Public License. This program has absolutely no warranty.\n"));
printf (_("This assembler was configured for a target of `%s'.\n"),
TARGET_ALIAS);
exit (EXIT_SUCCESS);
case OPTION_EMULATION:
#ifdef USE_EMULATIONS
if (strcmp (optarg, this_emulation->name))
as_fatal ("multiple emulation names specified");
as_fatal (_("multiple emulation names specified"));
#else
as_fatal ("emulations not handled in this configuration");
as_fatal (_("emulations not handled in this configuration"));
#endif
break;
case OPTION_DUMPCONFIG:
fprintf (stderr, "alias = %s\n", TARGET_ALIAS);
fprintf (stderr, "canonical = %s\n", TARGET_CANONICAL);
fprintf (stderr, "cpu-type = %s\n", TARGET_CPU);
fprintf (stderr, _("alias = %s\n"), TARGET_ALIAS);
fprintf (stderr, _("canonical = %s\n"), TARGET_CANONICAL);
fprintf (stderr, _("cpu-type = %s\n"), TARGET_CPU);
#ifdef TARGET_OBJ_FORMAT
fprintf (stderr, "format = %s\n", TARGET_OBJ_FORMAT);
fprintf (stderr, _("format = %s\n"), TARGET_OBJ_FORMAT);
#endif
#ifdef TARGET_FORMAT
fprintf (stderr, "bfd-target = %s\n", TARGET_FORMAT);
fprintf (stderr, _("bfd-target = %s\n"), TARGET_FORMAT);
#endif
exit (EXIT_SUCCESS);
@ -489,7 +491,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
for (s = optarg; *s != '\0' && *s != '='; s++)
;
if (*s == '\0')
as_fatal ("bad defsym; format is --defsym name=value");
as_fatal (_("bad defsym; format is --defsym name=value"));
*s++ = '\0';
i = strtol (s, (char **) NULL, 0);
n = (struct defsym_list *) xmalloc (sizeof *n);
@ -509,7 +511,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
if (optarg == NULL)
{
as_warn ( "No file name following -t option\n" );
as_warn ( _("No file name following -t option\n") );
break;
}
@ -525,7 +527,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
itbl_files->name = xstrdup (optarg);
if (itbl_parse (itbl_files->name) != 0)
{
fprintf (stderr, "Failed to read instruction table %s\n",
fprintf (stderr, _("Failed to read instruction table %s\n"),
itbl_files->name);
exit (EXIT_SUCCESS);
}
@ -625,7 +627,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
optarg += strlen (listing_filename);
break;
default:
as_fatal ("invalid listing option `%c'", *optarg);
as_fatal (_("invalid listing option `%c'"), *optarg);
break;
}
optarg++;
@ -685,6 +687,9 @@ main (argc, argv)
start_time = get_run_time ();
setlocale (LC_MESSAGES, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
if (debug_memory)
{
@ -843,10 +848,10 @@ dump_statistics ()
#endif
long run_time = get_run_time () - start_time;
fprintf (stderr, "%s: total time in assembly: %ld.%06ld\n",
fprintf (stderr, _("%s: total time in assembly: %ld.%06ld\n"),
myname, run_time / 1000000, run_time % 1000000);
#ifdef HAVE_SBRK
fprintf (stderr, "%s: data size %ld\n",
fprintf (stderr, _("%s: data size %ld\n"),
myname, (long) (lim - (char *) &environ));
#endif
@ -921,9 +926,9 @@ perform_an_assembly_pass (argc, argv)
#else /* BFD_ASSEMBLER */
/* Create the standard sections, and those the assembler uses
internally. */
text_section = subseg_new (".text", 0);
data_section = subseg_new (".data", 0);
bss_section = subseg_new (".bss", 0);
text_section = subseg_new (TEXT_SECTION_NAME, 0);
data_section = subseg_new (DATA_SECTION_NAME, 0);
bss_section = subseg_new (BSS_SECTION_NAME, 0);
/* @@ FIXME -- we're setting the RELOC flag so that sections are assumed
to have relocs, otherwise we don't find out in time. */
applicable = bfd_applicable_section_flags (stdoutput);

44
gas/asintl.h Normal file
View File

@ -0,0 +1,44 @@
/* asintl.h - gas-specific header for gettext code.
Copyright (C) 1998 Free Software Foundation, Inc.
Written by Tom Tromey <tromey@cygnus.com>
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifdef ENABLE_NLS
#include <libintl.h>
#define _(String) gettext (String)
#ifdef gettext_noop
#define N_(String) gettext_noop (String)
#else
#define N_(String) (String)
#endif
#else
/* Stubs that do something close enough. */
#define textdomain(String) (String)
#define gettext(String) (String)
#define dgettext(Domain,Message) (Message)
#define dcgettext(Domain,Message,Type) (Message)
#define bindtextdomain(Domain,Directory) (Domain)
#define _(String) (String)
#define N_(String) (String)
/* In this case we don't care about the value. */
#ifndef LC_MESSAGES
#define LC_MESSAGES 0
#endif
#endif

View File

@ -20,6 +20,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <setjmp.h>
#include "ansidecl.h"
#include "bfd.h"
#include "symcat.h"
#include "cgen-opc.h"
#include "as.h"
#include "subsegs.h"
@ -80,7 +81,7 @@ cgen_queue_fixup (opindex, opinfo, expP)
{
/* We need to generate a fixup for this expression. */
if (num_fixups >= MAX_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[num_fixups].exp = * expP;
fixups[num_fixups].opindex = opindex;
fixups[num_fixups].opinfo = opinfo;
@ -281,11 +282,11 @@ cgen_parse_operand (want, strP, opindex, opinfo, resultP, valueP)
switch (exp.X_op)
{
case O_illegal :
errmsg = "illegal operand";
errmsg = _("illegal operand");
* resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
break;
case O_absent :
errmsg = "missing operand";
errmsg = _("missing operand");
* resultP = CGEN_PARSE_OPERAND_RESULT_ERROR;
break;
case O_constant :
@ -475,8 +476,8 @@ cgen_md_apply_fix3 (fixP, valueP, seg)
valueT * valueP;
segT seg;
{
char * where = fixP->fx_frag->fr_literal + fixP->fx_where;
valueT value;
char * where = fixP->fx_frag->fr_literal + fixP->fx_where;
valueT value;
/* FIXME FIXME FIXME: The value we are passed in *valuep includes
the symbol values. Since we are using BFD_ASSEMBLER, if we are
@ -507,7 +508,7 @@ cgen_md_apply_fix3 (fixP, valueP, seg)
{
/* We don't actually support subtracting a symbol. */
as_bad_where (fixP->fx_file, fixP->fx_line,
"expression too complex");
_("expression too complex"));
}
}
}
@ -528,14 +529,11 @@ cgen_md_apply_fix3 (fixP, valueP, seg)
finish the job. Testing for pcrel is a temporary hack. */
|| fixP->fx_pcrel)
{
/* This may seem like overkill, and using bfd_install_relocation or
some such may be preferable, but this is simple. */
CGEN_FIELDS_BITSIZE (& fields) = CGEN_INSN_BITSIZE (insn);
CGEN_SYM (set_operand) (opindex, & value, & fields);
errmsg = CGEN_SYM (validate_operand) (opindex, & fields);
errmsg = CGEN_SYM (insert_operand) (opindex, & fields, where);
if (errmsg)
as_warn_where (fixP->fx_file, fixP->fx_line, "%s\n", errmsg);
CGEN_SYM (insert_operand) (opindex, & fields, where);
}
if (fixP->fx_done)
@ -554,7 +552,7 @@ cgen_md_apply_fix3 (fixP, valueP, seg)
else
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"unresolved expression that must be resolved");
_("unresolved expression that must be resolved"));
fixP->fx_done = 1;
return 1;
}
@ -609,7 +607,7 @@ cgen_tc_gen_reloc (section, fixP)
if (reloc->howto == (reloc_howto_type *) NULL)
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"internal error: can't export reloc type %d (`%s')",
_("internal error: can't export reloc type %d (`%s')"),
fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type));
return NULL;
}

View File

@ -1,6 +1,6 @@
/* atof_tahoe.c - turn a string into a Tahoe floating point number
Copyright (C) 1987 Free Software Foundation, Inc.
Copyright (C) 1987, 1998 Free Software Foundation, Inc.
*/
/* This is really a simplified version of atof_vax.c. I glommed it wholesale
@ -425,7 +425,7 @@ md_atof (what_statement_type, literalP, sizeP)
};
*sizeP = number_of_chars;
return kind_of_float ? 0 : "Bad call to md_atof()";
return kind_of_float ? 0 : _("Bad call to md_atof()");
}
/* atof_tahoe.c */

View File

@ -309,7 +309,7 @@ obj_crawl_symbol_chain (headers)
{
if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
{
as_bad ("Local symbol %s never defined", S_GET_NAME (symbolP));
as_bad (_("Local symbol %s never defined"), S_GET_NAME (symbolP));
} /* oops. */
/* Unhook it from the chain */

View File

@ -1,5 +1,5 @@
/* coff object file format
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 1997
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 1998
Free Software Foundation, Inc.
This file is part of GAS.
@ -30,6 +30,7 @@
#define KEEP_RELOC_INFO
#endif
static void obj_coff_bss PARAMS ((int));
const char *s_get_name PARAMS ((symbolS * s));
static symbolS *def_symbol_in_progress;
@ -129,7 +130,7 @@ tag_insert (name, symbolP)
if ((error_string = hash_jam (tag_hash, name, (char *) symbolP)))
{
as_fatal ("Inserting \"%s\" into structure table failed: %s",
as_fatal (_("Inserting \"%s\" into structure table failed: %s"),
name, error_string);
}
}
@ -165,7 +166,18 @@ tag_find_or_make (name)
return symbolP;
}
/* We accept the .bss directive to set the section for backward
compatibility with earlier versions of gas. */
static void
obj_coff_bss (ignore)
int ignore;
{
if (*input_line_pointer == '\n')
subseg_new (".bss", get_absolute_expression ());
else
s_lcomm (0);
}
#ifdef BFD_ASSEMBLER
@ -401,7 +413,7 @@ obj_coff_ln (appline)
if (! appline && def_symbol_in_progress != NULL)
{
as_warn (".ln pseudo-op inside .def/.endef: ignored.");
as_warn (_(".ln pseudo-op inside .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
}
@ -461,7 +473,7 @@ obj_coff_def (what)
if (def_symbol_in_progress != NULL)
{
as_warn (".def pseudo-op used inside of .def/.endef: ignored.");
as_warn (_(".def pseudo-op used inside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -506,7 +518,7 @@ obj_coff_endef (ignore)
dim_index = 0;
if (def_symbol_in_progress == NULL)
{
as_warn (".endef pseudo-op used outside of .def/.endef: ignored.");
as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -540,7 +552,7 @@ obj_coff_endef (ignore)
if (name[1] == 'b' && name[2] == 'f')
{
if (! in_function ())
as_warn ("`%s' symbol without preceding function", name);
as_warn (_("`%s' symbol without preceding function"), name);
/* SA_SET_SYM_LNNO (def_symbol_in_progress, 12345);*/
/* Will need relocating */
SF_SET_PROCESS (def_symbol_in_progress);
@ -577,7 +589,7 @@ obj_coff_endef (ignore)
case C_USTATIC:
case C_EXTDEF:
case C_ULABEL:
as_warn ("unexpected storage class %d",
as_warn (_("unexpected storage class %d"),
S_GET_STORAGE_CLASS (def_symbol_in_progress));
break;
} /* switch on storage class */
@ -679,7 +691,7 @@ obj_coff_dim (ignore)
if (def_symbol_in_progress == NULL)
{
as_warn (".dim pseudo-op used outside of .def/.endef: ignored.");
as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -699,7 +711,7 @@ obj_coff_dim (ignore)
break;
default:
as_warn ("badly formed .dim directive ignored");
as_warn (_("badly formed .dim directive ignored"));
/* intentional fallthrough */
case '\n':
case ';':
@ -750,7 +762,7 @@ obj_coff_size (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".size pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".size pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -766,7 +778,7 @@ obj_coff_scl (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".scl pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".scl pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -784,7 +796,7 @@ obj_coff_tag (ignore)
if (def_symbol_in_progress == NULL)
{
as_warn (".tag pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".tag pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
}
@ -803,7 +815,7 @@ obj_coff_tag (ignore)
tag_find_or_make (symbol_name));
if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L)
{
as_warn ("tag not found for .tag %s", symbol_name);
as_warn (_("tag not found for .tag %s"), symbol_name);
} /* not defined */
SF_SET_TAGGED (def_symbol_in_progress);
@ -818,7 +830,7 @@ obj_coff_type (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".type pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".type pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -840,7 +852,7 @@ obj_coff_val (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".val pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".val pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -958,7 +970,7 @@ coff_frob_symbol (symp, punt)
symbolS *begin;
begin = *(symbolS **) stack_pop (block_stack);
if (begin == 0)
as_warn ("mismatched .eb");
as_warn (_("mismatched .eb"));
else
next_set_end = begin;
}
@ -976,7 +988,7 @@ coff_frob_symbol (symp, punt)
if (S_GET_STORAGE_CLASS (symp) == C_EFCN)
{
if (coff_last_function == 0)
as_fatal ("C_EFCN symbol out of scope");
as_fatal (_("C_EFCN symbol out of scope"));
SA_SET_SYM_FSIZE (coff_last_function,
(long) (S_GET_VALUE (symp)
- S_GET_VALUE (coff_last_function)));
@ -1088,8 +1100,9 @@ coff_adjust_section_syms (abfd, sec, x)
fixS *fixp = seginfo->fix_root;
while (fixp)
{
if (! fixp->fx_done)
nrelocs++;
fixp = fixp->fx_next;
nrelocs++;
}
}
if (bfd_get_section_size_before_reloc (sec) == 0
@ -1105,7 +1118,7 @@ coff_adjust_section_syms (abfd, sec, x)
}
void
coff_frob_file ()
coff_frob_file_after_relocs ()
{
bfd_map_over_sections (stdoutput, coff_adjust_section_syms, (char*) 0);
}
@ -1184,12 +1197,12 @@ obj_coff_section (ignore)
case 'i': /* STYP_INFO */
case 'l': /* STYP_LIB */
case 'o': /* STYP_OVER */
as_warn ("unsupported section attribute '%c'",
as_warn (_("unsupported section attribute '%c'"),
*input_line_pointer);
break;
default:
as_warn("unknown section attribute '%c'",
as_warn(_("unknown section attribute '%c'"),
*input_line_pointer);
break;
}
@ -1205,7 +1218,7 @@ obj_coff_section (ignore)
if (flags != SEC_NO_FLAGS)
{
if (! bfd_set_section_flags (stdoutput, sec, flags))
as_warn ("error setting flags for \"%s\": %s",
as_warn (_("error setting flags for \"%s\": %s"),
bfd_section_name (stdoutput, sec),
bfd_errmsg (bfd_get_error ()));
}
@ -1324,7 +1337,7 @@ symbol_dump ()
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
printf("0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n",
printf(_("0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"),
(unsigned long) symbolP,
S_GET_NAME(symbolP),
(long) S_GET_DATA_TYPE(symbolP),
@ -1433,7 +1446,6 @@ static void adjust_stab_section PARAMS ((bfd *abfd, segT seg));
static void obj_coff_lcomm PARAMS ((int));
static void obj_coff_text PARAMS ((int));
static void obj_coff_data PARAMS ((int));
static void obj_coff_bss PARAMS ((int));
static void obj_coff_ident PARAMS ((int));
void obj_coff_section PARAMS ((int));
@ -1519,7 +1531,7 @@ size_section (abfd, idx)
size = frag->fr_address;
if (frag->fr_address != size)
{
fprintf (stderr, "Out of step\n");
fprintf (stderr, _("Out of step\n"));
size = frag->fr_address;
}
@ -1684,7 +1696,7 @@ do_relocs_for (abfd, h, file_cursor)
/* Turn the segment of the symbol into an offset. */
if (symbol_ptr)
{
resolve_symbol_value (symbol_ptr);
resolve_symbol_value (symbol_ptr, 1);
if (! symbol_ptr->sy_resolved)
{
char *file;
@ -1692,9 +1704,9 @@ do_relocs_for (abfd, h, file_cursor)
if (expr_symbol_where (symbol_ptr, &file, &line))
as_bad_where (file, line,
"unresolved relocation");
_("unresolved relocation"));
else
as_bad ("bad relocation: symbol `%s' not in symbol table",
as_bad (_("bad relocation: symbol `%s' not in symbol table"),
S_GET_NAME (symbol_ptr));
}
dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot;
@ -1954,7 +1966,7 @@ coff_header_append (abfd, h)
&(segment_info[i].scnhdr),
buffer);
if (size == 0)
as_bad ("bfd_coff_swap_scnhdr_out failed");
as_bad (_("bfd_coff_swap_scnhdr_out failed"));
bfd_write (buffer, size, 1, abfd);
}
}
@ -2039,7 +2051,7 @@ obj_coff_ln (appline)
if (! appline && def_symbol_in_progress != NULL)
{
as_warn (".ln pseudo-op inside .def/.endef: ignored.");
as_warn (_(".ln pseudo-op inside .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* wrong context */
@ -2096,7 +2108,7 @@ obj_coff_def (what)
if (def_symbol_in_progress != NULL)
{
as_warn (".def pseudo-op used inside of .def/.endef: ignored.");
as_warn (_(".def pseudo-op used inside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2149,7 +2161,7 @@ obj_coff_endef (ignore)
dim_index = 0;
if (def_symbol_in_progress == NULL)
{
as_warn (".endef pseudo-op used outside of .def/.endef: ignored.");
as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2181,7 +2193,7 @@ obj_coff_endef (ignore)
{ /* .bf */
if (function_lineoff < 0)
{
fprintf (stderr, "`.bf' symbol without preceding function\n");
fprintf (stderr, _("`.bf' symbol without preceding function\n"));
} /* missing function symbol */
SA_GET_SYM_LNNOPTR (last_line_symbol) = function_lineoff;
@ -2220,7 +2232,7 @@ obj_coff_endef (ignore)
case C_USTATIC:
case C_EXTDEF:
case C_ULABEL:
as_warn ("unexpected storage class %d", S_GET_STORAGE_CLASS (def_symbol_in_progress));
as_warn (_("unexpected storage class %d"), S_GET_STORAGE_CLASS (def_symbol_in_progress));
break;
} /* switch on storage class */
@ -2327,7 +2339,7 @@ obj_coff_dim (ignore)
if (def_symbol_in_progress == NULL)
{
as_warn (".dim pseudo-op used outside of .def/.endef: ignored.");
as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2347,7 +2359,7 @@ obj_coff_dim (ignore)
break;
default:
as_warn ("badly formed .dim directive ignored");
as_warn (_("badly formed .dim directive ignored"));
/* intentional fallthrough */
case '\n':
case ';':
@ -2410,7 +2422,7 @@ obj_coff_size (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".size pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".size pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2426,7 +2438,7 @@ obj_coff_scl (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".scl pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".scl pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2444,7 +2456,7 @@ obj_coff_tag (ignore)
if (def_symbol_in_progress == NULL)
{
as_warn (".tag pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".tag pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
}
@ -2462,7 +2474,7 @@ obj_coff_tag (ignore)
(long) tag_find_or_make (symbol_name));
if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L)
{
as_warn ("tag not found for .tag %s", symbol_name);
as_warn (_("tag not found for .tag %s"), symbol_name);
} /* not defined */
SF_SET_TAGGED (def_symbol_in_progress);
@ -2477,7 +2489,7 @@ obj_coff_type (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".type pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".type pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2499,7 +2511,7 @@ obj_coff_val (ignore)
{
if (def_symbol_in_progress == NULL)
{
as_warn (".val pseudo-op used outside of .def/.endef ignored.");
as_warn (_(".val pseudo-op used outside of .def/.endef ignored."));
demand_empty_rest_of_line ();
return;
} /* if not inside .def/.endef */
@ -2618,7 +2630,7 @@ yank_symbols ()
if (symbolP->sy_mri_common)
{
if (S_GET_STORAGE_CLASS (symbolP) == C_EXT)
as_bad ("%s: global symbols not supported in common sections",
as_bad (_("%s: global symbols not supported in common sections"),
S_GET_NAME (symbolP));
symbol_remove (symbolP, &symbol_rootP, &symbol_lastP);
continue;
@ -2660,7 +2672,7 @@ yank_symbols ()
S_SET_SEGMENT (symbolP, SEG_E0);
} /* push data into text */
resolve_symbol_value (symbolP);
resolve_symbol_value (symbolP, 1);
if (S_GET_STORAGE_CLASS (symbolP) == C_NULL)
{
@ -2691,7 +2703,7 @@ yank_symbols ()
register symbolS *begin_symbolP;
begin_symbolP = *(symbolS **) stack_pop (block_stack);
if (begin_symbolP == (symbolS *) 0)
as_warn ("mismatched .eb");
as_warn (_("mismatched .eb"));
else
SA_SET_SYM_ENDNDX (begin_symbolP, symbol_number + 2);
}
@ -2731,7 +2743,7 @@ yank_symbols ()
/* I don't even know if this is needed for sdb. But
the standard assembler generates it, so... */
if (last_functionP == (symbolS *) 0)
as_fatal ("C_EFCN symbol out of scope");
as_fatal (_("C_EFCN symbol out of scope"));
SA_SET_SYM_FSIZE (last_functionP,
(long) (S_GET_VALUE (symbolP) -
S_GET_VALUE (last_functionP)));
@ -3126,7 +3138,7 @@ write_object_file ()
if (abfd == 0)
{
as_perror ("FATAL: Can't create %s", out_file_name);
as_perror (_("FATAL: Can't create %s"), out_file_name);
exit (EXIT_FAILURE);
}
bfd_set_format (abfd, bfd_object);
@ -3204,7 +3216,11 @@ write_object_file ()
/* I think the section alignment is only used on the i960; the
i960 needs it, and it should do no harm on other targets. */
#ifdef ALIGNMENT_IN_S_FLAGS
segment_info[i].scnhdr.s_flags |= (section_alignment[i] & 0xF) << 8;
#else
segment_info[i].scnhdr.s_align = 1 << section_alignment[i];
#endif
if (i == SEG_E0)
H_SET_TEXT_SIZE (&headers, size);
@ -3296,7 +3312,7 @@ write_object_file ()
/* Recent changes to write need this, but where it should
go is up to Ken.. */
if (bfd_close_all_done (abfd) == false)
as_fatal ("Can't close %s: %s", out_file_name,
as_fatal (_("Can't close %s: %s"), out_file_name,
bfd_errmsg (bfd_get_error ()));
#else
{
@ -3330,7 +3346,7 @@ obj_coff_add_segment (name)
if (i == SEG_LAST)
{
as_bad ("Too many new sections; can't add \"%s\"", name);
as_bad (_("Too many new sections; can't add \"%s\""), name);
return now_seg;
}
@ -3422,7 +3438,7 @@ obj_coff_section (ignore)
case 'x': flags |= STYP_TEXT; break;
case 'r': flags |= STYP_LIT; break;
default:
as_warn("unknown section attribute '%c'",
as_warn(_("unknown section attribute '%c'"),
*input_line_pointer);
break;
}
@ -3459,16 +3475,6 @@ obj_coff_data (ignore)
subseg_new (".data", get_absolute_expression ());
}
static void
obj_coff_bss (ignore)
int ignore;
{
if (*input_line_pointer == '\n') /* .bss */
subseg_new(".bss", get_absolute_expression());
else /* .bss id,expr */
obj_coff_lcomm(0);
}
static void
obj_coff_ident (ignore)
int ignore;
@ -3744,19 +3750,19 @@ obj_coff_lcomm (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after name");
as_bad (_("Expected comma after name"));
ignore_rest_of_line ();
return;
}
if (*input_line_pointer == '\n')
{
as_bad ("Missing size expression");
as_bad (_("Missing size expression"));
return;
}
input_line_pointer++;
if ((temp = get_absolute_expression ()) < 0)
{
as_warn ("lcomm length (%d.) <0! Ignored.", temp);
as_warn (_("lcomm length (%d.) <0! Ignored."), temp);
ignore_rest_of_line ();
return;
}
@ -3784,7 +3790,7 @@ obj_coff_lcomm (ignore)
}
}
else
as_bad("Symbol %s already defined", name);
as_bad(_("Symbol %s already defined"), name);
demand_empty_rest_of_line();
#endif
@ -3878,7 +3884,7 @@ fixup_segment (segP, this_segment_type)
if (!SF_GET_BALNAME (tc_get_bal_of_call (add_symbolP)))
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"No 'bal' entry point for leafproc %s",
_("No 'bal' entry point for leafproc %s"),
S_GET_NAME (add_symbolP));
continue;
}
@ -3889,7 +3895,7 @@ fixup_segment (segP, this_segment_type)
/* Make sure the symbols have been resolved; this may not have
happened if these are expression symbols. */
if (add_symbolP != NULL && ! add_symbolP->sy_resolved)
resolve_symbol_value (add_symbolP);
resolve_symbol_value (add_symbolP, 1);
if (add_symbolP != NULL)
{
@ -3919,7 +3925,7 @@ fixup_segment (segP, this_segment_type)
}
if (sub_symbolP != NULL && ! sub_symbolP->sy_resolved)
resolve_symbol_value (sub_symbolP);
resolve_symbol_value (sub_symbolP, 1);
if (add_symbolP != NULL
&& add_symbolP->sy_mri_common)
@ -3957,7 +3963,7 @@ fixup_segment (segP, this_segment_type)
{
#ifndef TC_M68K
as_bad_where (fixP->fx_file, fixP->fx_line,
"Negative of non-absolute symbol %s",
_("Negative of non-absolute symbol %s"),
S_GET_NAME (sub_symbolP));
#endif
add_number -= S_GET_VALUE (sub_symbolP);
@ -3978,7 +3984,7 @@ fixup_segment (segP, this_segment_type)
if (fixP->fx_tcbit)
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"callj to difference of 2 symbols");
_("callj to difference of 2 symbols"));
}
#endif /* TC_I960 */
add_number += S_GET_VALUE (add_symbolP) -
@ -4024,7 +4030,7 @@ fixup_segment (segP, this_segment_type)
else
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld.",
_("Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."),
segment_name (S_GET_SEGMENT (sub_symbolP)),
S_GET_NAME (sub_symbolP),
(long) (fragP->fr_address + where));
@ -4114,7 +4120,7 @@ fixup_segment (segP, this_segment_type)
* relocation.
*/
as_bad_where (fixP->fx_file, fixP->fx_line,
"can't use COBR format with external label");
_("can't use COBR format with external label"));
fixP->fx_addsy = NULL;
fixP->fx_done = 1;
continue;
@ -4188,7 +4194,7 @@ fixup_segment (segP, this_segment_type)
|| (add_number & 0x8000) == 0)))
{
as_bad_where (fixP->fx_file, fixP->fx_line,
"Value of %ld too large for field of %d bytes at 0x%lx",
_("Value of %ld too large for field of %d bytes at 0x%lx"),
(long) add_number, size,
(unsigned long) (fragP->fr_address + where));
}
@ -4202,7 +4208,7 @@ fixup_segment (segP, this_segment_type)
&& size == 2
&& add_number > 0x7fff)
as_bad_where (fixP->fx_file, fixP->fx_line,
"Signed .word overflow; switch may be too large; %ld at 0x%lx",
_("Signed .word overflow; switch may be too large; %ld at 0x%lx"),
(long) add_number,
(unsigned long) (fragP->fr_address + where));
#endif
@ -4210,7 +4216,7 @@ fixup_segment (segP, this_segment_type)
/* Once this fix has been applied, we don't have to output
anything nothing more need be done. */
#ifdef MD_APPLY_FIX3
md_apply_fix3 (fixP, &add_number, this_segment_type);
md_apply_fix3 (fixP, (valueT *) &add_number, this_segment_type);
#else
md_apply_fix (fixP, add_number);
#endif
@ -4314,11 +4320,13 @@ const pseudo_typeS obj_pseudo_table[] =
/* FIXME: We ignore the MRI short attribute. */
{"section.s", obj_coff_section, 0},
{"sect.s", obj_coff_section, 0},
/* We accept the .bss directive for backward compatibility with
earlier versions of gas. */
{"bss", obj_coff_bss, 0},
#ifndef BFD_ASSEMBLER
{"use", obj_coff_section, 0},
{"text", obj_coff_text, 0},
{"data", obj_coff_data, 0},
{"bss", obj_coff_bss, 0},
{"lcomm", obj_coff_lcomm, 0},
{"ident", obj_coff_ident, 0},
#else
@ -4363,8 +4371,8 @@ const struct format_ops coff_format_ops =
0,
1,
coff_frob_symbol,
coff_frob_file,
no_func,
coff_frob_file_after_relocs,
0, 0,
0, 0,
0,

View File

@ -1,5 +1,5 @@
/* obj-format for ieee-695 records.
Copyright (C) 1991, 92, 93, 94, 95, 1997 Free Software Foundation, Inc.
Copyright (C) 1991, 92, 93, 94, 95, 1997, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -66,7 +66,7 @@ DEFUN (size_section, (abfd, idx),
{
if (frag->fr_address != size)
{
printf ("Out of step\n");
printf (_("Out of step\n"));
size = frag->fr_address;
}
size += frag->fr_fix;
@ -457,7 +457,7 @@ obj_ieee_section (ignore)
}
if (i == SEG_UNKNOWN)
{
as_bad ("too many sections");
as_bad (_("too many sections"));
return;
}
@ -519,7 +519,7 @@ DEFUN_VOID (write_object_file)
if (abfd == 0)
{
as_perror ("FATAL: Can't create %s", out_file_name);
as_perror (_("FATAL: Can't create %s"), out_file_name);
exit (EXIT_FAILURE);
}
bfd_set_format (abfd, bfd_object);

View File

@ -1,5 +1,5 @@
/* vms.c -- Write out a VAX/VMS object file
Copyright (C) 1987, 1988, 1992, 1994, 1995 Free Software Foundation, Inc.
Copyright (C) 1987, 1988, 1992, 1994, 1995, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -457,7 +457,7 @@ vms_resolve_symbol_redef (sym)
if (SEGMENT_TO_SYMBOL_TYPE ((int) now_seg) == (N_UNDF | N_EXT)
&& frag_now_fix () == 0)
{
as_warn ("compiler emitted zero-size common symbol `%s' already defined",
as_warn (_("compiler emitted zero-size common symbol `%s' already defined"),
S_GET_NAME (sym));
return 1;
}
@ -467,7 +467,7 @@ vms_resolve_symbol_redef (sym)
*/
if (S_IS_EXTERNAL (sym) && S_IS_DEFINED (sym) && S_GET_VALUE (sym) == 0)
{
as_warn ("compiler redefined zero-size common symbol `%s'",
as_warn (_("compiler redefined zero-size common symbol `%s'"),
S_GET_NAME (sym));
sym->sy_frag = frag_now;
S_SET_OTHER (sym, const_flag);
@ -559,7 +559,7 @@ obj_crawl_symbol_chain (headers)
{
if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
{
as_bad ("Local symbol %s never defined", S_GET_NAME (symbolP));
as_bad (_("Local symbol %s never defined"), S_GET_NAME (symbolP));
} /* oops. */
/* Unhook it from the chain. */
@ -589,7 +589,7 @@ Create_VMS_Object_File ()
#endif /* eunice */
/* Deal with errors. */
if (VMS_Object_File_FD < 0)
as_fatal ("Couldn't create VMS object file \"%s\"", out_file_name);
as_fatal (_("Couldn't create VMS object file \"%s\""), out_file_name);
/* Initialize object file hacking variables. */
Object_Record_Offset = 0;
Current_Object_Record_Type = -1;
@ -615,7 +615,7 @@ Flush_VMS_Object_Record_Buffer ()
When cross-assembling, we must write it explicitly. */
md_number_to_chars (RecLen, Object_Record_Offset, 2);
if (write (VMS_Object_File_FD, RecLen, 2) != 2)
error ("I/O error writing VMS object file (length prefix)");
error (_("I/O error writing VMS object file (length prefix)"));
/* We also need to force the actual record to be an even number of
bytes. For native output, that's automatic; when cross-assembling,
pad with a NUL byte if length is odd. Do so _after_ writing the
@ -629,7 +629,7 @@ Flush_VMS_Object_Record_Buffer ()
/* Write the data to the file. */
if (write (VMS_Object_File_FD, Object_Record_Buffer, Object_Record_Offset)
!= Object_Record_Offset)
error ("I/O error writing VMS object file");
error (_("I/O error writing VMS object file"));
/* The buffer is now empty. */
Object_Record_Offset = 0;
@ -1232,7 +1232,7 @@ VMS_TBT_Source_File (Filename, ID_Number)
Status = sys$open (&fab);
if (!(Status & 1))
{
as_tsktsk ("Couldn't find source file \"%s\", status=%%X%x",
as_tsktsk (_("Couldn't find source file \"%s\", status=%%X%x"),
Filename, Status);
return 0;
}
@ -1741,7 +1741,7 @@ gen1 (spnt, array_suffix_len)
spnt1 = find_symbol (spnt1->type2);
if (!spnt1)
{
as_tsktsk ("debugger forward reference error, dbx type %d",
as_tsktsk (_("debugger forward reference error, dbx type %d"),
spnt->type2);
return 0;
}
@ -1817,7 +1817,7 @@ generate_suffix (spnt, dbx_type)
for a pointer to void. */
if ((total_len >= MAX_DEBUG_RECORD) || overflow)
{
as_warn ("Variable descriptor %d too complicated. Defined as `void *'.",
as_warn (_("Variable descriptor %d too complicated. Defined as `void *'."),
spnt->dbx_type);
VMS_Store_Immediate_Data (pvoid, 6, OBJ_S_C_DBG);
return;
@ -2136,14 +2136,14 @@ VMS_stab_parse (sp, expected_type, type1, type2, Text_Psect)
{
if (!gave_compiler_message && expected_type == 'G')
{
static const char long_const_msg[] = "\
char *long_const_msg = _("\
***Warning - the assembly code generated by the compiler has placed \n\
global constant(s) in the text psect. These will not be available to \n\
other modules, since this is not the correct way to handle this. You \n\
have two options: 1) get a patched compiler that does not put global \n\
constants in the text psect, or 2) remove the 'const' keyword from \n\
definitions of global variables in your source module(s). Don't say \n\
I didn't warn you! \n";
I didn't warn you! \n");
as_tsktsk (long_const_msg);
gave_compiler_message = 1;
@ -2455,7 +2455,7 @@ VMS_typedef_parse (str)
strcpy (str, pnt1);
return 0;
}
as_tsktsk ("debugginer output: %d is an unknown untyped variable.",
as_tsktsk (_("debugginer output: %d is an unknown untyped variable."),
spnt->dbx_type);
return 1; /* do not know what this is */
}
@ -2673,7 +2673,7 @@ VMS_typedef_parse (str)
/* check if this is a forward reference */
if (final_pass && final_forward_reference (spnt1))
{
as_tsktsk ("debugger output: structure element `%s' has undefined type",
as_tsktsk (_("debugger output: structure element `%s' has undefined type"),
pnt2);
continue;
}
@ -2784,7 +2784,7 @@ VMS_typedef_parse (str)
default:
spnt->advanced = UNKNOWN;
spnt->VMS_type = 0;
as_tsktsk ("debugger output: %d is an unknown type of variable.",
as_tsktsk (_("debugger output: %d is an unknown type of variable."),
spnt->dbx_type);
return 1; /* unable to decipher */
}
@ -2918,7 +2918,7 @@ VMS_LSYM_Parse ()
/* if (pass > 1) printf (" Required %d passes\n", pass); */
if (incomplete != 0)
{
as_tsktsk ("debugger output: Unable to resolve %d circular references.",
as_tsktsk (_("debugger output: Unable to resolve %d circular references."),
incomplete);
}
fpnt = f_ref_root;
@ -2929,7 +2929,7 @@ VMS_LSYM_Parse ()
{
if (find_symbol (fpnt->dbx_type))
{
as_tsktsk ("debugger forward reference error, dbx type %d",
as_tsktsk (_("debugger forward reference error, dbx type %d"),
fpnt->dbx_type);
break;
}
@ -3123,7 +3123,7 @@ Write_VMS_MHD_Records ()
if (strlen (Module_Name) > 31)
{
if (flag_hash_long_names)
as_tsktsk ("Module name truncated: %s\n", Module_Name);
as_tsktsk (_("Module name truncated: %s\n"), Module_Name);
Module_Name[31] = '\0';
}
PUT_COUNTED_STRING (Module_Name);
@ -3402,7 +3402,7 @@ VMS_Case_Hack_Symbol (In, Out)
*/
*Out = 0;
if (truncate == 1 && flag_hash_long_names && flag_show_after_trunc)
as_tsktsk ("Symbol %s replaced by %s\n", old_name, new_name);
as_tsktsk (_("Symbol %s replaced by %s\n"), old_name, new_name);
}
@ -3671,7 +3671,7 @@ VMS_Psect_Spec (Name, Size, Type, vsp)
break;
default:
/* impossible */
error ("Unknown VMS psect type (%ld)", (long) Type);
error (_("Unknown VMS psect type (%ld)"), (long) Type);
break;
}
/*
@ -3712,7 +3712,7 @@ VMS_Psect_Spec (Name, Size, Type, vsp)
/* In this case we still generate the psect */
break;
default:
as_fatal ("Globalsymbol attribute for symbol %s was unexpected.",
as_fatal (_("Globalsymbol attribute for symbol %s was unexpected."),
Name);
break;
} /* switch */
@ -3862,7 +3862,7 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment)
case N_DATA | N_EXT:
Size = VMS_Initialized_Data_Size (sp, text_siz + data_siz);
if (Size > 4)
error ("Invalid data type for globalvalue");
error (_("Invalid data type for globalvalue"));
globalvalue = md_chars_to_number (Data_Segment +
S_GET_VALUE (sp) - text_siz , Size);
/* Three times for good luck. The linker seems to get confused
@ -3874,7 +3874,7 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment)
GBLSYM_DEF|GBLSYM_VAL);
break;
default:
as_warn ("Invalid globalvalue of %s", stripped_name);
as_warn (_("Invalid globalvalue of %s"), stripped_name);
break;
} /* switch */
} /* if */
@ -4224,7 +4224,7 @@ VMS_Fix_Indirect_Reference (Text_Psect, Offset, fragP, text_frag_root)
* If we couldn't find the frag, things are BAD!!
*/
if (fragP == 0)
error ("Couldn't find fixup fragment when checking for indirect reference");
error (_("Couldn't find fixup fragment when checking for indirect reference"));
}
/*
* Check for indirect PC relative addressing mode
@ -4558,14 +4558,14 @@ vms_fixup_text_section (text_siz, text_frag_root, data_frag_root)
/* They need to be in the same segment. */
if (S_GET_RAW_TYPE (fixP->fx_subsy) !=
S_GET_RAW_TYPE (fixP->fx_addsy))
error ("Fixup data addsy and subsy don't have the same type");
error (_("Fixup data addsy and subsy don't have the same type"));
/* And they need to be in one that we can check the psect on. */
if ((S_GET_TYPE (fixP->fx_addsy) != N_DATA) &&
(S_GET_TYPE (fixP->fx_addsy) != N_TEXT))
error ("Fixup data addsy and subsy don't have an appropriate type");
error (_("Fixup data addsy and subsy don't have an appropriate type"));
/* This had better not be PC relative! */
if (fixP->fx_pcrel)
error ("Fixup data is erroneously \"pcrel\"");
error (_("Fixup data is erroneously \"pcrel\""));
/* Subtract their values to get the difference. */
dif = S_GET_VALUE (fixP->fx_addsy) - S_GET_VALUE (fixP->fx_subsy);
md_number_to_chars (Local, (valueT)dif, fixP->fx_size);
@ -4581,11 +4581,11 @@ vms_fixup_text_section (text_siz, text_frag_root, data_frag_root)
} /* if fx_subsy && fx_addsy */
/* Size will HAVE to be "long". */
if (fixP->fx_size != 4)
error ("Fixup datum is not a longword");
error (_("Fixup datum is not a longword"));
/* Symbol must be "added" (if it is ever
subtracted we can fix this assumption). */
if (fixP->fx_addsy == 0)
error ("Fixup datum is not \"fixP->fx_addsy\"");
error (_("Fixup datum is not \"fixP->fx_addsy\""));
/* Store the symbol value in a PIC fashion. */
VMS_Store_PIC_Symbol_Reference (fixP->fx_addsy,
fixP->fx_offset,
@ -4700,14 +4700,14 @@ vms_fixup_data_section (data_siz, text_siz)
/* They need to be in the same segment. */
if (S_GET_RAW_TYPE (fixP->fx_subsy) !=
S_GET_RAW_TYPE (fixP->fx_addsy))
error ("Fixup data addsy and subsy don't have the same type");
error (_("Fixup data addsy and subsy don't have the same type"));
/* And they need to be in one that we can check the psect on. */
if ((S_GET_TYPE (fixP->fx_addsy) != N_DATA) &&
(S_GET_TYPE (fixP->fx_addsy) != N_TEXT))
error ("Fixup data addsy and subsy don't have an appropriate type");
error (_("Fixup data addsy and subsy don't have an appropriate type"));
/* This had better not be PC relative! */
if (fixP->fx_pcrel)
error ("Fixup data is erroneously \"pcrel\"");
error (_("Fixup data is erroneously \"pcrel\""));
/* Subtract their values to get the difference. */
dif = S_GET_VALUE (fixP->fx_addsy) - S_GET_VALUE (fixP->fx_subsy);
md_number_to_chars (Local, (valueT)dif, fixP->fx_size);
@ -4726,11 +4726,11 @@ vms_fixup_data_section (data_siz, text_siz)
}
/* Size will HAVE to be "long". */
if (fixP->fx_size != 4)
error ("Fixup datum is not a longword");
error (_("Fixup datum is not a longword"));
/* Symbol must be "added" (if it is ever
subtracted we can fix this assumption). */
if (fixP->fx_addsy == 0)
error ("Fixup datum is not \"fixP->fx_addsy\"");
error (_("Fixup datum is not \"fixP->fx_addsy\""));
/* Store the symbol value in a PIC fashion. */
VMS_Store_PIC_Symbol_Reference (fixP->fx_addsy,
fixP->fx_offset,
@ -4770,9 +4770,8 @@ global_symbol_directory (text_siz, data_siz)
{
S_SET_TYPE (sp, N_UNDF | N_EXT);
S_SET_OTHER (sp, 1);
as_warn ("g++ wrote an extern reference to `%s' as a routine.\n%s",
S_GET_NAME (sp),
"I will fix it, but I hope that it was not really a routine.");
as_warn (_("g++ wrote an extern reference to `%s' as a routine.\nI will fix it, but I hope that it was note really a routine."),
S_GET_NAME (sp));
}
#endif /* gxx_bug_fixed */
@ -4959,7 +4958,7 @@ global_symbol_directory (text_siz, data_siz)
/*
* Error otherwise.
*/
as_tsktsk ("unhandled stab type %d", S_GET_TYPE (sp));
as_tsktsk (_("unhandled stab type %d"), S_GET_TYPE (sp));
break;
}

View File

@ -1,5 +1,5 @@
/* tc-a29k.c -- Assemble for the AMD 29000.
Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Copyright (C) 1989, 1990, 1991, 1992, 1993, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -157,7 +157,7 @@ s_use (ignore)
return;
}
as_bad ("Unknown segment type");
as_bad (_("Unknown segment type"));
demand_empty_rest_of_line ();
}
@ -327,7 +327,7 @@ md_begin ()
}
if (lose)
as_fatal ("Broken assembler. No assembly attempted.");
as_fatal (_("Broken assembler. No assembly attempted."));
define_some_regs ();
}
@ -372,7 +372,7 @@ parse_operand (s, operandp, opt)
input_line_pointer = s;
expression (operandp);
if (operandp->X_op == O_absent && ! opt)
as_bad ("missing operand");
as_bad (_("missing operand"));
new = input_line_pointer;
input_line_pointer = save;
return new;
@ -412,12 +412,12 @@ machine_ip (str)
break;
default:
as_bad ("Unknown opcode: `%s'", str);
as_bad (_("Unknown opcode: `%s'"), str);
return;
}
if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL)
{
as_bad ("Unknown opcode `%s'.", str);
as_bad (_("Unknown opcode `%s'."), str);
return;
}
argsStart = s;
@ -449,7 +449,7 @@ machine_ip (str)
the_insn.opcode = opcode;
return;
}
as_bad ("Too many operands: %s", s);
as_bad (_("Too many operands: %s"), s);
break;
case ',': /* Must match a comma */
@ -471,7 +471,7 @@ machine_ip (str)
}
else
{
as_bad ("Immediate value of %ld is too large",
as_bad (_("Immediate value of %ld is too large"),
(long) operand->X_add_number);
continue;
}
@ -502,7 +502,7 @@ machine_ip (str)
}
else
{
as_bad ("Immediate value of %ld is too large",
as_bad (_("Immediate value of %ld is too large"),
(long) operand->X_add_number);
continue;
}
@ -541,7 +541,7 @@ machine_ip (str)
opcode |= reg << 16;
continue;
}
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
break;
case 'x': /* 16 bit constant, zero-extended */
@ -889,7 +889,7 @@ md_apply_fix (fixP, val)
case NO_RELOC:
default:
as_bad ("bad relocation type: 0x%02x", fixP->fx_r_type);
as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type);
break;
}
}
@ -913,7 +913,7 @@ tc_coff_fix2rtype (fixP)
case RELOC_JUMPTARG:
return (R_IREL);
default:
printf ("need %o3\n", fixP->fx_r_type);
printf (_("need %o3\n"), fixP->fx_r_type);
abort ();
} /* switch on type */
@ -930,7 +930,7 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("a29k_create_short_jmp\n");
as_fatal (_("a29k_create_short_jmp\n"));
}
/* should never be called for 29k */
@ -940,7 +940,7 @@ md_convert_frag (headers, seg, fragP)
segT seg;
register fragS *fragP;
{
as_fatal ("a29k_convert_frag\n");
as_fatal (_("a29k_convert_frag\n"));
}
/* should never be called for 29k */
@ -952,7 +952,7 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("a29k_create_long_jump\n");
as_fatal (_("a29k_create_long_jump\n"));
}
/* should never be called for a29k */
@ -961,7 +961,7 @@ md_estimate_size_before_relax (fragP, segtype)
register fragS *fragP;
segT segtype;
{
as_fatal ("a29k_estimate_size_before_relax\n");
as_fatal (_("a29k_estimate_size_before_relax\n"));
return 0;
}
@ -1112,7 +1112,7 @@ a29k_unrecognized_line (c)
if (dollar_label_defined (lab))
{
as_bad ("label \"$%d\" redefined", lab);
as_bad (_("label \"$%d\" redefined"), lab);
return 0;
}
@ -1185,7 +1185,7 @@ md_operand (expressionP)
(void) expression (expressionP);
if (expressionP->X_op != O_constant
|| expressionP->X_add_number > 255)
as_bad ("Invalid expression after %%%%\n");
as_bad (_("Invalid expression after %%%%\n"));
expressionP->X_op = O_register;
}
else if (input_line_pointer[0] == '&')
@ -1196,7 +1196,7 @@ md_operand (expressionP)
input_line_pointer++; /* Skip & */
(void) expression (expressionP);
if (expressionP->X_op != O_register)
as_bad ("Invalid register in & expression");
as_bad (_("Invalid register in & expression"));
else
expressionP->X_op = O_constant;
}

View File

@ -1,5 +1,5 @@
/* tc-alpha.c - Processor-specific code for the DEC Alpha AXP CPU.
Copyright (C) 1989, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
Copyright (C) 1989, 93, 94, 95, 96, 1997, 1998 Free Software Foundation, Inc.
Contributed by Carnegie Mellon University, 1993.
Written by Alessandro Forin, based on earlier gas-1.38 target CPU files.
Modified by Ken Raeburn for gas-2.x and ECOFF support.
@ -110,11 +110,20 @@ struct alpha_macro
#define note_fpreg(R) (alpha_fprmask |= (1 << (R)))
/* Predicates for 16- and 32-bit ranges */
/* XXX: The non-shift version appears to trigger a compiler bug when
cross-assembling from x86 w/ gcc 2.7.2. */
#if 1
#define range_signed_16(x) \
(((offsetT)(x) >> 15) == 0 || ((offsetT)(x) >> 15) == -1)
#define range_signed_32(x) \
(((offsetT)(x) >> 31) == 0 || ((offsetT)(x) >> 31) == -1)
#else
#define range_signed_16(x) ((offsetT)(x) >= -(offsetT)0x8000 && \
(offsetT)(x) <= (offsetT)0x7FFF)
#define range_signed_32(x) ((offsetT)(x) >= -(offsetT)0x80000000 && \
(offsetT)(x) <= (offsetT)0x7FFFFFFF)
#endif
/* Macros for sign extending from 16- and 32-bits. */
/* XXX: The cast macros will work on all the systems that I care about,
@ -220,7 +229,7 @@ static void create_literal_section PARAMS ((const char *, segT *, symbolS **));
#ifndef OBJ_ELF
static void select_gp_value PARAMS ((void));
#endif
static void alpha_align PARAMS ((int, char *, symbolS *));
static void alpha_align PARAMS ((int, char *, symbolS *, int));
/* Generic assembler global variables which must be defined by all
@ -255,14 +264,16 @@ char FLT_CHARS[] = "rRsSfFdDxXpP";
#endif
#ifdef OBJ_EVAX
const char *md_shortopts = "Fm:g+1h:H";
const char *md_shortopts = "Fm:g+1h:HG:";
#else
const char *md_shortopts = "Fm:g";
const char *md_shortopts = "Fm:gG:";
#endif
struct option md_longopts[] = {
#define OPTION_32ADDR (OPTION_MD_BASE)
{ "32addr", no_argument, NULL, OPTION_32ADDR },
#define OPTION_RELAX (OPTION_32ADDR+1)
{ "relax", no_argument, NULL, OPTION_RELAX },
{ NULL, no_argument, NULL, 0 }
};
@ -375,6 +386,12 @@ unsigned long alpha_gprmask, alpha_fprmask;
/* Whether the debugging option was seen. */
static int alpha_debug;
/* Don't fully resolve relocations, allowing code movement in the linker. */
static int alpha_flag_relax;
/* What value to give to bfd_set_gp_size. */
static int g_switch_value = 8;
#ifdef OBJ_EVAX
/* Collect information about current procedure here. */
static struct {
@ -422,7 +439,7 @@ static const struct cpu_type
{ "21164a", AXP_OPCODE_BASE|AXP_OPCODE_EV5|AXP_OPCODE_BWX },
/* Still same PALcodes? */
{ "21164pc", (AXP_OPCODE_BASE|AXP_OPCODE_EV5|AXP_OPCODE_BWX
|AXP_OPCODE_CIX|AXP_OPCODE_MAX) },
|AXP_OPCODE_MAX) },
/* All new PALcodes? Extras? */
{ "21264", (AXP_OPCODE_BASE|AXP_OPCODE_BWX
|AXP_OPCODE_CIX|AXP_OPCODE_MAX) },
@ -432,7 +449,7 @@ static const struct cpu_type
{ "lca45", AXP_OPCODE_BASE },
{ "ev5", AXP_OPCODE_BASE },
{ "ev56", AXP_OPCODE_BASE|AXP_OPCODE_BWX },
{ "pca56", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_CIX|AXP_OPCODE_MAX },
{ "pca56", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_MAX },
{ "ev6", AXP_OPCODE_BASE|AXP_OPCODE_BWX|AXP_OPCODE_CIX|AXP_OPCODE_MAX },
{ "all", AXP_OPCODE_BASE },
@ -689,7 +706,7 @@ md_begin ()
name = alpha_opcodes[i].name;
retval = hash_insert (alpha_opcode_hash, name, (PTR)&alpha_opcodes[i]);
if (retval)
as_fatal ("internal error: can't hash opcode `%s': %s", name, retval);
as_fatal (_("internal error: can't hash opcode `%s': %s"), name, retval);
/* Some opcodes include modifiers of various sorts with a "/mod"
syntax, like the architecture manual suggests. However, for
@ -723,7 +740,7 @@ md_begin ()
name = alpha_macros[i].name;
retval = hash_insert (alpha_macro_hash, name, (PTR)&alpha_macros[i]);
if (retval)
as_fatal ("internal error: can't hash macro `%s': %s", name, retval);
as_fatal (_("internal error: can't hash macro `%s': %s"), name, retval);
while (++i < alpha_num_macros
&& (alpha_macros[i].name == name
@ -751,7 +768,7 @@ md_begin ()
/* Create the special symbols and sections we'll be using */
/* So .sbss will get used for tiny objects. */
bfd_set_gp_size (stdoutput, 8);
bfd_set_gp_size (stdoutput, g_switch_value);
#ifdef OBJ_ECOFF
create_literal_section (".lita", &alpha_lita_section, &alpha_lita_symbol);
@ -810,7 +827,7 @@ md_assemble (str)
/* tokenize the rest of the line */
if ((ntok = tokenize_arguments (str + opnamelen, tok, MAX_INSN_ARGS)) < 0)
{
as_bad ("syntax error");
as_bad (_("syntax error"));
return;
}
@ -883,7 +900,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -920,6 +937,10 @@ md_parse_option (c, arg)
alpha_debug = 1;
break;
case 'G':
g_switch_value = atoi(arg);
break;
case 'm':
{
const struct cpu_type *p;
@ -929,7 +950,7 @@ md_parse_option (c, arg)
alpha_target_name = p->name, alpha_target = p->flags;
goto found;
}
as_warn("Unknown CPU identifier `%s'", arg);
as_warn(_("Unknown CPU identifier `%s'"), arg);
found:;
}
break;
@ -947,6 +968,10 @@ md_parse_option (c, arg)
break;
#endif
case OPTION_RELAX:
alpha_flag_relax = 1;
break;
default:
return 0;
}
@ -960,19 +985,19 @@ void
md_show_usage (stream)
FILE *stream;
{
fputs("\
fputs(_("\
Alpha options:\n\
-32addr treat addresses as 32-bit values\n\
-F lack floating point instructions support\n\
-m21064 | -m21066 | -m21164 | -m21164a\n\
-mev4 | -mev45 | -mev5 | -mev56 | -mall\n\
specify variant of Alpha architecture\n",
specify variant of Alpha architecture\n"),
stream);
#ifdef OBJ_EVAX
fputs ("\
fputs (_("\
VMS options:\n\
-+ hash encode (don't truncate) names longer than 64 characters\n\
-H show new symbol after hash truncation\n",
-H show new symbol after hash truncation\n"),
stream);
#endif
}
@ -1125,7 +1150,7 @@ md_apply_fix (fixP, valueP)
const struct alpha_operand *operand;
if ((int)fixP->fx_r_type >= 0)
as_fatal ("unhandled relocation type %s",
as_fatal (_("unhandled relocation type %s"),
bfd_get_reloc_code_name (fixP->fx_r_type));
assert (-(int)fixP->fx_r_type < alpha_num_operands);
@ -1138,7 +1163,7 @@ md_apply_fix (fixP, valueP)
if (fixP->fx_addsy != 0
&& fixP->fx_addsy->bsym->section != absolute_section)
as_bad_where (fixP->fx_file, fixP->fx_line,
"non-absolute expression in constant field");
_("non-absolute expression in constant field"));
image = bfd_getl32(fixpos);
image = insert_operand(image, operand, (offsetT)value,
@ -1152,7 +1177,7 @@ md_apply_fix (fixP, valueP)
else
{
as_warn_where(fixP->fx_file, fixP->fx_line,
"type %d reloc done?\n", (int)fixP->fx_r_type);
_("type %d reloc done?\n"), (int)fixP->fx_r_type);
goto done;
}
@ -1203,14 +1228,14 @@ md_undefined_symbol(name)
break;
if (!alpha_noat_on && num == AXP_REG_AT)
as_warn("Used $at without \".set noat\"");
as_warn(_("Used $at without \".set noat\""));
return alpha_register_table[num + is_float];
case 'a':
if (name[1] == 't' && name[2] == '\0')
{
if (!alpha_noat_on)
as_warn("Used $at without \".set noat\"");
as_warn(_("Used $at without \".set noat\""));
return alpha_register_table[AXP_REG_AT];
}
break;
@ -1260,6 +1285,9 @@ int
alpha_force_relocation (f)
fixS *f;
{
if (alpha_flag_relax)
return 1;
switch (f->fx_r_type)
{
case BFD_RELOC_ALPHA_GPDISP_HI16:
@ -1364,14 +1392,14 @@ tc_gen_reloc (sec, fixp)
if (reloc->howto == NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"cannot represent `%s' relocation in object file",
_("cannot represent `%s' relocation in object file"),
bfd_get_reloc_code_name (fixp->fx_r_type));
return NULL;
}
if (!fixp->fx_pcrel != !reloc->howto->pc_relative)
{
as_fatal ("internal error? cannot generate `%s' relocation",
as_fatal (_("internal error? cannot generate `%s' relocation"),
bfd_get_reloc_code_name (fixp->fx_r_type));
}
assert (!fixp->fx_pcrel == !reloc->howto->pc_relative);
@ -1424,7 +1452,7 @@ tc_get_register (frame)
if (sym && (framereg = S_GET_VALUE (sym)) <= 31)
goto found;
}
as_warn ("frame reg expected, using $%d.", framereg);
as_warn (_("frame reg expected, using $%d."), framereg);
found:
note_gpreg (framereg);
@ -1743,7 +1771,7 @@ insert_operand(insn, operand, val, file, line)
if (val < min || val > max)
{
const char *err =
"operand out of range (%s not between %d and %d)";
_("operand out of range (%s not between %d and %d)");
char buf[sizeof (val) * 3 + 2];
sprint_value(buf, val);
@ -1840,7 +1868,7 @@ assemble_insn(opcode, tok, ntok, insn)
struct alpha_fixup *fixup;
if (insn->nfixups >= MAX_INSN_FIXUPS)
as_fatal("too many fixups");
as_fatal(_("too many fixups"));
fixup = &insn->fixups[insn->nfixups++];
@ -1867,7 +1895,7 @@ emit_insn (insn)
/* Take care of alignment duties */
if (alpha_auto_align_on && alpha_current_align < 2)
alpha_align (2, (char *) NULL, alpha_insn_label);
alpha_align (2, (char *) NULL, alpha_insn_label, 0);
if (alpha_current_align > 2)
alpha_current_align = 2;
alpha_insn_label = NULL;
@ -1954,13 +1982,13 @@ assemble_tokens_to_insn(opname, tok, ntok, insn)
return;
}
else if (cpumatch)
as_bad ("inappropriate arguments for opcode `%s'", opname);
as_bad (_("inappropriate arguments for opcode `%s'"), opname);
else
as_bad ("opcode `%s' not supported for target %s", opname,
as_bad (_("opcode `%s' not supported for target %s"), opname,
alpha_target_name);
}
else
as_bad ("unknown opcode `%s'", opname);
as_bad (_("unknown opcode `%s'"), opname);
}
/* Given an opcode name and a pre-tokenized set of arguments, take the
@ -2012,12 +2040,12 @@ assemble_tokens (opname, tok, ntok, local_macros_on)
if (found_something)
if (cpumatch)
as_bad ("inappropriate arguments for opcode `%s'", opname);
as_bad (_("inappropriate arguments for opcode `%s'"), opname);
else
as_bad ("opcode `%s' not supported for target %s", opname,
as_bad (_("opcode `%s' not supported for target %s"), opname,
alpha_target_name);
else
as_bad ("unknown opcode `%s'", opname);
as_bad (_("unknown opcode `%s'"), opname);
}
@ -2206,16 +2234,16 @@ load_expression (targreg, exp, pbasereg, poffset)
}
if (lit >= 0x8000)
as_fatal ("overflow in literal (.lita) table");
as_fatal (_("overflow in literal (.lita) table"));
/* emit "ldq r, lit(gp)" */
if (basereg != alpha_gp_register && targreg == basereg)
{
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
if (targreg == AXP_REG_AT)
as_bad ("macro requires $at while $at in use");
as_bad (_("macro requires $at while $at in use"));
set_tok_reg (newtok[0], AXP_REG_AT);
}
@ -2235,9 +2263,9 @@ load_expression (targreg, exp, pbasereg, poffset)
if (basereg != alpha_gp_register && targreg == basereg)
{
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
if (targreg == AXP_REG_AT)
as_bad ("macro requires $at while $at in use");
as_bad (_("macro requires $at while $at in use"));
set_tok_reg (newtok[0], AXP_REG_AT);
}
@ -2344,8 +2372,10 @@ load_expression (targreg, exp, pbasereg, poffset)
return 0;
case O_big:
as_bad ("%s number invalid; zero assumed",
exp->X_add_number > 0 ? "bignum" : "floating point");
if (exp->X_add_number > 0)
as_bad (_("bignum invalid; zero assumed"));
else
as_bad (_("floating point number invalid; zero assumed"));
addend = 0;
break;
@ -2379,22 +2409,22 @@ load_expression (targreg, exp, pbasereg, poffset)
alpha_lit8_literal = add_to_literal_pool (alpha_lit8_symbol, 0x8000,
alpha_lita_section, 8);
if (alpha_lit8_literal >= 0x8000)
as_fatal ("overflow in literal (.lita) table");
as_fatal (_("overflow in literal (.lita) table"));
#endif
}
lit = add_to_literal_pool (NULL, addend, alpha_lit8_section, 8) - 0x8000;
if (lit >= 0x8000)
as_fatal ("overflow in literal (.lit8) table");
as_fatal (_("overflow in literal (.lit8) table"));
/* emit "lda litreg, .lit8+0x8000" */
if (targreg == basereg)
{
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
if (targreg == AXP_REG_AT)
as_bad ("macro requires $at while $at in use");
as_bad (_("macro requires $at while $at in use"));
set_tok_reg (newtok[0], AXP_REG_AT);
}
@ -2614,7 +2644,7 @@ emit_loadstore (tok, ntok, opname)
if (tok[1].X_op != O_constant || !range_signed_16(tok[1].X_add_number))
{
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, &newtok[1]);
}
@ -2661,7 +2691,7 @@ emit_ldXu (tok, ntok, vlgsize)
expressionS newtok[3];
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
/* emit "lda $at, exp" */
@ -2709,7 +2739,7 @@ emit_uldXu (tok, ntok, vlgsize)
expressionS newtok[3];
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
/* emit "lda $at, exp" */
@ -2798,7 +2828,7 @@ emit_stX (tok, ntok, vlgsize)
expressionS newtok[3];
if (alpha_noat_on)
as_bad("macro requires $at register while noat in effect");
as_bad(_("macro requires $at register while noat in effect"));
/* emit "lda $at, exp" */
@ -2999,7 +3029,7 @@ emit_division (tok, ntok, symname)
/* They are in exactly the wrong order -- swap through AT */
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
set_tok_reg (newtok[0], AXP_REG_R16);
set_tok_reg (newtok[1], AXP_REG_AT);
@ -3100,7 +3130,7 @@ emit_division (tok, ntok, symname)
/* They are in exactly the wrong order -- swap through AT */
if (alpha_noat_on)
as_bad ("macro requires $at register while noat in effect");
as_bad (_("macro requires $at register while noat in effect"));
set_tok_reg (newtok[0], AXP_REG_T10);
set_tok_reg (newtok[1], AXP_REG_AT);
@ -3334,7 +3364,7 @@ s_alpha_comm (ignore)
}
if ((temp = get_absolute_expression ()) < 0)
{
as_warn (".COMMon length (%ld.) <0! Ignored.", (long) temp);
as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) temp);
ignore_rest_of_line ();
return;
}
@ -3350,7 +3380,7 @@ s_alpha_comm (ignore)
if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol");
as_bad (_("Ignoring attempt to re-define symbol"));
ignore_rest_of_line ();
return;
}
@ -3359,7 +3389,7 @@ s_alpha_comm (ignore)
if (bfd_section_size (stdoutput, new_seg) > 0)
{
if (bfd_section_size (stdoutput, new_seg) != temp)
as_bad ("Length of .comm \"%s\" is already %ld. Not changed to %ld.",
as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."),
S_GET_NAME (symbolP),
(long) bfd_section_size (stdoutput, new_seg),
(long) temp);
@ -3368,7 +3398,7 @@ s_alpha_comm (ignore)
if (S_GET_VALUE (symbolP))
{
if (S_GET_VALUE (symbolP) != (valueT) temp)
as_bad ("Length of .comm \"%s\" is already %ld. Not changed to %ld.",
as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."),
S_GET_NAME (symbolP),
(long) S_GET_VALUE (symbolP),
(long) temp);
@ -3473,7 +3503,7 @@ s_alpha_section (secid)
if ((secid <= 0) || (secid > EVAX_SECTION_COUNT))
{
as_fatal ("Unknown section directive");
as_fatal (_("Unknown section directive"));
demand_empty_rest_of_line ();
return;
}
@ -3522,7 +3552,7 @@ s_alpha_ent (ignore)
if (symexpr.X_op != O_symbol)
{
as_fatal (".ent directive has no symbol");
as_fatal (_(".ent directive has no symbol"));
demand_empty_rest_of_line ();
return;
}
@ -3550,7 +3580,7 @@ s_alpha_frame (ignore)
if (*input_line_pointer++ != ','
|| get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .frame directive 1./2. param");
as_warn (_("Bad .frame directive 1./2. param"));
--input_line_pointer;
demand_empty_rest_of_line ();
return;
@ -3562,7 +3592,7 @@ s_alpha_frame (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer++ != ',')
{
as_warn ("Bad .frame directive 3./4. param");
as_warn (_("Bad .frame directive 3./4. param"));
--input_line_pointer;
demand_empty_rest_of_line ();
return;
@ -3587,7 +3617,7 @@ s_alpha_pdesc (ignore)
if (now_seg != alpha_link_section)
{
as_bad (".pdesc directive not in link (.link) section");
as_bad (_(".pdesc directive not in link (.link) section"));
demand_empty_rest_of_line ();
return;
}
@ -3595,7 +3625,7 @@ s_alpha_pdesc (ignore)
if ((alpha_evax_proc.symbol == 0)
|| (!S_IS_DEFINED (alpha_evax_proc.symbol)))
{
as_fatal (".pdesc has no matching .ent");
as_fatal (_(".pdesc has no matching .ent"));
demand_empty_rest_of_line ();
return;
}
@ -3605,7 +3635,7 @@ s_alpha_pdesc (ignore)
expression (&exp);
if (exp.X_op != O_symbol)
{
as_warn (".pdesc directive has no entry symbol");
as_warn (_(".pdesc directive has no entry symbol"));
demand_empty_rest_of_line ();
return;
}
@ -3617,7 +3647,7 @@ s_alpha_pdesc (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer++ != ',')
{
as_warn ("No comma after .pdesc <entryname>");
as_warn (_("No comma after .pdesc <entryname>"));
demand_empty_rest_of_line ();
return;
}
@ -3640,7 +3670,7 @@ s_alpha_pdesc (ignore)
}
else
{
as_fatal ("unknown procedure kind");
as_fatal (_("unknown procedure kind"));
demand_empty_rest_of_line ();
return;
}
@ -3735,7 +3765,7 @@ s_alpha_name (ignore)
if (now_seg != alpha_link_section)
{
as_bad (".name directive not in link (.link) section");
as_bad (_(".name directive not in link (.link) section"));
demand_empty_rest_of_line ();
return;
}
@ -3743,7 +3773,7 @@ s_alpha_name (ignore)
expression (&exp);
if (exp.X_op != O_symbol)
{
as_warn (".name directive has no symbol");
as_warn (_(".name directive has no symbol"));
demand_empty_rest_of_line ();
return;
}
@ -3778,7 +3808,7 @@ s_alpha_linkage (ignore)
expression (&exp);
if (exp.X_op != O_symbol)
{
as_fatal ("No symbol after .linkage");
as_fatal (_("No symbol after .linkage"));
}
else
{
@ -3807,7 +3837,7 @@ s_alpha_code_address (ignore)
expression (&exp);
if (exp.X_op != O_symbol)
{
as_fatal ("No symbol after .code_address");
as_fatal (_("No symbol after .code_address"));
}
else
{
@ -3842,7 +3872,7 @@ s_alpha_mask (ignore)
if (get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .mask directive");
as_warn (_("Bad .mask directive"));
--input_line_pointer;
}
else
@ -3864,7 +3894,7 @@ s_alpha_fmask (ignore)
if (get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .fmask directive");
as_warn (_("Bad .fmask directive"));
--input_line_pointer;
}
else
@ -3959,7 +3989,7 @@ s_alpha_gprel32 (ignore)
#endif
if (alpha_auto_align_on && alpha_current_align < 2)
alpha_align (2, (char *) NULL, alpha_insn_label);
alpha_align (2, (char *) NULL, alpha_insn_label, 0);
if (alpha_current_align > 2)
alpha_current_align = 2;
alpha_insn_label = NULL;
@ -4003,7 +4033,7 @@ s_alpha_float_cons (type)
}
if (alpha_auto_align_on && alpha_current_align < log_size)
alpha_align (log_size, (char *) NULL, alpha_insn_label);
alpha_align (log_size, (char *) NULL, alpha_insn_label, 0);
if (alpha_current_align > log_size)
alpha_current_align = log_size;
alpha_insn_label = NULL;
@ -4035,7 +4065,7 @@ s_alpha_proc (is_static)
if (*input_line_pointer != ',')
{
*p = 0;
as_warn ("Expected comma after name \"%s\"", name);
as_warn (_("Expected comma after name \"%s\""), name);
*p = c;
temp = 0;
ignore_rest_of_line ();
@ -4046,7 +4076,7 @@ s_alpha_proc (is_static)
temp = get_absolute_expression ();
}
/* symbolP->sy_other = (signed char) temp; */
as_warn ("unhandled: .proc %s,%d", name, temp);
as_warn (_("unhandled: .proc %s,%d"), name, temp);
demand_empty_rest_of_line ();
}
@ -4081,7 +4111,7 @@ s_alpha_set (x)
else if (!strcmp ("volatile", s))
/* ignore */ ;
else
as_warn ("Tried to .set unrecognized mode `%s'", name);
as_warn (_("Tried to .set unrecognized mode `%s'"), name);
*input_line_pointer = ch;
demand_empty_rest_of_line ();
@ -4098,7 +4128,7 @@ s_alpha_base (ignore)
if (first_32bit_quadrant)
{
/* not fatal, but it might not work in the end */
as_warn ("File overrides no-base-register option.");
as_warn (_("File overrides no-base-register option."));
first_32bit_quadrant = 0;
}
#endif
@ -4115,7 +4145,7 @@ s_alpha_base (ignore)
if (alpha_gp_register < 0 || alpha_gp_register > 31)
{
alpha_gp_register = AXP_REG_GP;
as_warn ("Bad base register, using $%d.", alpha_gp_register);
as_warn (_("Bad base register, using $%d."), alpha_gp_register);
}
demand_empty_rest_of_line ();
@ -4137,11 +4167,11 @@ s_alpha_align (ignore)
if (align > max_alignment)
{
align = max_alignment;
as_bad ("Alignment too large: %d. assumed", align);
as_bad (_("Alignment too large: %d. assumed"), align);
}
else if (align < 0)
{
as_warn ("Alignment negative: 0 assumed");
as_warn (_("Alignment negative: 0 assumed"));
align = 0;
}
@ -4157,7 +4187,7 @@ s_alpha_align (ignore)
if (align != 0)
{
alpha_auto_align_on = 1;
alpha_align (align, pfill, alpha_insn_label);
alpha_align (align, pfill, alpha_insn_label, 1);
}
else
{
@ -4202,7 +4232,7 @@ alpha_cons_align (size)
++log_size;
if (alpha_auto_align_on && alpha_current_align < log_size)
alpha_align (log_size, (char *) NULL, alpha_insn_label);
alpha_align (log_size, (char *) NULL, alpha_insn_label, 0);
if (alpha_current_align > log_size)
alpha_current_align = log_size;
alpha_insn_label = NULL;
@ -4283,7 +4313,6 @@ alpha_print_token(f, exp)
const pseudo_typeS md_pseudo_table[] =
{
{"common", s_comm, 0}, /* is this used? */
#ifdef OBJ_ECOFF
{"comm", s_alpha_comm, 0}, /* osf1 compiler does this */
{"rdata", s_alpha_rdata, 0},
@ -4434,7 +4463,7 @@ select_gp_value ()
S_SET_VALUE (alpha_gp_symbol, alpha_gp_value);
#ifdef DEBUG1
printf ("Chose GP value of %lx\n", alpha_gp_value);
printf (_("Chose GP value of %lx\n"), alpha_gp_value);
#endif
}
#endif /* OBJ_ECOFF */
@ -4445,10 +4474,11 @@ select_gp_value ()
feature wrt labels. */
static void
alpha_align (n, pfill, label)
alpha_align (n, pfill, label, force)
int n;
char *pfill;
symbolS *label;
int force;
{
if (alpha_current_align >= n)
return;
@ -4458,7 +4488,11 @@ alpha_align (n, pfill, label)
if (n > 2
&& (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
{
static char const nop[4] = { 0x1f, 0x04, 0xff, 0x47 };
static char const unop[4] = { 0x00, 0x00, 0xe0, 0x2f };
static char const nopunop[8] = {
0x1f, 0x04, 0xff, 0x47,
0x00, 0x00, 0xe0, 0x2f
};
/* First, make sure we're on a four-byte boundary, in case
someone has been putting .byte values into the text
@ -4467,7 +4501,10 @@ alpha_align (n, pfill, label)
with proper alignment. */
if (alpha_current_align < 2)
frag_align (2, 0, 0);
frag_align_pattern (n, nop, sizeof nop, 0);
if (alpha_current_align < 3)
frag_align_pattern (3, unop, sizeof unop, 0);
if (n > 3)
frag_align_pattern (n, nopunop, sizeof nopunop, 0);
}
else
frag_align (n, 0, 0);
@ -4485,6 +4522,9 @@ alpha_align (n, pfill, label)
}
record_alignment(now_seg, n);
/* ??? if alpha_flag_relax && force && elf, record the requested alignment
in a reloc for the linker to see. */
}
/* The Alpha has support for some VAX floating point types, as well as for

File diff suppressed because it is too large Load Diff

View File

@ -224,10 +224,10 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, "\nD30V options:\n\
fprintf(stream, (_"\nD30V options:\n\
-O Make adjacent short instructions parallel if possible.\n\
-n Warn about all NOPs inserted by the assembler.\n\
-N Warn about NOPs inserted after word multiplies.\n");
-N Warn about NOPs inserted after word multiplies.\n"));
}
int
@ -291,7 +291,7 @@ md_atof (type, litP, sizeP)
break;
default:
*sizeP = 0;
return "bad call to md_atof";
return _("bad call to md_atof");
}
t = atof_ieee (input_line_pointer, type, words);
@ -386,14 +386,14 @@ get_reloc (op, rel_flag)
break;
case 12:
if (!(op->flags & OPERAND_SHIFT))
as_warn("unexpected 12-bit reloc type");
as_warn(_("unexpected 12-bit reloc type"));
if (rel_flag == RELOC_PCREL)
return BFD_RELOC_D30V_15_PCREL;
else
return BFD_RELOC_D30V_15;
case 18:
if (!(op->flags & OPERAND_SHIFT))
as_warn("unexpected 18-bit reloc type");
as_warn(_("unexpected 18-bit reloc type"));
if (rel_flag == RELOC_PCREL)
return BFD_RELOC_D30V_21_PCREL;
else
@ -474,9 +474,9 @@ get_operands (exp, cmp_hack)
}
if (exp[numops].X_op == O_illegal)
as_bad ("illegal operand");
as_bad (_("illegal operand"));
else if (exp[numops].X_op == O_absent)
as_bad ("missing operand");
as_bad (_("missing operand"));
numops++;
p = input_line_pointer;
@ -559,7 +559,7 @@ build_insn (opcode, opers)
/* now create a fixup */
if (fixups->fc >= MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups->fix[fixups->fc].reloc =
get_reloc((struct d30v_operand *)&d30v_operand_table[form->operands[i]], op->reloc_flag);
@ -575,7 +575,7 @@ build_insn (opcode, opers)
/* truncate to the proper number of bits */
if ((opers[i].X_op == O_constant) && check_range (number, bits, flags))
as_bad("operand out of range: %d",number);
as_bad(_("operand out of range: %d"),number);
if (bits < 31)
number &= 0x7FFFFFFF >> (31 - bits);
if (flags & OPERAND_SHIFT)
@ -636,7 +636,7 @@ write_1_short (opcode, insn, fx)
int i, where;
if (warn_nops == NOP_ALL)
as_warn ("NOP inserted");
as_warn (_("NOP inserted"));
/* the other container needs to be NOP */
/* according to 4.3.1: for FM=00, sub-instructions performed only
@ -677,7 +677,8 @@ write_2_short (opcode1, insn1, opcode2, insn2, exec_type, fx)
char *f;
int i,j, where;
if(exec_type != EXEC_PARALLEL && (opcode1->op->flags_used == FLAG_JSR))
if(exec_type != EXEC_PARALLEL &&
((opcode1->op->flags_used & (FLAG_JSR | FLAG_DELAY)) == FLAG_JSR))
{
/* subroutines must be called from 32-bit boundaries */
/* so the return address will be correct */
@ -720,19 +721,19 @@ write_2_short (opcode1, insn1, opcode2, insn2, exec_type, fx)
case EXEC_PARALLEL: /* parallel */
flag_explicitly_parallel = flag_xp_state;
if (! parallel_ok (opcode1, insn1, opcode2, insn2, exec_type))
as_fatal ("Instructions may not be executed in parallel");
as_fatal (_("Instructions may not be executed in parallel"));
else if (opcode1->op->unit == IU)
{
if (opcode2->op->unit == IU)
as_fatal ("Two IU instructions may not be executed in parallel");
as_warn ("Swapping instruction order");
as_fatal (_("Two IU instructions may not be executed in parallel"));
as_warn (_("Swapping instruction order"));
insn = FM00 | (insn2 << 32) | insn1;
}
else if (opcode2->op->unit == MU)
{
if (opcode1->op->unit == MU)
as_fatal ("Two MU instructions may not be executed in parallel");
as_warn ("Swapping instruction order");
as_fatal (_("Two MU instructions may not be executed in parallel"));
as_warn (_("Swapping instruction order"));
insn = FM00 | (insn2 << 32) | insn1;
}
else
@ -745,20 +746,20 @@ write_2_short (opcode1, insn1, opcode2, insn2, exec_type, fx)
case EXEC_SEQ: /* sequential */
if (opcode1->op->unit == IU)
as_fatal ("IU instruction may not be in the left container");
as_fatal (_("IU instruction may not be in the left container"));
insn = FM01 | (insn1 << 32) | insn2;
fx = fx->next;
break;
case EXEC_REVSEQ: /* reverse sequential */
if (opcode2->op->unit == MU)
as_fatal ("MU instruction may not be in the right container");
as_fatal (_("MU instruction may not be in the right container"));
insn = FM10 | (insn1 << 32) | insn2;
fx = fx->next;
break;
default:
as_fatal("unknown execution type passed to write_2_short()");
as_fatal(_("unknown execution type passed to write_2_short()"));
}
/* printf("writing out %llx\n",insn); */
@ -1090,9 +1091,9 @@ md_assemble (str)
/* assemble first instruction and save it */
prev_insn = do_assemble (str, &prev_opcode);
if (prev_insn == -1)
as_fatal ("cannot assemble instruction ");
as_fatal (_("cannot assemble instruction "));
if (prev_opcode.form->form >= LONG)
as_fatal ("First opcode is long. Unable to mix instructions as specified.");
as_fatal (_("First opcode is long. Unable to mix instructions as specified."));
fixups = fixups->next;
str = str2 + 2;
}
@ -1106,7 +1107,7 @@ md_assemble (str)
etype = extype;
return;
}
as_fatal ("cannot assemble instruction ");
as_fatal (_("cannot assemble instruction "));
}
if (etype)
@ -1145,10 +1146,12 @@ md_assemble (str)
f = frag_more(8);
d30v_number_to_chars (f, NOP2, 8);
if (warn_nops == NOP_ALL || warn_nops == NOP_MULTIPLY)
as_warn ("word of NOPs added between word multiply and %s",
((opcode.op->flags_used & FLAG_MEM)
? "load"
: "16-bit multiply"));
{
if ((opcode.op->flags_used & FLAG_MEM))
as_warn (_("word of NOPs added between word multiply and load"));
else
as_warn (_("word of NOPs added between word multiply and 16-bit multiply"));
}
}
}
@ -1156,7 +1159,7 @@ md_assemble (str)
if (opcode.form->form >= LONG)
{
if (extype)
as_fatal("Unable to mix instructions as specified");
as_fatal(_("Unable to mix instructions as specified"));
d30v_cleanup();
write_long (&opcode, insn, fixups);
prev_insn = -1;
@ -1173,7 +1176,7 @@ md_assemble (str)
else
{
if (extype)
as_fatal("Unable to mix instructions as specified");
as_fatal(_("Unable to mix instructions as specified"));
/* save off last instruction so it may be packed on next pass */
memcpy(&prev_opcode, &opcode, sizeof(prev_opcode));
prev_insn = insn;
@ -1232,7 +1235,7 @@ do_assemble (str, opcode)
char tmp[4];
strncpy(tmp,op_end+1,2);
tmp[2] = 0;
as_fatal ("unknown condition code: %s",tmp);
as_fatal (_("unknown condition code: %s"),tmp);
return -1;
}
/* printf("condition code=%d\n",i); */
@ -1262,14 +1265,14 @@ do_assemble (str, opcode)
if (i < 3 || i > 6)
{
name[p+2]=0;
as_fatal ("cmpu doesn't support condition code %s",&name[p]);
as_fatal (_("cmpu doesn't support condition code %s"),&name[p]);
}
}
if (!*str)
{
name[p+2]=0;
as_fatal ("unknown condition code: %s",&name[p]);
as_fatal (_("unknown condition code: %s"),&name[p]);
}
cmp_hack = i;
@ -1298,7 +1301,7 @@ do_assemble (str, opcode)
/* find the first opcode with the proper name */
opcode->op = (struct d30v_opcode *)hash_find (d30v_hash, name);
if (opcode->op == NULL)
as_fatal ("unknown opcode: %s",name);
as_fatal (_("unknown opcode: %s"),name);
save = input_line_pointer;
input_line_pointer = op_end;
@ -1453,7 +1456,7 @@ tc_gen_reloc (seg, fixp)
if (reloc->howto == (reloc_howto_type *) NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"reloc %d not supported by object file format", (int)fixp->fx_r_type);
_("reloc %d not supported by object file format"), (int)fixp->fx_r_type);
return NULL;
}
reloc->addend = fixp->fx_addnumber;
@ -1510,7 +1513,7 @@ md_apply_fix3 (fixp, valuep, seg)
{
/* We don't actually support subtracting a symbol. */
as_bad_where (fixp->fx_file, fixp->fx_line,
"expression too complex");
_("expression too complex"));
}
}
}
@ -1602,7 +1605,7 @@ md_apply_fix3 (fixp, valuep, seg)
break;
default:
as_fatal ("line %d: unknown relocation type: 0x%x",fixp->fx_line,fixp->fx_r_type);
as_fatal (_("line %d: unknown relocation type: 0x%x"),fixp->fx_line,fixp->fx_r_type);
}
return 0;
}

View File

@ -1,5 +1,5 @@
/* tc-h8500.c -- Assemble code for the Hitachi H8/500
Copyright (C) 1993 Free Software Foundation.
Copyright (C) 1993, 1998 Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@ -293,7 +293,7 @@ parse_exp (s, op, page)
expression (op);
if (op->X_op == O_absent)
as_bad ("missing operand");
as_bad (_("missing operand"));
new = input_line_pointer;
input_line_pointer = save;
return new;
@ -333,14 +333,14 @@ skip_colonthing (sign, ptr, exp, def, size8, size16, size24)
{
if (!size24)
{
as_bad (":24 not valid for this opcode");
as_bad (_(":24 not valid for this opcode"));
}
ptr += 2;
exp->type = size24;
}
else
{
as_bad ("expect :8,:16 or :24");
as_bad (_("expect :8,:16 or :24"));
exp->type = size16;
}
}
@ -397,7 +397,7 @@ parse_reglist (src, op)
}
else
{
as_bad ("syntax error in reg list");
as_bad (_("syntax error in reg list"));
return 0;
}
if (src[idx] == '-')
@ -415,7 +415,7 @@ parse_reglist (src, op)
}
else
{
as_bad ("missing final register in range");
as_bad (_("missing final register in range"));
}
}
if (src[idx] == ',')
@ -502,20 +502,20 @@ get_operand (ptr, op, ispage)
if (*src != ',')
{
as_bad ("expected @(exp, Rn)");
as_bad (_("expected @(exp, Rn)"));
return;
}
src++;
len = parse_reg (src, &mode, &op->reg);
if (len == 0 || mode != RN)
{
as_bad ("expected @(exp, Rn)");
as_bad (_("expected @(exp, Rn)"));
return;
}
src += len;
if (*src != ')')
{
as_bad ("expected @(exp, Rn)");
as_bad (_("expected @(exp, Rn)"));
return;
}
*ptr = src + 1;
@ -531,7 +531,7 @@ get_operand (ptr, op, ispage)
src++;
if (mode != RN)
{
as_bad ("@Rn+ needs word register");
as_bad (_("@Rn+ needs word register"));
return;
}
op->type = RNINC;
@ -541,7 +541,7 @@ get_operand (ptr, op, ispage)
}
if (mode != RN)
{
as_bad ("@Rn needs word register");
as_bad (_("@Rn needs word register"));
return;
}
op->type = RNIND;
@ -841,7 +841,7 @@ get_specific (opcode, operands)
}
break;
default:
printf ("unhandled %d\n", this_try->arg_type[i]);
printf (_("unhandled %d\n"), this_try->arg_type[i]);
break;
}
@ -869,7 +869,7 @@ check (operand, low, high)
|| operand->X_add_number < low
|| operand->X_add_number > high)
{
as_bad ("operand must be absolute in range %d..%d", low, high);
as_bad (_("operand must be absolute in range %d..%d"), low, high);
}
return operand->X_add_number;
}
@ -959,7 +959,7 @@ build_bytes (opcode, operand)
switch (opcode->bytes[index].insert)
{
default:
printf ("failed for %d\n", opcode->bytes[index].insert);
printf (_("failed for %d\n"), opcode->bytes[index].insert);
break;
case 0:
break;
@ -1118,14 +1118,14 @@ DEFUN (md_assemble, (str),
if (op_end == op_start)
{
as_bad ("can't find opcode ");
as_bad (_("can't find opcode "));
}
opcode = (h8500_opcode_info *) hash_find (opcode_hash_control, name);
if (opcode == NULL)
{
as_bad ("unknown opcode");
as_bad (_("unknown opcode"));
return;
}
@ -1141,7 +1141,7 @@ DEFUN (md_assemble, (str),
where[0] = 0x0;
where[1] = 0x0;
as_bad ("invalid operands for opcode");
as_bad (_("invalid operands for opcode"));
return;
}
@ -1153,7 +1153,7 @@ void
DEFUN (tc_crawl_symbol_chain, (headers),
object_headers * headers)
{
printf ("call to tc_crawl_symbol_chain \n");
printf (_("call to tc_crawl_symbol_chain \n"));
}
symbolS *
@ -1167,7 +1167,7 @@ void
DEFUN (tc_headers_hook, (headers),
object_headers * headers)
{
printf ("call to tc_headers_hook \n");
printf (_("call to tc_headers_hook \n"));
}
/* Various routines to kill one day */
@ -1218,7 +1218,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -1258,7 +1258,7 @@ int md_short_jump_size;
void
tc_aout_fix_to_chars ()
{
printf ("call to tc_aout_fix_to_chars \n");
printf (_("call to tc_aout_fix_to_chars \n"));
abort ();
}
@ -1270,7 +1270,7 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
void
@ -1280,7 +1280,7 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
static

View File

@ -1,11 +1,11 @@
/* tc-hppa.c -- Assemble for the PA
Copyright (C) 1989, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1989, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
@ -538,7 +538,7 @@ static void pa_ip PARAMS ((char *));
static void fix_new_hppa PARAMS ((fragS *, int, int, symbolS *,
long, expressionS *, int,
bfd_reloc_code_real_type,
enum hppa_reloc_field_selector_type,
enum hppa_reloc_field_selector_type_alt,
int, long, int *));
static int is_end_of_statement PARAMS ((void));
static int reg_name_search PARAMS ((char *));
@ -1058,7 +1058,7 @@ static struct default_space_dict pa_def_spaces[] =
if ((FIELD) > (HIGH) || (FIELD) < (LOW)) \
{ \
if (! IGNORE) \
as_bad ("Field out of range [%d..%d] (%d).", (LOW), (HIGH), \
as_bad (_("Field out of range [%d..%d] (%d)."), (LOW), (HIGH), \
(int) (FIELD));\
break; \
} \
@ -1087,10 +1087,10 @@ void
pa_check_eof ()
{
if (within_entry_exit)
as_fatal ("Missing .exit\n");
as_fatal (_("Missing .exit\n"));
if (within_procedure)
as_fatal ("Missing .procend\n");
as_fatal (_("Missing .procend\n"));
}
/* Check to make sure we have a valid space and subspace. */
@ -1099,10 +1099,10 @@ static void
pa_check_current_space_and_subspace ()
{
if (current_space == NULL)
as_fatal ("Not in a space.\n");
as_fatal (_("Not in a space.\n"));
if (current_subspace == NULL)
as_fatal ("Not in a subspace.\n");
as_fatal (_("Not in a subspace.\n"));
}
/* Returns a pointer to the label_symbol_struct for the current space.
@ -1264,7 +1264,7 @@ cons_fix_new_hppa (frag, where, size, exp)
rel_type = R_HPPA;
if (hppa_field_selector != e_psel && hppa_field_selector != e_fsel)
as_warn ("Invalid field selector. Assuming F%%.");
as_warn (_("Invalid field selector. Assuming F%%."));
fix_new_hppa (frag, where, size,
(symbolS *) NULL, (offsetT) 0, exp, 0, rel_type,
@ -1289,13 +1289,13 @@ md_begin ()
/* Set the default machine type. */
if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, 10))
as_warn ("could not set architecture and machine");
as_warn (_("could not set architecture and machine"));
/* Folding of text and data segments fails miserably on the PA.
Warn user and disable "-R" option. */
if (flag_readonly_data_in_text)
{
as_warn ("-R option not supported on this target.");
as_warn (_("-R option not supported on this target."));
flag_readonly_data_in_text = 0;
}
@ -1309,7 +1309,7 @@ md_begin ()
retval = hash_insert (op_hash, name, (struct pa_opcode *) &pa_opcodes[i]);
if (retval != NULL && *retval != '\0')
{
as_fatal ("Internal error: can't hash `%s': %s\n", name, retval);
as_fatal (_("Internal error: can't hash `%s': %s\n"), name, retval);
lose = 1;
}
do
@ -1317,7 +1317,7 @@ md_begin ()
if ((pa_opcodes[i].match & pa_opcodes[i].mask)
!= pa_opcodes[i].match)
{
fprintf (stderr, "internal error: losing opcode: `%s' \"%s\"\n",
fprintf (stderr, _("internal error: losing opcode: `%s' \"%s\"\n"),
pa_opcodes[i].name, pa_opcodes[i].args);
lose = 1;
}
@ -1327,7 +1327,7 @@ md_begin ()
}
if (lose)
as_fatal ("Broken assembler. No assembly attempted.");
as_fatal (_("Broken assembler. No assembly attempted."));
/* SOM will change text_section. To make sure we never put
anything into the old one switch to the new one now. */
@ -1379,10 +1379,10 @@ md_assemble (str)
#endif
}
else
as_bad ("Missing function name for .PROC (corrupted label chain)");
as_bad (_("Missing function name for .PROC (corrupted label chain)"));
}
else
as_bad ("Missing function name for .PROC");
as_bad (_("Missing function name for .PROC"));
}
/* Assemble the instruction. Results are saved into "the_insn". */
@ -1441,7 +1441,7 @@ pa_ip (str)
break;
default:
as_fatal ("Unknown opcode: `%s'", str);
as_fatal (_("Unknown opcode: `%s'"), str);
}
save_s = str;
@ -1482,7 +1482,7 @@ pa_ip (str)
if (bfd_get_mach (stdoutput) < insn->arch)
{
if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, insn->arch))
as_warn ("could not update architecture and machine");
as_warn (_("could not update architecture and machine"));
}
/* Build the opcode, checking as we go to make
@ -1608,12 +1608,12 @@ pa_ip (str)
else if (strncasecmp (s, "s", 1) == 0)
uu = 1;
else
as_bad ("Invalid Indexed Load Completer.");
as_bad (_("Invalid Indexed Load Completer."));
s++;
i++;
}
if (i > 2)
as_bad ("Invalid Indexed Load Completer Syntax.");
as_bad (_("Invalid Indexed Load Completer Syntax."));
opcode |= m << 5;
INSERT_FIELD_AND_CONTINUE (opcode, uu, 13);
}
@ -1637,7 +1637,7 @@ pa_ip (str)
m = 1;
}
else
as_bad ("Invalid Short Load/Store Completer.");
as_bad (_("Invalid Short Load/Store Completer."));
s += 2;
}
opcode |= m << 5;
@ -1660,12 +1660,12 @@ pa_ip (str)
else if (strncasecmp (s, "e", 1) == 0)
a = 1;
else
as_bad ("Invalid Store Bytes Short Completer");
as_bad (_("Invalid Store Bytes Short Completer"));
s++;
i++;
}
if (i > 2)
as_bad ("Invalid Store Bytes Short Completer");
as_bad (_("Invalid Store Bytes Short Completer"));
opcode |= m << 5;
INSERT_FIELD_AND_CONTINUE (opcode, a, 13);
}
@ -1675,7 +1675,7 @@ pa_ip (str)
cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s, 1);
if (cmpltr < 0)
{
as_bad ("Invalid Compare/Subtract Condition: %c", *s);
as_bad (_("Invalid Compare/Subtract Condition: %c"), *s);
cmpltr = 0;
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@ -1690,7 +1690,7 @@ pa_ip (str)
cmpltr = pa_parse_neg_cmpsub_cmpltr (&s, 1);
if (cmpltr < 0)
{
as_bad ("Invalid Compare/Subtract Condition.");
as_bad (_("Invalid Compare/Subtract Condition."));
cmpltr = 0;
}
else
@ -1706,7 +1706,7 @@ pa_ip (str)
cmpltr = pa_parse_nonneg_add_cmpltr (&s, 1);
if (cmpltr < 0)
{
as_bad ("Invalid Compare/Subtract Condition: %c", *s);
as_bad (_("Invalid Compare/Subtract Condition: %c"), *s);
cmpltr = 0;
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@ -1721,7 +1721,7 @@ pa_ip (str)
cmpltr = pa_parse_neg_add_cmpltr (&s, 1);
if (cmpltr < 0)
{
as_bad ("Invalid Compare/Subtract Condition");
as_bad (_("Invalid Compare/Subtract Condition"));
cmpltr = 0;
}
else
@ -1747,7 +1747,7 @@ pa_ip (str)
cmpltr = pa_parse_neg_cmpsub_cmpltr (&s, 0);
if (cmpltr < 0)
{
as_bad ("Invalid Compare/Subtract Condition");
as_bad (_("Invalid Compare/Subtract Condition"));
}
}
}
@ -1824,7 +1824,7 @@ pa_ip (str)
flag = 1;
}
else
as_bad ("Invalid Add Condition: %s", name);
as_bad (_("Invalid Add Condition: %s"), name);
*s = c;
}
nullif = pa_parse_nullif (&s);
@ -1878,7 +1878,7 @@ pa_ip (str)
flag = 1;
}
else
as_bad ("Invalid Logical Instruction Condition.");
as_bad (_("Invalid Logical Instruction Condition."));
*s = c;
}
opcode |= cmpltr << 13;
@ -1953,7 +1953,7 @@ pa_ip (str)
s += 3;
}
else
as_bad ("Invalid Logical Instruction Condition.");
as_bad (_("Invalid Logical Instruction Condition."));
}
opcode |= cmpltr << 13;
INSERT_FIELD_AND_CONTINUE (opcode, flag, 12);
@ -1993,7 +1993,7 @@ pa_ip (str)
continue;
}
else
as_bad ("Invalid Shift/Extract/Deposit Condition.");
as_bad (_("Invalid Shift/Extract/Deposit Condition."));
*s = c;
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@ -2015,7 +2015,7 @@ pa_ip (str)
s += 2;
}
else
as_bad ("Invalid Bit Branch Condition: %c", *s);
as_bad (_("Invalid Bit Branch Condition: %c"), *s);
}
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@ -2126,7 +2126,7 @@ pa_ip (str)
num = evaluate_absolute (&the_insn);
if (num % 4)
{
as_bad ("Branch to unaligned address");
as_bad (_("Branch to unaligned address"));
break;
}
CHECK_FIELD (num, 8199, -8184, 0);
@ -2159,7 +2159,7 @@ pa_ip (str)
num = evaluate_absolute (&the_insn);
if (num % 4)
{
as_bad ("Branch to unaligned address");
as_bad (_("Branch to unaligned address"));
break;
}
CHECK_FIELD (num, 262143, -262144, 0);
@ -2196,7 +2196,7 @@ pa_ip (str)
num = evaluate_absolute (&the_insn);
if (num % 4)
{
as_bad ("Branch to unaligned address");
as_bad (_("Branch to unaligned address"));
break;
}
CHECK_FIELD (num, 262143, -262144, 0);
@ -2256,7 +2256,7 @@ pa_ip (str)
/* Handle a 3 bit SFU identifier at 25. */
case 'f':
if (*s++ != ',')
as_bad ("Invalid SFU identifier");
as_bad (_("Invalid SFU identifier"));
num = pa_get_absolute_expression (&the_insn, &s);
s = expr_end;
CHECK_FIELD (num, 7, 0, 0);
@ -2296,7 +2296,7 @@ pa_ip (str)
/* Handle a 3-bit co-processor ID field. */
case 'u':
if (*s++ != ',')
as_bad ("Invalid COPR identifier");
as_bad (_("Invalid COPR identifier"));
num = pa_get_absolute_expression (&the_insn, &s);
s = expr_end;
CHECK_FIELD (num, 7, 0, 0);
@ -2391,7 +2391,7 @@ pa_ip (str)
{
if (result.number_part < 16)
{
as_bad ("Invalid register for single precision fmpyadd or fmpysub");
as_bad (_("Invalid register for single precision fmpyadd or fmpysub"));
break;
}
@ -2412,7 +2412,7 @@ pa_ip (str)
{
if (result.number_part < 16)
{
as_bad ("Invalid register for single precision fmpyadd or fmpysub");
as_bad (_("Invalid register for single precision fmpyadd or fmpysub"));
break;
}
result.number_part &= 0xF;
@ -2432,7 +2432,7 @@ pa_ip (str)
{
if (result.number_part < 16)
{
as_bad ("Invalid register for single precision fmpyadd or fmpysub");
as_bad (_("Invalid register for single precision fmpyadd or fmpysub"));
break;
}
result.number_part &= 0xF;
@ -2452,7 +2452,7 @@ pa_ip (str)
{
if (result.number_part < 16)
{
as_bad ("Invalid register for single precision fmpyadd or fmpysub");
as_bad (_("Invalid register for single precision fmpyadd or fmpysub"));
break;
}
result.number_part &= 0xF;
@ -2472,7 +2472,7 @@ pa_ip (str)
{
if (result.number_part < 16)
{
as_bad ("Invalid register for single precision fmpyadd or fmpysub");
as_bad (_("Invalid register for single precision fmpyadd or fmpysub"));
break;
}
result.number_part &= 0xF;
@ -2496,7 +2496,7 @@ pa_ip (str)
case QUAD:
case ILLEGAL_FMT:
default:
as_bad ("Invalid Floating Point Operand Format.");
as_bad (_("Invalid Floating Point Operand Format."));
}
break;
@ -2518,7 +2518,7 @@ pa_ip (str)
}
else
{
as_bad ("Invalid operands %s", error_message);
as_bad (_("Invalid operands %s"), error_message);
return;
}
}
@ -2574,7 +2574,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -2845,7 +2845,7 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
fprintf (stderr, "pa_create_short_jmp\n");
fprintf (stderr, _("pa_create_short_jmp\n"));
abort ();
}
@ -2857,7 +2857,7 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
fprintf (stderr, "pa_create_long_jump\n");
fprintf (stderr, _("pa_create_long_jump\n"));
abort ();
}
@ -3047,16 +3047,27 @@ md_apply_fix (fixP, valp)
/* Handle some of the opcodes with the 'W' operand type. */
case 17:
CHECK_FIELD (new_val, 262143, -262144, 0);
{
int distance = *valp;
/* Mask off 17 bits to be changed. */
bfd_put_32 (stdoutput,
bfd_get_32 (stdoutput, buf) & 0xffe0e002,
buf);
sign_unext ((new_val - 8) >> 2, 17, &resulti);
dis_assemble_17 (resulti, &w1, &w2, &w);
result = ((w2 << 2) | (w1 << 16) | w);
break;
CHECK_FIELD (new_val, 262143, -262144, 0);
/* If this is an absolute branch (ie no link) with an out of
range target, then we want to complain. */
if (fixP->fx_r_type == R_HPPA_PCREL_CALL
&& (distance > 262143 || distance < -262144)
&& (bfd_get_32 (stdoutput, buf) & 0xffe00000) == 0xe8000000)
CHECK_FIELD (distance, 262143, -262144, 0);
/* Mask off 17 bits to be changed. */
bfd_put_32 (stdoutput,
bfd_get_32 (stdoutput, buf) & 0xffe0e002,
buf);
sign_unext ((new_val - 8) >> 2, 17, &resulti);
dis_assemble_17 (resulti, &w1, &w2, &w);
result = ((w2 << 2) | (w1 << 16) | w);
break;
}
case 32:
result = 0;
@ -3064,7 +3075,7 @@ md_apply_fix (fixP, valp)
break;
default:
as_bad ("Unknown relocation encountered in md_apply_fix.");
as_bad (_("Unknown relocation encountered in md_apply_fix."));
return 0;
}
@ -3074,7 +3085,7 @@ md_apply_fix (fixP, valp)
}
else
{
printf ("no hppa_fixup entry for this fixup (fixP = 0x%x, type = 0x%x)\n",
printf (_("no hppa_fixup entry for this fixup (fixP = 0x%x, type = 0x%x)\n"),
(unsigned int) fixP, fixP->fx_r_type);
return 0;
}
@ -3216,7 +3227,7 @@ pa_parse_number (s, result)
else if (!isdigit (*p))
{
if (print_errors)
as_bad ("Undefined register: '%s'.", name);
as_bad (_("Undefined register: '%s'."), name);
num = -1;
}
else
@ -3241,7 +3252,7 @@ pa_parse_number (s, result)
else
{
if (print_errors)
as_bad ("Undefined register: '%s'.", name);
as_bad (_("Undefined register: '%s'."), name);
num = -1;
}
*p = c;
@ -3279,7 +3290,7 @@ pa_parse_number (s, result)
else
{
if (print_errors)
as_bad ("Non-absolute symbol: '%s'.", name);
as_bad (_("Non-absolute symbol: '%s'."), name);
num = -1;
}
}
@ -3294,7 +3305,7 @@ pa_parse_number (s, result)
else
{
if (print_errors)
as_bad ("Undefined absolute constant: '%s'.", name);
as_bad (_("Undefined absolute constant: '%s'."), name);
num = -1;
}
}
@ -3364,7 +3375,7 @@ need_pa11_opcode (insn, result)
if (bfd_get_mach (stdoutput) < pa11)
{
if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, pa11))
as_warn ("could not update architecture and machine");
as_warn (_("could not update architecture and machine"));
}
return TRUE;
}
@ -3403,7 +3414,7 @@ pa_parse_fp_cmp_cond (s)
}
}
as_bad ("Invalid FP Compare Condition: %s", *s);
as_bad (_("Invalid FP Compare Condition: %s"), *s);
/* Advance over the bogus completer. */
while (**s != ',' && **s != ' ' && **s != '\t')
@ -3443,7 +3454,7 @@ pa_parse_fp_format (s)
else
{
format = ILLEGAL_FMT;
as_bad ("Invalid FP Operand Format: %3s", *s);
as_bad (_("Invalid FP Operand Format: %3s"), *s);
}
}
@ -3524,7 +3535,7 @@ get_expression (str)
|| seg == undefined_section
|| SEG_NORMAL (seg)))
{
as_warn ("Bad segment in expression.");
as_warn (_("Bad segment in expression."));
expr_end = input_line_pointer;
input_line_pointer = save_in;
return 1;
@ -3548,7 +3559,7 @@ pa_get_absolute_expression (insn, strp)
expression (&insn->exp);
if (insn->exp.X_op != O_constant)
{
as_bad ("Bad segment (should be absolute).");
as_bad (_("Bad segment (should be absolute)."));
expr_end = input_line_pointer;
input_line_pointer = save_in;
return 0;
@ -3647,7 +3658,7 @@ pa_build_arg_reloc (type_name)
else if (strncasecmp (type_name, "fu", 2) == 0)
return 3;
else
as_bad ("Invalid argument location: %s\n", type_name);
as_bad (_("Invalid argument location: %s\n"), type_name);
return 0;
}
@ -3678,7 +3689,7 @@ pa_align_arg_reloc (reg, arg_reloc)
new_reloc <<= 2;
break;
default:
as_bad ("Invalid argument description: %d", reg);
as_bad (_("Invalid argument description: %d"), reg);
}
return new_reloc;
@ -3701,7 +3712,7 @@ pa_parse_nullif (s)
nullif = 1;
else
{
as_bad ("Invalid Nullification: (%c)", **s);
as_bad (_("Invalid Nullification: (%c)"), **s);
nullif = 0;
}
*s = *s + 1;
@ -4163,7 +4174,7 @@ pa_call_args (call_desc)
}
else
{
as_bad ("Invalid .CALL argument: %s", name);
as_bad (_("Invalid .CALL argument: %s"), name);
}
p = input_line_pointer;
*p = c;
@ -4282,7 +4293,7 @@ pa_callinfo (unused)
/* .CALLINFO must appear within a procedure definition. */
if (!within_procedure)
as_bad (".callinfo is not within a procedure definition");
as_bad (_(".callinfo is not within a procedure definition"));
/* Mark the fact that we found the .CALLINFO for the
current procedure. */
@ -4302,7 +4313,7 @@ pa_callinfo (unused)
temp = get_absolute_expression ();
if ((temp & 0x3) != 0)
{
as_bad ("FRAME parameter must be a multiple of 8: %d\n", temp);
as_bad (_("FRAME parameter must be a multiple of 8: %d\n"), temp);
temp = 0;
}
@ -4321,7 +4332,7 @@ pa_callinfo (unused)
even though %r19 is caller saved. I think this is a bug in
the HP assembler, and we are not going to emulate it. */
if (temp < 3 || temp > 18)
as_bad ("Value for ENTRY_GR must be in the range 3..18\n");
as_bad (_("Value for ENTRY_GR must be in the range 3..18\n"));
last_call_info->ci_unwind.descriptor.entry_gr = temp - 2;
}
else if ((strncasecmp (name, "entry_fr", 8) == 0))
@ -4333,7 +4344,7 @@ pa_callinfo (unused)
/* Similarly the HP assembler takes 31 as the high bound even
though %fr21 is the last callee saved floating point register. */
if (temp < 12 || temp > 21)
as_bad ("Value for ENTRY_FR must be in the range 12..21\n");
as_bad (_("Value for ENTRY_FR must be in the range 12..21\n"));
last_call_info->ci_unwind.descriptor.entry_fr = temp - 11;
}
else if ((strncasecmp (name, "entry_sr", 8) == 0))
@ -4343,7 +4354,7 @@ pa_callinfo (unused)
input_line_pointer++;
temp = get_absolute_expression ();
if (temp != 3)
as_bad ("Value for ENTRY_SR must be 3\n");
as_bad (_("Value for ENTRY_SR must be 3\n"));
}
/* Note whether or not this function performs any calls. */
else if ((strncasecmp (name, "calls", 5) == 0) ||
@ -4399,7 +4410,7 @@ pa_callinfo (unused)
}
else
{
as_bad ("Invalid .CALLINFO argument: %s", name);
as_bad (_("Invalid .CALLINFO argument: %s"), name);
*input_line_pointer = c;
}
if (!is_end_of_statement ())
@ -4502,11 +4513,11 @@ pa_entry (unused)
pa_check_current_space_and_subspace ();
if (!within_procedure)
as_bad ("Misplaced .entry. Ignored.");
as_bad (_("Misplaced .entry. Ignored."));
else
{
if (!callinfo_found)
as_bad ("Missing .callinfo.");
as_bad (_("Missing .callinfo."));
}
demand_empty_rest_of_line ();
within_entry_exit = TRUE;
@ -4554,9 +4565,9 @@ pa_equ (reg)
else
{
if (reg)
as_bad (".REG must use a label");
as_bad (_(".REG must use a label"));
else
as_bad (".EQU must use a label");
as_bad (_(".EQU must use a label"));
}
pa_undefine_label ();
@ -4607,15 +4618,15 @@ pa_exit (unused)
pa_check_current_space_and_subspace ();
if (!within_procedure)
as_bad (".EXIT must appear within a procedure");
as_bad (_(".EXIT must appear within a procedure"));
else
{
if (!callinfo_found)
as_bad ("Missing .callinfo");
as_bad (_("Missing .callinfo"));
else
{
if (!within_entry_exit)
as_bad ("No .ENTRY for this .EXIT");
as_bad (_("No .ENTRY for this .EXIT"));
else
{
within_entry_exit = FALSE;
@ -4642,7 +4653,7 @@ pa_export (unused)
/* Make sure the given symbol exists. */
if ((symbol = symbol_find_or_make (name)) == NULL)
{
as_bad ("Cannot define export symbol: %s\n", name);
as_bad (_("Cannot define export symbol: %s\n"), name);
p = input_line_pointer;
*p = c;
input_line_pointer++;
@ -4695,7 +4706,7 @@ pa_type_args (symbolP, is_export)
if (symbolP->bsym->flags & BSF_FUNCTION)
{
if (is_export)
as_tsktsk ("Using ENTRY rather than CODE in export directive for %s", symbolP->bsym->name);
as_tsktsk (_("Using ENTRY rather than CODE in export directive for %s"), symbolP->bsym->name);
symbolP->bsym->flags |= BSF_FUNCTION;
type = SYMBOL_TYPE_ENTRY;
@ -4795,7 +4806,7 @@ pa_type_args (symbolP, is_export)
}
else
{
as_bad ("Undefined .EXPORT/.IMPORT argument (ignored): %s", name);
as_bad (_("Undefined .EXPORT/.IMPORT argument (ignored): %s"), name);
p = input_line_pointer;
*p = c;
}
@ -4877,12 +4888,12 @@ pa_label (unused)
}
else
{
as_warn ("Missing label name on .LABEL");
as_warn (_("Missing label name on .LABEL"));
}
if (!is_end_of_statement ())
{
as_warn ("extra .LABEL arguments ignored.");
as_warn (_("extra .LABEL arguments ignored."));
ignore_rest_of_line ();
}
demand_empty_rest_of_line ();
@ -4913,17 +4924,17 @@ pa_level (unused)
{
input_line_pointer += 3;
if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, 10))
as_warn ("could not set architecture and machine");
as_warn (_("could not set architecture and machine"));
}
else if (strncmp (level, "1.1", 3) == 0)
{
input_line_pointer += 3;
if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, 11))
as_warn ("could not set architecture and machine");
as_warn (_("could not set architecture and machine"));
}
else
{
as_bad ("Unrecognized .LEVEL argument\n");
as_bad (_("Unrecognized .LEVEL argument\n"));
ignore_rest_of_line ();
}
demand_empty_rest_of_line ();
@ -4957,7 +4968,7 @@ pa_param (unused)
if ((symbol = symbol_find_or_make (name)) == NULL)
{
as_bad ("Cannot define static symbol: %s\n", name);
as_bad (_("Cannot define static symbol: %s\n"), name);
p = input_line_pointer;
*p = c;
input_line_pointer++;
@ -4990,7 +5001,7 @@ pa_proc (unused)
pa_check_current_space_and_subspace ();
if (within_procedure)
as_fatal ("Nested procedures");
as_fatal (_("Nested procedures"));
/* Reset global variables for new procedure. */
callinfo_found = FALSE;
@ -5000,7 +5011,7 @@ pa_proc (unused)
call_info = (struct call_info *) xmalloc (sizeof (struct call_info));
if (!call_info)
as_fatal ("Cannot allocate unwind descriptor\n");
as_fatal (_("Cannot allocate unwind descriptor\n"));
bzero (call_info, sizeof (struct call_info));
@ -5036,7 +5047,7 @@ pa_proc (unused)
label_symbol->lss_label->bsym->flags |= BSF_FUNCTION;
}
else
as_bad ("Missing function name for .PROC (corrupted label chain)");
as_bad (_("Missing function name for .PROC (corrupted label chain)"));
}
else
last_call_info->start_symbol = NULL;
@ -5088,20 +5099,20 @@ pa_procend (unused)
#endif
}
else
as_bad ("Missing function name for .PROC (corrupted label chain)");
as_bad (_("Missing function name for .PROC (corrupted label chain)"));
}
else
as_bad ("Missing function name for .PROC");
as_bad (_("Missing function name for .PROC"));
}
if (!within_procedure)
as_bad ("misplaced .procend");
as_bad (_("misplaced .procend"));
if (!callinfo_found)
as_bad ("Missing .callinfo for this procedure");
as_bad (_("Missing .callinfo for this procedure"));
if (within_entry_exit)
as_bad ("Missing .EXIT for a .ENTRY");
as_bad (_("Missing .EXIT for a .ENTRY"));
#ifdef OBJ_ELF
/* ELF needs to mark the end of each function so that it can compute
@ -5201,7 +5212,7 @@ pa_parse_space_stmt (space_name, create_flag)
}
else
{
as_bad ("Invalid .SPACE argument");
as_bad (_("Invalid .SPACE argument"));
*input_line_pointer = c;
if (!is_end_of_statement ())
input_line_pointer++;
@ -5249,7 +5260,7 @@ pa_space (unused)
if (within_procedure)
{
as_bad ("Can\'t change spaces within a procedure definition. Ignored");
as_bad (_("Can\'t change spaces within a procedure definition. Ignored"));
ignore_rest_of_line ();
}
else
@ -5376,7 +5387,7 @@ pa_spnum (unused)
md_number_to_chars (p, SPACE_SPNUM (space), 4);
}
else
as_warn ("Undefined space: '%s' Assuming space number = 0.", name);
as_warn (_("Undefined space: '%s' Assuming space number = 0."), name);
*input_line_pointer = c;
demand_empty_rest_of_line ();
@ -5418,11 +5429,11 @@ pa_subspace (create_new)
asection *section;
if (current_space == NULL)
as_fatal ("Must be in a space before changing or declaring subspaces.\n");
as_fatal (_("Must be in a space before changing or declaring subspaces.\n"));
if (within_procedure)
{
as_bad ("Can\'t change subspaces within a procedure definition. Ignored");
as_bad (_("Can\'t change subspaces within a procedure definition. Ignored"));
ignore_rest_of_line ();
}
else
@ -5458,7 +5469,7 @@ pa_subspace (create_new)
subseg_set (ssd->ssd_seg, ssd->ssd_subseg);
current_subspace = ssd;
if (!is_end_of_statement ())
as_warn ("Parameters of an existing subspace can\'t be modified");
as_warn (_("Parameters of an existing subspace can\'t be modified"));
demand_empty_rest_of_line ();
return;
}
@ -5511,7 +5522,7 @@ pa_subspace (create_new)
alignment = get_absolute_expression ();
if (log2 (alignment) == -1)
{
as_bad ("Alignment must be a power of 2");
as_bad (_("Alignment must be a power of 2"));
alignment = 1;
}
}
@ -5553,9 +5564,9 @@ pa_subspace (create_new)
zero = 1;
}
else if ((strncasecmp (name, "first", 5) == 0))
as_bad ("FIRST not supported as a .SUBSPACE argument");
as_bad (_("FIRST not supported as a .SUBSPACE argument"));
else
as_bad ("Invalid .SUBSPACE argument");
as_bad (_("Invalid .SUBSPACE argument"));
if (!is_end_of_statement ())
input_line_pointer++;
}
@ -5595,7 +5606,7 @@ pa_subspace (create_new)
section = subseg_new (alias, 0);
else if (!alias && USE_ALIASES)
{
as_warn ("Ignoring subspace decl due to ELF BFD bugs.");
as_warn (_("Ignoring subspace decl due to ELF BFD bugs."));
demand_empty_rest_of_line ();
return;
}
@ -5758,7 +5769,7 @@ pa_spaces_begin ()
def_space_index].segment);
if (space == NULL)
{
as_fatal ("Internal error: Unable to find containing space for %s.",
as_fatal (_("Internal error: Unable to find containing space for %s."),
pa_def_subspaces[i].name);
}
@ -5799,7 +5810,7 @@ create_new_space (name, spnum, loadable, defined, private,
chain_entry = (sd_chain_struct *) xmalloc (sizeof (sd_chain_struct));
if (!chain_entry)
as_fatal ("Out of memory: could not allocate new space chain entry: %s\n",
as_fatal (_("Out of memory: could not allocate new space chain entry: %s\n"),
name);
SPACE_NAME (chain_entry) = (char *) xmalloc (strlen (name) + 1);
@ -5885,7 +5896,7 @@ create_new_subspace (space, name, loadable, code_only, common,
chain_entry = (ssd_chain_struct *) xmalloc (sizeof (ssd_chain_struct));
if (!chain_entry)
as_fatal ("Out of memory: could not allocate new subspace chain entry: %s\n", name);
as_fatal (_("Out of memory: could not allocate new subspace chain entry: %s\n"), name);
SUBSPACE_NAME (chain_entry) = (char *) xmalloc (strlen (name) + 1);
strcpy (SUBSPACE_NAME (chain_entry), name);
@ -6113,6 +6124,7 @@ pa_subspace_start (space, quadrant)
sd_chain_struct *space;
int quadrant;
{
#ifdef OBJ_SOM
/* FIXME. Assumes everyone puts read/write data at 0x4000000, this
is not correct for the PA OSF1 port. */
if ((strcmp (SPACE_NAME (space), "$PRIVATE$") == 0) && quadrant == 1)
@ -6121,6 +6133,8 @@ pa_subspace_start (space, quadrant)
return 0x40000000;
else
return 0;
#endif
return 0;
}
/* FIXME. Needs documentation. */
@ -6414,6 +6428,10 @@ hppa_fix_adjustable (fixp)
if (fixp->fx_addsy && fixp->fx_addsy->bsym->flags & BSF_GLOBAL)
return 0;
/* Reject absolute calls (jumps). */
if (hppa_fix->fx_r_type == R_HPPA_ABS_CALL)
return 0;
/* Reject reductions of function symbols. */
if (fixp->fx_addsy == 0
|| (fixp->fx_addsy->bsym->flags & BSF_FUNCTION) == 0)
@ -6464,6 +6482,8 @@ hppa_force_relocation (fixp)
&& (distance > 262143 || distance < -262144))
return 1;
if (fixp->fx_r_type == R_HPPA_ABS_CALL)
return 1;
#undef arg_reloc_stub_needed
/* No need (yet) to force another relocations to be emitted. */
@ -6518,11 +6538,11 @@ hppa_elf_mark_end_of_function ()
if (symbolP)
last_call_info->end_symbol = symbolP;
else
as_bad ("Symbol '%s' could not be created.", name);
as_bad (_("Symbol '%s' could not be created."), name);
}
else
as_bad ("No memory for symbol name.");
as_bad (_("No memory for symbol name."));
}

View File

@ -171,8 +171,6 @@ static char digit_chars[256];
/* put here all non-digit non-letter charcters that may occur in an operand */
static char operand_special_chars[] = "%$-+(,)*._~/<>|&^!:[@]";
static char *ordinal_names[] = {"first", "second", "third"}; /* for printfs */
/* md_assemble() always leaves the strings it's passed unaltered. To
effect this we maintain a stack of saved characters that we've smashed
with '\0's (indicating end of strings for various sub-fields of the
@ -588,7 +586,7 @@ md_begin ()
if (hash_err)
{
hash_error:
as_fatal ("Internal Error: Can't hash %s: %s", prev_name,
as_fatal (_("Internal Error: Can't hash %s: %s"), prev_name,
hash_err);
}
prev_name = optab->name;
@ -838,7 +836,7 @@ pt (t)
if (t == Unknown)
{
fprintf (stdout, "Unknown");
fprintf (stdout, _("Unknown"));
}
else
{
@ -875,8 +873,11 @@ reloc (size, pcrel, other)
case 4: return BFD_RELOC_32;
}
as_bad ("Can not do %d byte %srelocation", size,
pcrel ? "pc-relative " : "");
if (pcrel)
as_bad (_("Can not do %d byte pc-relative relocation"), size);
else
as_bad (_("Can not do %d byte relocation"), size);
return BFD_RELOC_NONE;
}
@ -955,7 +956,7 @@ md_assemble (line)
{
if (!is_opcode_char (*l))
{
as_bad ("invalid character %s in opcode", output_invalid (*l));
as_bad (_("invalid character %s in opcode"), output_invalid (*l));
return;
}
else if (*l != PREFIX_SEPERATOR)
@ -971,14 +972,14 @@ md_assemble (line)
if (l == token_start)
{
as_bad ("expecting prefix; got nothing");
as_bad (_("expecting prefix; got nothing"));
return;
}
END_STRING_AND_SAVE (l);
prefix = (prefix_entry *) hash_find (prefix_hash, token_start);
if (!prefix)
{
as_bad ("no such opcode prefix `%s'", token_start);
as_bad (_("no such opcode prefix `%s'"), token_start);
RESTORE_END_STRING (l);
return;
}
@ -1004,7 +1005,7 @@ md_assemble (line)
END_STRING_AND_SAVE (l);
if (token_start == l)
{
as_bad ("expecting opcode; got nothing");
as_bad (_("expecting opcode; got nothing"));
RESTORE_END_STRING (l);
return;
}
@ -1028,7 +1029,7 @@ md_assemble (line)
}
if (!current_templates)
{
as_bad ("no such 386 instruction: `%s'", token_start);
as_bad (_("no such 386 instruction: `%s'"), token_start);
RESTORE_END_STRING (l);
return;
}
@ -1039,7 +1040,7 @@ md_assemble (line)
if (expecting_string_instruction &&
!(current_templates->start->opcode_modifier & IsString))
{
as_bad ("expecting string instruction after `%s'",
as_bad (_("expecting string instruction after `%s'"),
expecting_string_instruction);
return;
}
@ -1055,9 +1056,8 @@ md_assemble (line)
{
if (!is_space_char (*l))
{
as_bad ("invalid character %s before %s operand",
output_invalid (*l),
ordinal_names[i.operands]);
as_bad (_("invalid character %s before operand %d"),
output_invalid (*l), i.operands);
return;
}
l++;
@ -1070,8 +1070,8 @@ md_assemble (line)
{
if (paren_not_balanced)
{
as_bad ("unbalanced parenthesis in %s operand.",
ordinal_names[i.operands]);
as_bad (_("unbalanced parenthesis in operand %d."),
i.operands);
return;
}
else
@ -1079,9 +1079,8 @@ md_assemble (line)
}
else if (!is_operand_char (*l) && !is_space_char (*l))
{
as_bad ("invalid character %s in %s operand",
output_invalid (*l),
ordinal_names[i.operands]);
as_bad (_("invalid character %s in operand %d"),
output_invalid (*l), i.operands);
return;
}
if (*l == '(')
@ -1096,7 +1095,7 @@ md_assemble (line)
this_operand = i.operands++;
if (i.operands > MAX_OPERANDS)
{
as_bad ("spurious operands; (%d operands/instruction max)",
as_bad (_("spurious operands; (%d operands/instruction max)"),
MAX_OPERANDS);
return;
}
@ -1112,12 +1111,12 @@ md_assemble (line)
if (expecting_operand)
{
expecting_operand_after_comma:
as_bad ("expecting operand after ','; got nothing");
as_bad (_("expecting operand after ','; got nothing"));
return;
}
if (*l == ',')
{
as_bad ("expecting operand before ','; got nothing");
as_bad (_("expecting operand before ','; got nothing"));
return;
}
}
@ -1242,7 +1241,7 @@ md_assemble (line)
} /* for (t = ... */
if (t == current_templates->end)
{ /* we found no match */
as_bad ("suffix or operands invalid for `%s'",
as_bad (_("suffix or operands invalid for `%s'"),
current_templates->start->name);
return;
}
@ -1294,7 +1293,7 @@ md_assemble (line)
{
if (i.suffix)
{
as_bad ("extraneous opcode suffix given");
as_bad (_("extraneous opcode suffix given"));
return;
}
if (i.tm.opcode_modifier & Data16)
@ -1350,7 +1349,7 @@ md_assemble (line)
bad = 1;
}
if (bad)
as_bad ("register does not match opcode suffix");
as_bad (_("register does not match opcode suffix"));
}
/* Make still unresolved immediate matches conform to size of immediate
@ -1362,7 +1361,7 @@ md_assemble (line)
{
if (!i.suffix)
{
as_bad ("no opcode suffix given; can't determine immediate size");
as_bad (_("no opcode suffix given; can't determine immediate size"));
return;
}
overlap0 &= (i.suffix == BYTE_OPCODE_SUFFIX ? (Imm8 | Imm8S) :
@ -1374,7 +1373,7 @@ md_assemble (line)
{
if (!i.suffix)
{
as_bad ("no opcode suffix given; can't determine immediate size");
as_bad (_("no opcode suffix given; can't determine immediate size"));
return;
}
overlap1 &= (i.suffix == BYTE_OPCODE_SUFFIX ? (Imm8 | Imm8S) :
@ -1400,7 +1399,7 @@ md_assemble (line)
if (!i.suffix && (i.tm.opcode_modifier & W))
{
as_bad ("no opcode suffix given and no register operands; can't size instruction");
as_bad (_("no opcode suffix given and no register operands; can't size instruction"));
return;
}
@ -1772,7 +1771,7 @@ md_assemble (line)
int jmp_size = flag_16bit_code ? 2 : 4;
if (flag_16bit_code && !fits_in_signed_word (n))
{
as_bad ("16-bit jump out of range");
as_bad (_("16-bit jump out of range"));
return;
}
@ -1886,7 +1885,7 @@ md_assemble (line)
md_number_to_chars (p, (valueT) n, size);
if (size == 1 && !fits_in_signed_byte (n))
{
as_bad ("loop/jecx only takes byte displacement; %lu shortened to %d",
as_bad (_("loop/jecx only takes byte displacement; %lu shortened to %d"),
n, *p);
}
}
@ -1917,7 +1916,7 @@ md_assemble (line)
fix_new_exp (frag_now, p + 1 - frag_now->fr_literal, 4,
i.imms[1], 0, BFD_RELOC_32);
if (i.imms[0]->X_op != O_constant)
as_bad ("can't handle non absolute segment in long call/jmp");
as_bad (_("can't handle non absolute segment in long call/jmp"));
md_number_to_chars (p + 5, (valueT) i.imms[0]->X_add_number, 2);
}
else
@ -2161,7 +2160,7 @@ i386_operand (operand_string)
register reg_entry *r;
if (!(r = parse_register (op_string)))
{
as_bad ("bad register name `%s'", op_string);
as_bad (_("bad register name `%s'"), op_string);
return 0;
}
/* Check for segment override, rather than segment register by
@ -2194,7 +2193,7 @@ i386_operand (operand_string)
if (!is_digit_char (*op_string) && !is_identifier_char (*op_string)
&& *op_string != '(' && *op_string != ABSOLUTE_PREFIX)
{
as_bad ("bad memory operand `%s'", op_string);
as_bad (_("bad memory operand `%s'"), op_string);
return 0;
}
/* Handle case of %es:*foo. */
@ -2217,7 +2216,7 @@ i386_operand (operand_string)
if (i.imm_operands == MAX_IMMEDIATE_OPERANDS)
{
as_bad ("only 1 or 2 immediate operands are allowed");
as_bad (_("only 1 or 2 immediate operands are allowed"));
return 0;
}
@ -2234,7 +2233,7 @@ i386_operand (operand_string)
in certain cases. Oddly, the code in question turns out
to work correctly anyhow, so we make this just a warning
until those versions of gcc are obsolete. */
as_warn ("unrecognized characters `%s' in expression",
as_warn (_("unrecognized characters `%s' in expression"),
input_line_pointer);
}
input_line_pointer = save_input_line_pointer;
@ -2242,7 +2241,7 @@ i386_operand (operand_string)
if (exp->X_op == O_absent)
{
/* missing or bad expr becomes absolute 0 */
as_bad ("missing or invalid immediate expression `%s' taken as 0",
as_bad (_("missing or invalid immediate expression `%s' taken as 0"),
operand_string);
exp->X_op = O_constant;
exp->X_add_number = 0;
@ -2266,7 +2265,7 @@ i386_operand (operand_string)
)
{
seg_unimplemented:
as_bad ("Unimplemented segment type %d in parse_operand", exp_seg);
as_bad (_("Unimplemented segment type %d in parse_operand"), exp_seg);
return 0;
}
#endif
@ -2302,7 +2301,7 @@ i386_operand (operand_string)
&& (current_templates->start->opcode_modifier & IsString) == 0)
|| i.mem_operands == 2)
{
as_bad ("too many memory references for `%s'",
as_bad (_("too many memory references for `%s'"),
current_templates->start->name);
return 0;
}
@ -2379,14 +2378,14 @@ i386_operand (operand_string)
base_string++;
if (base_string == base_reg_name + 1)
{
as_bad ("can't find base register name after `(%c'",
as_bad (_("can't find base register name after `(%c'"),
REGISTER_PREFIX);
return 0;
}
END_STRING_AND_SAVE (base_string);
if (!(i.base_reg = parse_register (base_reg_name)))
{
as_bad ("bad base register name `%s'", base_reg_name);
as_bad (_("bad base register name `%s'"), base_reg_name);
RESTORE_END_STRING (base_string);
return 0;
}
@ -2398,7 +2397,7 @@ i386_operand (operand_string)
OR ')' ==> end. (scale factor = 1) */
if (*base_string != ',' && *base_string != ')')
{
as_bad ("expecting `,' or `)' after base register in `%s'",
as_bad (_("expecting `,' or `)' after base register in `%s'"),
operand_string);
return 0;
}
@ -2411,7 +2410,7 @@ i386_operand (operand_string)
END_STRING_AND_SAVE (base_string);
if (!(i.index_reg = parse_register (index_reg_name)))
{
as_bad ("bad index register name `%s'", index_reg_name);
as_bad (_("bad index register name `%s'"), index_reg_name);
RESTORE_END_STRING (base_string);
return 0;
}
@ -2426,14 +2425,14 @@ i386_operand (operand_string)
base_string++;
if (base_string == num_string)
{
as_bad ("can't find a scale factor after `,'");
as_bad (_("can't find a scale factor after `,'"));
return 0;
}
END_STRING_AND_SAVE (base_string);
/* We've got a scale factor. */
if (!sscanf (num_string, "%d", &num))
{
as_bad ("can't parse scale factor from `%s'", num_string);
as_bad (_("can't parse scale factor from `%s'"), num_string);
RESTORE_END_STRING (base_string);
return 0;
}
@ -2453,7 +2452,7 @@ i386_operand (operand_string)
i.log2_scale_factor = 3;
break;
default:
as_bad ("expecting scale factor of 1, 2, 4, 8; got %d", num);
as_bad (_("expecting scale factor of 1, 2, 4, 8; got %d"), num);
return 0;
}
}
@ -2461,7 +2460,7 @@ i386_operand (operand_string)
{
if (!i.index_reg && *base_string == ',')
{
as_bad ("expecting index register or scale factor after `,'; got '%c'",
as_bad (_("expecting index register or scale factor after `,'; got '%c'"),
*(base_string + 1));
return 0;
}
@ -2529,7 +2528,7 @@ i386_operand (operand_string)
*cp = '@';
}
else
as_bad ("Bad reloc specifier `%s' in expression", cp + 1);
as_bad (_("Bad reloc specifier `%s' in expression"), cp + 1);
input_line_pointer = tmpbuf;
}
@ -2555,13 +2554,14 @@ i386_operand (operand_string)
#endif
if (*input_line_pointer)
as_bad ("Ignoring junk `%s' after expression", input_line_pointer);
as_bad (_("Ignoring junk `%s' after expression"),
input_line_pointer);
RESTORE_END_STRING (displacement_string_end);
input_line_pointer = save_input_line_pointer;
if (exp->X_op == O_absent)
{
/* missing expr becomes absolute 0 */
as_bad ("missing or invalid displacement `%s' taken as 0",
as_bad (_("missing or invalid displacement `%s' taken as 0"),
operand_string);
i.types[this_operand] |= (Disp | Abs);
exp->X_op = O_constant;
@ -2594,7 +2594,7 @@ i386_operand (operand_string)
if (i.base_reg && i.index_reg &&
!(i.base_reg->reg_type & i.index_reg->reg_type & Reg))
{
as_bad ("register size mismatch in (base,index,scale) expression");
as_bad (_("register size mismatch in (base,index,scale) expression"));
return 0;
}
/*
@ -2610,18 +2610,19 @@ i386_operand (operand_string)
if ((i.base_reg && (i.base_reg->reg_type & Reg32) == 0) ||
(i.index_reg && (i.index_reg->reg_type & Reg32) == 0))
{
as_bad ("base/index register must be 32 bit register");
as_bad (_("base/index register must be 32 bit register"));
return 0;
}
if (i.index_reg && i.index_reg == esp)
{
as_bad ("`%%s' may not be used as an index register", esp->reg_name);
as_bad (_("`%%s' may not be used as an index register"),
esp->reg_name);
return 0;
}
}
else
{ /* it's not a memory operand; argh! */
as_bad ("invalid char %s begining %s operand `%s'",
as_bad (_("invalid char %s begining %s operand `%s'"),
output_invalid (*op_string), ordinal_names[this_operand],
op_string);
return 0;
@ -3007,7 +3008,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to md_atof ()";
return _("Bad call to md_atof ()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -3104,8 +3105,8 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf (stream, "\
-m do long jump\n");
fprintf (stream, _("\
-m do long jump\n"));
}
#ifdef BFD_ASSEMBLER
@ -3144,7 +3145,7 @@ md_undefined_symbol (name)
if(!GOT_symbol)
{
if(symbol_find(name))
as_bad("GOT already in symbol table");
as_bad(_("GOT already in symbol table"));
GOT_symbol = symbol_new (name, undefined_section,
(valueT) 0, &zero_address_frag);
};
@ -3245,8 +3246,11 @@ tc_gen_reloc (section, fixp)
MAP (2, 1, BFD_RELOC_16_PCREL);
MAP (4, 1, BFD_RELOC_32_PCREL);
default:
as_bad ("Can not do %d byte %srelocation", fixp->fx_size,
fixp->fx_pcrel ? "pc-relative " : "");
if (fixp->fx_pcrel)
as_bad (_("Can not do %d byte pc-relative relocation"),
fixp->fx_size);
else
as_bad (_("Can not do %d byte relocation"), fixp->fx_size);
}
}
#undef MAP
@ -3269,7 +3273,7 @@ tc_gen_reloc (section, fixp)
if (rel->howto == NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"Cannot represent relocation type %s",
_("Cannot represent relocation type %s"),
bfd_get_reloc_code_name (code));
/* Set howto to a garbage value so that we can keep going. */
rel->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);

View File

@ -1,6 +1,6 @@
/* to sanitize : grep -v XL */
/* tc-i960.c - All the i80960-specific stuff
Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 1997
Free Software Foundation, Inc.
This file is part of GAS.
@ -15,8 +15,9 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* See comment on md_parse_option for 80960-specific invocation options. */
@ -446,8 +447,8 @@ static struct hash_control *areg_hash; /* Abase register hash table */
#define ARCH_KB 2
#define ARCH_MC 3
#define ARCH_CA 4
#define ARCH_HX 5
#define ARCH_XL 6
#define ARCH_JX 5
#define ARCH_HX 6
int architecture = ARCH_ANY; /* Architecture requested on invocation line */
int iclasses_seen; /* OR of instruction classes (I_* constants)
* for which we've actually assembled
@ -540,7 +541,7 @@ md_begin ()
(char *) &aregs[i].areg_num);
if (retval)
as_fatal ("Hashing returned \"%s\".", retval);
as_fatal (_("Hashing returned \"%s\"."), retval);
}
/*****************************************************************************
@ -574,7 +575,7 @@ md_assemble (textP)
int n; /* Offset of last character in opcode mnemonic */
static const char bp_error_msg[] = "branch prediction invalid on this opcode";
static const char bp_error_msg[] = _("branch prediction invalid on this opcode");
/* Parse instruction into opcode and operands */
@ -617,12 +618,12 @@ md_assemble (textP)
oP = (struct i960_opcode *) hash_find (op_hash, args[0]);
if (!oP || !targ_has_iclass (oP->iclass))
{
as_bad ("invalid opcode, \"%s\".", args[0]);
as_bad (_("invalid opcode, \"%s\"."), args[0]);
}
else if (n_ops != oP->num_ops)
{
as_bad ("improper number of operands. expecting %d, got %d",
as_bad (_("improper number of operands. expecting %d, got %d"),
oP->num_ops, n_ops);
}
else
@ -767,7 +768,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to md_atof()";
return _("Bad call to md_atof()");
}
t = atof_ieee (input_line_pointer, type, words);
@ -857,7 +858,7 @@ md_number_to_field (instrP, val, bfixP)
if (((val < 0) && (sign != -1))
|| ((val > 0) && (sign != 0)))
{
as_bad ("Fixup of %ld too large for field width of %d",
as_bad (_("Fixup of %ld too large for field width of %d"),
val, numbits);
}
else
@ -939,8 +940,8 @@ static const struct tabentry arch_tab[] =
{"KC", ARCH_MC}, /* Synonym for MC */
{"MC", ARCH_MC},
{"CA", ARCH_CA},
{"JX", ARCH_JX},
{"HX", ARCH_HX},
{"XL", ARCH_XL},
{NULL, 0}
};
@ -975,7 +976,7 @@ md_parse_option (c, arg)
if (tp->flag == NULL)
{
as_bad ("invalid architecture %s", p);
as_bad (_("invalid architecture %s"), p);
return 0;
}
else
@ -995,16 +996,16 @@ md_show_usage (stream)
FILE *stream;
{
int i;
fprintf (stream, "I960 options:\n");
fprintf (stream, _("I960 options:\n"));
for (i = 0; arch_tab[i].flag; i++)
fprintf (stream, "%s-A%s", i ? " | " : "", arch_tab[i].flag);
fprintf (stream, "\n\
fprintf (stream, _("\n\
specify variant of 960 architecture\n\
-b add code to collect statistics about branches taken\n\
-link-relax preserve individual alignment directives so linker\n\
can do relaxing (b.out format only)\n\
-no-relax don't alter compare-and-branch instructions for\n\
long displacements\n");
long displacements\n"));
}
@ -1126,7 +1127,7 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
void
@ -1136,7 +1137,7 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
#endif
@ -1205,7 +1206,7 @@ brtab_emit ()
}
subseg_set (data_section, 0); /* .data */
frag_align (2, 0); /* .align 2 */
frag_align (2, 0, 0); /* .align 2 */
record_alignment (now_seg, 2);
colon (BR_TAB_NAME); /* BR_TAB_NAME: */
emit (0); /* .word 0 #link to next table */
@ -1222,7 +1223,6 @@ brtab_emit ()
0,
0,
NO_RELOC);
fixP->fx_im_disp = 2; /* 32-bit displacement fix */
}
}
@ -1423,7 +1423,7 @@ get_args (p, args)
/* Start of operand */
if (n == 3)
{
as_bad ("too many operands");
as_bad (_("too many operands"));
return -1;
}
*to++ = '\0'; /* Terminate argument */
@ -1483,7 +1483,7 @@ get_cdisp (dispP, ifmtP, instr, numbits, var_frag, callj)
switch (e.X_op)
{
case O_illegal:
as_bad ("expression syntax error");
as_bad (_("expression syntax error"));
case O_symbol:
if (S_GET_SEGMENT (e.X_add_symbol) == now_seg
@ -1521,11 +1521,11 @@ get_cdisp (dispP, ifmtP, instr, numbits, var_frag, callj)
}
}
else
as_bad ("attempt to branch into different segment");
as_bad (_("attempt to branch into different segment"));
break;
default:
as_bad ("target of %s instruction must be a label", ifmtP);
as_bad (_("target of %s instruction must be a label"), ifmtP);
break;
}
}
@ -1565,7 +1565,7 @@ get_ispec (textP)
if (end == NULL)
{
as_bad ("unmatched '['");
as_bad (_("unmatched '['"));
}
else
@ -1576,7 +1576,7 @@ get_ispec (textP)
*end = '\0';
if (*(end + 1) != '\0')
{
as_bad ("garbage after index spec ignored");
as_bad (_("garbage after index spec ignored"));
}
}
}
@ -1643,7 +1643,7 @@ i_scan (iP, args)
if (args[0] == iP)
{
/* We never moved: there was no opcode either! */
as_bad ("missing opcode");
as_bad (_("missing opcode"));
return -1;
}
return 0;
@ -1697,6 +1697,10 @@ mem_fmt (args, oP, callx)
}
}
/* Parse the displacement; this must be done before emitting the
opcode, in case it is an expression using `.'. */
parse_expr (instr.e, &expr);
/* Output opcode */
outP = emit (instr.opcode);
@ -1705,12 +1709,11 @@ mem_fmt (args, oP, callx)
return;
}
/* Parse and process the displacement */
parse_expr (instr.e, &expr);
/* Process the displacement */
switch (expr.X_op)
{
case O_illegal:
as_bad ("expression syntax error");
as_bad (_("expression syntax error"));
break;
case O_constant:
@ -1761,7 +1764,6 @@ mem_fmt (args, oP, callx)
&expr,
0,
NO_RELOC);
fixP->fx_im_disp = 2; /* 32-bit displacement fix */
/* Steve's linker relaxing hack. Mark this 32-bit relocation as
being in the instruction stream, specifically as part of a callx
instruction. */
@ -1949,7 +1951,7 @@ parse_ldconst (arg)
break;
case O_illegal:
as_bad ("invalid constant");
as_bad (_("invalid constant"));
return -1;
break;
}
@ -2062,7 +2064,7 @@ parse_memop (memP, argP, optype)
regnum = get_regnum (indexP); /* Get index reg. # */
if (!IS_RG_REG (regnum))
{
as_bad ("invalid index register");
as_bad (_("invalid index register"));
return;
}
@ -2085,7 +2087,7 @@ parse_memop (memP, argP, optype)
scale = 4 << 7;
break;
default:
as_bad ("invalid scale factor");
as_bad (_("invalid scale factor"));
return;
};
@ -2268,7 +2270,7 @@ parse_regop (regopP, optext, opdesc)
/* global or local register */
if (!REG_ALIGN (opdesc, n))
{
as_bad ("unaligned register");
as_bad (_("unaligned register"));
}
regopP->n = n;
regopP->mode = 0;
@ -2291,7 +2293,7 @@ parse_regop (regopP, optext, opdesc)
regopP->special = 1;
if (!targ_has_sfr (regopP->n))
{
as_bad ("no such sfr in this architecture");
as_bad (_("no such sfr in this architecture"));
}
return;
}
@ -2329,7 +2331,7 @@ parse_regop (regopP, optext, opdesc)
if (e.X_op != O_constant
|| (offs (e) < 0) || (offs (e) > 31))
{
as_bad ("illegal literal");
as_bad (_("illegal literal"));
offs (e) = 0;
}
regopP->n = offs (e);
@ -2562,7 +2564,7 @@ reloc_callj (fixP)
else if (TC_S_IS_CALLNAME (fixP->fx_addsy))
{
/* Should not happen: see block comment above */
as_fatal ("Trying to 'bal' to %s", S_GET_NAME (fixP->fx_addsy));
as_fatal (_("Trying to 'bal' to %s"), S_GET_NAME (fixP->fx_addsy));
}
else if (TC_S_IS_BALNAME (fixP->fx_addsy))
{
@ -2573,7 +2575,7 @@ reloc_callj (fixP)
}
else if (TC_S_IS_BADPROC (fixP->fx_addsy))
{
as_bad ("Looks like a proc, but can't tell what kind.\n");
as_bad (_("Looks like a proc, but can't tell what kind.\n"));
} /* switch on proc type */
/* else Symbol is neither a sysproc nor a leafproc */
@ -2605,7 +2607,7 @@ s_leafproc (n_ops, args)
if ((n_ops != 1) && (n_ops != 2))
{
as_bad ("should have 1 or 2 operands");
as_bad (_("should have 1 or 2 operands"));
return;
} /* Check number of arguments */
@ -2614,7 +2616,7 @@ s_leafproc (n_ops, args)
if (TC_S_IS_CALLNAME (callP))
{
as_warn ("Redefining leafproc %s", S_GET_NAME (callP));
as_warn (_("Redefining leafproc %s"), S_GET_NAME (callP));
} /* is leafproc */
/* If that was the only argument, use it as the 'bal' entry point.
@ -2633,7 +2635,7 @@ s_leafproc (n_ops, args)
balP = symbol_find_or_make (args[2]);
if (TC_S_IS_CALLNAME (balP))
{
as_warn ("Redefining leafproc %s", S_GET_NAME (balP));
as_warn (_("Redefining leafproc %s"), S_GET_NAME (balP));
}
TC_S_FORCE_TO_BALNAME (balP);
@ -2663,7 +2665,7 @@ s_sysproc (n_ops, args)
if (n_ops != 2)
{
as_bad ("should have two operands");
as_bad (_("should have two operands"));
return;
} /* bad arg count */
@ -2673,7 +2675,7 @@ s_sysproc (n_ops, args)
|| (offs (exp) < 0)
|| (offs (exp) > 31))
{
as_bad ("'entry_num' must be absolute number in [0,31]");
as_bad (_("'entry_num' must be absolute number in [0,31]"));
return;
}
@ -2682,7 +2684,7 @@ s_sysproc (n_ops, args)
if (TC_S_IS_SYSPROC (symP))
{
as_warn ("Redefining entrynum for sysproc %s", S_GET_NAME (symP));
as_warn (_("Redefining entrynum for sysproc %s"), S_GET_NAME (symP));
} /* redefining */
TC_S_SET_SYSPROC (symP, offs (exp)); /* encode entry number */
@ -2732,7 +2734,7 @@ shift_ok (n)
static void
syntax ()
{
as_bad ("syntax error");
as_bad (_("syntax error"));
} /* syntax() */
@ -2751,7 +2753,7 @@ targ_has_sfr (n)
case ARCH_KA:
case ARCH_KB:
case ARCH_MC:
case ARCH_XL:
case ARCH_JX:
return 0;
case ARCH_HX:
return ((0 <= n) && (n <= 4));
@ -2785,15 +2787,15 @@ targ_has_iclass (ic)
return ic & (I_BASE | I_KX | I_FP | I_DEC | I_MIL);
case ARCH_CA:
return ic & (I_BASE | I_CX | I_CX2 | I_CASIM);
case ARCH_JX:
return ic & (I_BASE | I_CX2 | I_JX);
case ARCH_HX:
return ic & (I_BASE | I_CX2 | I_HX | I_HX2);
case ARCH_XL:
return ic & (I_BASE | I_CX2 | I_HX2); /* XL */
return ic & (I_BASE | I_CX2 | I_JX | I_HX);
default:
if ((iclasses_seen & (I_KX | I_FP | I_DEC | I_MIL))
&& (iclasses_seen & (I_CX | I_CX2)))
{
as_warn ("architecture of opcode conflicts with that of earlier instruction(s)");
as_warn (_("architecture of opcode conflicts with that of earlier instruction(s)"));
iclasses_seen &= ~ic;
}
return 1;
@ -2814,9 +2816,9 @@ s_endian (ignore)
if (strcasecmp (name, "little") == 0)
;
else if (strcasecmp (name, "big") == 0)
as_bad ("big endian mode is not supported");
as_bad (_("big endian mode is not supported"));
else
as_warn ("ignoring unrecognized .endian type `%s'", name);
as_warn (_("ignoring unrecognized .endian type `%s'"), name);
*input_line_pointer = c;
@ -2851,31 +2853,15 @@ md_apply_fix (fixP, val)
char *place = fixP->fx_where + fixP->fx_frag->fr_literal;
if (!fixP->fx_bit_fixP)
switch (fixP->fx_im_disp)
{
case 0:
/* For callx, we always want to write out zero, and emit a
symbolic relocation. */
if (fixP->fx_bsr)
val = 0;
{
/* For callx, we always want to write out zero, and emit a
symbolic relocation. */
if (fixP->fx_bsr)
val = 0;
fixP->fx_addnumber = val;
md_number_to_imm (place, val, fixP->fx_size, fixP);
break;
case 1:
md_number_to_disp (place,
(fixP->fx_pcrel
? val + fixP->fx_pcrel_adjust
: val),
fixP->fx_size);
break;
case 2: /* fix requested for .long .word etc */
md_number_to_chars (place, val, fixP->fx_size);
break;
default:
as_fatal ("Internal error in md_apply_fix() in file \"%s\"",
__FILE__);
}
fixP->fx_addnumber = val;
md_number_to_imm (place, val, fixP->fx_size, fixP);
}
else
md_number_to_field (place, val, fixP->fx_bit_fixP);
}
@ -3005,21 +2991,23 @@ tc_headers_hook (headers)
coff_flags |= F_I960CA;
break;
case ARCH_JX:
coff_flags |= F_I960JX;
break;
case ARCH_HX:
coff_flags |= F_I960HX;
break;
case ARCH_XL:
coff_flags |= F_I960XL;
break; /* XL */
default:
if (iclasses_seen == I_BASE)
coff_flags |= F_I960CORE;
else if (iclasses_seen & I_CX)
coff_flags |= F_I960CA;
else if (iclasses_seen & (I_HX | I_HX2))
else if (iclasses_seen & I_HX)
coff_flags |= F_I960HX;
else if (iclasses_seen & I_JX)
coff_flags |= F_I960JX;
else if (iclasses_seen & I_CX2)
coff_flags |= F_I960CA;
else if (iclasses_seen & I_MIL)
@ -3087,7 +3075,7 @@ tc_crawl_symbol_chain (headers)
if (!S_IS_DEFINED (symbolP))
{
as_bad ("leafproc symbol '%s' undefined", S_GET_NAME (symbolP));
as_bad (_("leafproc symbol '%s' undefined"), S_GET_NAME (symbolP));
} /* undefined leaf */
if (TC_S_IS_CALLNAME (symbolP))
@ -3097,7 +3085,7 @@ tc_crawl_symbol_chain (headers)
{
S_SET_EXTERNAL (symbolP);
S_SET_EXTERNAL (balP);
as_warn ("Warning: making leafproc entries %s and %s both global\n",
as_warn (_("Warning: making leafproc entries %s and %s both global\n"),
S_GET_NAME (symbolP), S_GET_NAME (balP));
} /* externality mismatch */
} /* if callname */
@ -3127,7 +3115,7 @@ tc_set_bal_of_call (callP, balP)
#ifdef OBJ_COFF
callP->sy_symbol.ost_auxent[1].x_bal.x_balntry = (int) balP;
callP->sy_tc = balP;
S_SET_NUMBER_AUXILIARY (callP, 2);
#else /* ! OBJ_COFF */
@ -3148,8 +3136,8 @@ tc_set_bal_of_call (callP, balP)
#endif /* ! OBJ_COFF */
}
char *
_tc_get_bal_of_call (callP)
symbolS *
tc_get_bal_of_call (callP)
symbolS *callP;
{
symbolS *retval;
@ -3157,7 +3145,7 @@ _tc_get_bal_of_call (callP)
know (TC_S_IS_CALLNAME (callP));
#ifdef OBJ_COFF
retval = (symbolS *) (callP->sy_symbol.ost_auxent[1].x_bal.x_balntry);
retval = callP->sy_tc;
#else
#ifdef OBJ_ABOUT
retval = symbol_next (callP);
@ -3167,7 +3155,7 @@ _tc_get_bal_of_call (callP)
#endif /* ! OBJ_COFF */
know (TC_S_IS_BALNAME (retval));
return ((char *) retval);
return retval;
} /* _tc_get_bal_of_call() */
void
@ -3184,7 +3172,10 @@ tc_coff_symbol_emit_hook (symbolP)
S_SET_NUMBER_AUXILIARY (symbolP, 2);
#endif
symbolP->sy_symbol.ost_auxent[1].x_bal.x_balntry = S_GET_VALUE (balP);
S_SET_STORAGE_CLASS (symbolP, (!SF_GET_LOCAL (symbolP) ? C_LEAFEXT : C_LEAFSTAT));
if (S_GET_STORAGE_CLASS (symbolP) == C_EXT)
S_SET_STORAGE_CLASS (symbolP, C_LEAFEXT);
else
S_SET_STORAGE_CLASS (symbolP, C_LEAFSTAT);
S_SET_DATA_TYPE (symbolP, S_GET_DATA_TYPE (symbolP) | (DT_FCN << N_BTSHFT));
/* fix up the bal symbol */
S_SET_STORAGE_CLASS (balP, C_LABEL);
@ -3201,7 +3192,7 @@ i960_handle_align (fragp)
#ifndef OBJ_BOUT
as_bad ("option --link-relax is only supported in b.out format");
as_bad (_("option --link-relax is only supported in b.out format"));
linkrelax = 0;
return;
@ -3233,7 +3224,7 @@ i960_validate_fix (fixP, this_segment_type, add_symbolPP)
if (!TC_S_IS_BALNAME (tc_get_bal_of_call (add_symbolP)))
{
as_bad ("No 'bal' entry point for leafproc %s",
as_bad (_("No 'bal' entry point for leafproc %s"),
S_GET_NAME (add_symbolP));
return 1;
}
@ -3244,7 +3235,7 @@ i960_validate_fix (fixP, this_segment_type, add_symbolPP)
{
if (fixP->fx_tcbit)
{
as_bad ("callj to difference of two symbols");
as_bad (_("callj to difference of two symbols"));
return 1;
}
reloc_callj (fixP);
@ -3253,7 +3244,7 @@ i960_validate_fix (fixP, this_segment_type, add_symbolPP)
/* This is a COBR instruction. They have only a 13-bit
displacement and are only to be used for local branches:
flag as error, don't generate relocation. */
as_bad ("can't use COBR format with external label");
as_bad (_("can't use COBR format with external label"));
fixP->fx_addsy = NULL; /* No relocations please. */
return 1;
}

View File

@ -68,6 +68,11 @@ static int enable_m32rx = 0;
/* Non-zero if the programmer should be warned when an explicit parallel
instruction might have constraint violations. */
static int warn_explicit_parallel_conflicts = 1;
/* start-sanitize-phase2-m32rx */
/* Non-zero if insns can be made parallel. */
static int optimize;
/* end-sanitize-phase2-m32rx */
/* end-sanitize-m32rx */
/* stuff for .scomm symbols. */
@ -118,7 +123,12 @@ allow_m32rx (on)
}
/* end-sanitize-m32rx */
const char * md_shortopts = "";
#define M32R_SHORTOPTS ""
/* start-sanitize-phase2-m32rx */
#undef M32R_SHORTOPTS
#define M32R_SHORTOPTS "O"
/* end-sanitize-phase2-m32rx */
const char * md_shortopts = M32R_SHORTOPTS;
struct option md_longopts[] =
{
@ -152,6 +162,12 @@ md_parse_option (c, arg)
switch (c)
{
/* start-sanitize-m32rx */
/* start-sanitize-phase2-m32rx */
case 'O':
optimize = 1;
break;
/* end-sanitize-phase2-m32rx */
case OPTION_M32RX:
allow_m32rx (1);
break;
@ -183,26 +199,31 @@ void
md_show_usage (stream)
FILE * stream;
{
fprintf (stream, "M32R/X options:\n");
/* start-sanitize-m32rx */
fprintf (stream, "\
--m32rx support the extended m32rx instruction set\n");
fprintf (stream, "\
--warn-explicit-parallel-conflicts Warn when parallel instrucitons violate contraints\n");
fprintf (stream, "\
--no-warn-explicit-parallel-conflicts Do not warn when parallel instrucitons violate contraints\n");
fprintf (stream, "\
--Wp Synonym for --warn-explicit-parallel-conflicts\n");
fprintf (stream, "\
--Wnp Synonym for --no-warn-explicit-parallel-conflicts\n");
fprintf (stream, _("M32R/X options:\n"));
fprintf (stream, _("\
--m32rx support the extended m32rx instruction set\n"));
/* start-sanitize-phase2-m32rx */
fprintf (stream, _("\
-O try to combine instructions in parallel\n"));
/* end-sanitize-phase2-m32rx */
fprintf (stream, _("\
--warn-explicit-parallel-conflicts warn when parallel instrucitons violate contraints\n"));
fprintf (stream, _("\
--no-warn-explicit-parallel-conflicts do not warn when parallel instrucitons violate contraints\n"));
fprintf (stream, _("\
--Wp synonym for --warn-explicit-parallel-conflicts\n"));
fprintf (stream, _("\
--Wnp synonym for --no-warn-explicit-parallel-conflicts\n"));
/* end-sanitize-m32rx */
#if 0
fprintf (stream, "\
--relax create linker relaxable code\n");
fprintf (stream, "\
--cpu-desc provide runtime cpu description file\n");
fprintf (stream, _("\
--relax create linker relaxable code\n"));
fprintf (stream, _("\
--cpu-desc provide runtime cpu description file\n"));
#endif
}
@ -312,14 +333,11 @@ int
m32r_fill_insn (done)
int done;
{
segT seg;
subsegT subseg;
if (prev_seg != NULL)
{
seg = now_seg;
subseg = now_subseg;
segT seg = now_seg;
subsegT subseg = now_subseg;
subseg_set (prev_seg, prev_subseg);
fill_insn (0);
@ -403,6 +421,7 @@ md_begin ()
/* Returns true if an output of instruction 'a' is referenced by an operand
of instruction 'b'. If 'check_outputs' is true then b's outputs are
checked, otherwise its inputs are examined. */
static int
first_writes_to_seconds_operands (a, b, check_outputs)
m32r_insn * a;
@ -471,6 +490,7 @@ first_writes_to_seconds_operands (a, b, check_outputs)
}
/* Returns true if the insn can (potentially) alter the program counter. */
static int
writes_to_pc (a)
m32r_insn * a;
@ -499,6 +519,7 @@ writes_to_pc (a)
/* Returns NULL if the two 16 bit insns can be executed in parallel,
otherwise it returns a pointer to an error message explaining why not. */
static const char *
can_make_parallel (a, b)
m32r_insn * a;
@ -595,14 +616,14 @@ assemble_parallel_insn (str, str2)
/* Check to see if this is an allowable parallel insn. */
if (CGEN_INSN_ATTR (first.insn, CGEN_INSN_PIPE) == PIPE_NONE)
{
as_bad ("instruction '%s' cannot be executed in parallel.", str);
as_bad (_("instruction '%s' cannot be executed in parallel."), str);
return;
}
if (! enable_m32rx
&& CGEN_INSN_ATTR (first.insn, CGEN_INSN_MACH) == (1 << MACH_M32RX))
{
as_bad ("instruction '%s' is for the M32RX only", str);
as_bad (_("instruction '%s' is for the M32RX only"), str);
return;
}
@ -658,7 +679,7 @@ assemble_parallel_insn (str, str2)
first.insn = m32r_cgen_get_insn_operands (first.insn, bfd_getb16 ((char *) first.buffer), 16,
first.indices);
if (first.insn == NULL)
as_fatal ("internal error: m32r_cgen_get_insn_operands failed for first insn");
as_fatal (_("internal error: m32r_cgen_get_insn_operands failed for first insn"));
/* Parse the second instruction. */
if (! (second.insn = CGEN_SYM (assemble_insn)
@ -672,7 +693,7 @@ assemble_parallel_insn (str, str2)
if (! enable_m32rx
&& CGEN_INSN_ATTR (second.insn, CGEN_INSN_MACH) == (1 << MACH_M32RX))
{
as_bad ("instruction '%s' is for the M32RX only", str);
as_bad (_("instruction '%s' is for the M32RX only"), str);
return;
}
@ -681,7 +702,7 @@ assemble_parallel_insn (str, str2)
if ( strcmp (first.insn->name, "nop") != 0
&& strcmp (second.insn->name, "nop") != 0)
{
as_bad ("'%s': only the NOP instruction can be issued in parallel on the m32r", str2);
as_bad (_("'%s': only the NOP instruction can be issued in parallel on the m32r"), str2);
return;
}
}
@ -716,7 +737,7 @@ assemble_parallel_insn (str, str2)
second.insn = m32r_cgen_get_insn_operands (second.insn, bfd_getb16 ((char *) second.buffer), 16,
second.indices);
if (second.insn == NULL)
as_fatal ("internal error: m32r_cgen_get_insn_operands failed for second insn");
as_fatal (_("internal error: m32r_cgen_get_insn_operands failed for second insn"));
/* We assume that if the first instruction writes to a register that is
read by the second instruction it is because the programmer intended
@ -729,10 +750,10 @@ assemble_parallel_insn (str, str2)
if (warn_explicit_parallel_conflicts)
{
if (first_writes_to_seconds_operands (& first, & second, false))
as_warn ("%s: output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?", str2);
as_warn (_("%s: output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?"), str2);
if (first_writes_to_seconds_operands (& second, & first, false))
as_warn ("%s: output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?", str2);
as_warn (_("%s: output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?"), str2);
}
if ((errmsg = (char *) can_make_parallel (& first, & second)) == NULL)
@ -817,7 +838,7 @@ md_assemble (str)
/* start-sanitize-m32rx */
if (! enable_m32rx && CGEN_INSN_ATTR (insn.insn, CGEN_INSN_MACH) == (1 << MACH_M32RX))
{
as_bad ("instruction '%s' is for the M32RX only", str);
as_bad (_("instruction '%s' is for the M32RX only"), str);
return;
}
/* end-sanitize-m32rx */
@ -852,7 +873,7 @@ md_assemble (str)
16,
insn.indices);
if (insn.insn == NULL)
as_fatal ("internal error: m32r_cgen_get_insn_operands failed");
as_fatal (_("internal error: m32r_cgen_get_insn_operands failed"));
/* Keep track of whether we've seen a pair of 16 bit insns.
prev_insn.insn is NULL when we're on a 32 bit boundary. */
@ -870,8 +891,9 @@ md_assemble (str)
input to the current instruction then it cannot be combined.
Otherwise call can_make_parallel() with both orderings of the
instructions to see if they can be combined. */
if ( enable_m32rx
&& CGEN_INSN_ATTR (insn.insn, CGEN_INSN_RELAXABLE) == 0
if ( enable_m32rx
&& optimize
&& CGEN_INSN_ATTR (insn.insn, CGEN_INSN_RELAXABLE) == 0
&& ! writes_to_pc (& prev_insn)
&& ! first_writes_to_seconds_operands (& prev_insn, &insn, false)
)
@ -999,7 +1021,7 @@ m32r_scomm (ignore)
SKIP_WHITESPACE ();
if (* input_line_pointer != ',')
{
as_bad ("Expected comma after symbol-name: rest of line ignored.");
as_bad (_("Expected comma after symbol-name: rest of line ignored."));
ignore_rest_of_line ();
return;
}
@ -1007,7 +1029,7 @@ m32r_scomm (ignore)
input_line_pointer ++; /* skip ',' */
if ((size = get_absolute_expression ()) < 0)
{
as_warn (".SCOMMon length (%ld.) <0! Ignored.", (long) size);
as_warn (_(".SCOMMon length (%ld.) <0! Ignored."), (long) size);
ignore_rest_of_line ();
return;
}
@ -1021,7 +1043,7 @@ m32r_scomm (ignore)
align = get_absolute_expression ();
if (align <= 0)
{
as_warn ("ignoring bad alignment");
as_warn (_("ignoring bad alignment"));
align = 8;
}
}
@ -1032,7 +1054,7 @@ m32r_scomm (ignore)
continue;
if (align != 1)
{
as_bad ("Common alignment not a power of 2");
as_bad (_("Common alignment not a power of 2"));
ignore_rest_of_line ();
return;
}
@ -1046,7 +1068,7 @@ m32r_scomm (ignore)
if (S_IS_DEFINED (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol `%s'.",
as_bad (_("Ignoring attempt to re-define symbol `%s'."),
S_GET_NAME (symbolP));
ignore_rest_of_line ();
return;
@ -1054,7 +1076,7 @@ m32r_scomm (ignore)
if (S_GET_VALUE (symbolP) && S_GET_VALUE (symbolP) != (valueT) size)
{
as_bad ("Length of .scomm \"%s\" is already %ld. Not changed to %ld.",
as_bad (_("Length of .scomm \"%s\" is already %ld. Not changed to %ld."),
S_GET_NAME (symbolP),
(long) S_GET_VALUE (symbolP),
(long) size);
@ -1299,7 +1321,7 @@ md_convert_frag (abfd, sec, fragP)
{
/* symbol must be resolved by linker */
if (fragP->fr_offset & 3)
as_warn ("Addend to unresolved symbol not on word boundary.");
as_warn (_("Addend to unresolved symbol not on word boundary."));
addend = fragP->fr_offset >> 2;
}
else
@ -1521,7 +1543,7 @@ m32r_frob_file ()
if (pass == 1)
as_warn_where (l->fixp->fx_file, l->fixp->fx_line,
"Unmatched high/shigh reloc");
_("Unmatched high/shigh reloc"));
}
}
}
@ -1596,7 +1618,7 @@ md_atof (type, litP, sizeP)
default:
* sizeP = 0;
return "Bad call to md_atof()";
return _("Bad call to md_atof()");
}
t = atof_ieee (input_line_pointer, type, words);
@ -1625,3 +1647,14 @@ md_atof (type, litP, sizeP)
return 0;
}
void
m32r_elf_section_change_hook ()
{
/* If we have reached the end of a section and we have just emitted a
16 bit insn, then emit a nop to make sure that the section ends on
a 32 bit boundary. */
if (prev_insn.insn || seen_relaxable_p)
(void) m32r_fill_insn (0);
}

View File

@ -1,5 +1,5 @@
/* tc-m68k.c -- Assemble for the m68k family
Copyright (C) 1987, 91, 92, 93, 94, 95, 96, 1997
Copyright (C) 1987, 91, 92, 93, 94, 95, 96, 97, 1998
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -267,7 +267,7 @@ static struct m68k_it the_ins; /* the instruction being assembled */
/* Static functions. */
static void insop PARAMS ((int, struct m68k_incant *));
static void insop PARAMS ((int, const struct m68k_incant *));
static void add_fix PARAMS ((int, struct m68k_exp *, int, int));
static void add_frag PARAMS ((symbolS *, offsetT, int));
@ -275,7 +275,7 @@ static void add_frag PARAMS ((symbolS *, offsetT, int));
static void
insop (w, opcode)
int w;
struct m68k_incant *opcode;
const struct m68k_incant *opcode;
{
int z;
for(z=the_ins.numo;z>opcode->m_codenum;--z)
@ -633,7 +633,7 @@ make_pcrel_absolute(fixP, add_number)
opcode[1] = 0xb9;
}
else
as_fatal ("Unknown PC relative instruction");
as_fatal (_("Unknown PC relative instruction"));
*add_number -= 4;
return 0;
}
@ -756,9 +756,21 @@ get_reloc_code (size, pcrel, pic)
}
}
as_bad ("Can not do %d byte %s%srelocation", size,
pcrel ? "pc-relative " : "",
pic == pic_none ? "" : "pic ");
if (pcrel)
{
if (pic == pic_none)
as_bad (_("Can not do %d byte pc-relative relocation"), size);
else
as_bad (_("Can not do %d byte pc-relative pic relocation"), size);
}
else
{
if (pic == pic_none)
as_bad (_("Can not do %d byte relocation"), size);
else
as_bad (_("Can not do %d byte pic relocation"), size);
}
return BFD_RELOC_NONE;
}
@ -855,7 +867,7 @@ tc_gen_reloc (section, fixp)
break;
default:
as_bad_where (fixp->fx_file, fixp->fx_line,
"Cannot make %s relocation PC relative",
_("Cannot make %s relocation PC relative"),
bfd_get_reloc_code_name (code));
}
}
@ -918,7 +930,7 @@ m68k_ip (instring)
{
register char *p;
register struct m68k_op *opP;
register struct m68k_incant *opcode;
register const struct m68k_incant *opcode;
register const char *s;
register int tmpreg = 0, baseo = 0, outro = 0, nextword;
char *pdot, *pdotmove;
@ -946,7 +958,7 @@ m68k_ip (instring)
if (p == instring)
{
the_ins.error = "No operator";
the_ins.error = _("No operator");
return;
}
@ -963,7 +975,7 @@ m68k_ip (instring)
c = *p;
*p = '\0';
opcode = (struct m68k_incant *) hash_find (op_hash, instring);
opcode = (const struct m68k_incant *) hash_find (op_hash, instring);
*p = c;
if (pdot != NULL)
@ -976,7 +988,7 @@ m68k_ip (instring)
if (opcode == NULL)
{
the_ins.error = "Unknown operator";
the_ins.error = _("Unknown operator");
return;
}
@ -1517,14 +1529,6 @@ m68k_ip (instring)
opP->mode = REGLST;
}
}
else if (opP->mode == ABSL
&& opP->disp.size == SIZE_UNSPEC
&& opP->disp.exp.X_op == O_constant)
{
/* This is what the MRI REG pseudo-op generates. */
opP->mode = REGLST;
opP->mask = opP->disp.exp.X_add_number;
}
else if (opP->mode != REGLST)
losing++;
else if (s[1] == '8' && (opP->mask & 0x0ffffff) != 0)
@ -1731,24 +1735,24 @@ m68k_ip (instring)
char buf[200], *cp;
strcpy (buf,
"invalid instruction for this architecture; needs ");
_("invalid instruction for this architecture; needs "));
cp = buf + strlen (buf);
switch (ok_arch)
{
case mfloat:
strcpy (cp, "fpu (68040, 68060 or 68881/68882)");
strcpy (cp, _("fpu (68040, 68060 or 68881/68882)"));
break;
case mmmu:
strcpy (cp, "mmu (68030 or 68851)");
strcpy (cp, _("mmu (68030 or 68851)"));
break;
case m68020up:
strcpy (cp, "68020 or higher");
strcpy (cp, _("68020 or higher"));
break;
case m68000up:
strcpy (cp, "68000 or higher");
strcpy (cp, _("68000 or higher"));
break;
case m68010up:
strcpy (cp, "68010 or higher");
strcpy (cp, _("68010 or higher"));
break;
default:
{
@ -1776,7 +1780,7 @@ m68k_ip (instring)
the_ins.error = cp;
}
else
the_ins.error = "operands mismatch";
the_ins.error = _("operands mismatch");
return;
} /* Fell off the end */
@ -1833,19 +1837,19 @@ m68k_ip (instring)
{
case 'b':
if (!isbyte (nextword))
opP->error = "operand out of range";
opP->error = _("operand out of range");
addword (nextword);
baseo = 0;
break;
case 'w':
if (!isword (nextword))
opP->error = "operand out of range";
opP->error = _("operand out of range");
addword (nextword);
baseo = 0;
break;
case 'W':
if (!issword (nextword))
opP->error = "operand out of range";
opP->error = _("operand out of range");
addword (nextword);
baseo = 0;
break;
@ -1902,7 +1906,7 @@ m68k_ip (instring)
{
if (offs (&opP->disp) > baseo)
{
as_warn ("Bignum too big for %c format; truncated",
as_warn (_("Bignum too big for %c format; truncated"),
s[1]);
offs (&opP->disp) = baseo;
}
@ -1963,12 +1967,14 @@ m68k_ip (instring)
|| (isvar (&opP->disp)
&& ((opP->disp.size == SIZE_UNSPEC
&& flag_short_refs == 0
&& cpu_of_arch (current_architecture) >= m68020)
&& cpu_of_arch (current_architecture) >= m68020
&& cpu_of_arch (current_architecture) != mcf5200)
|| opP->disp.size == SIZE_LONG)))
{
if (cpu_of_arch (current_architecture) < m68020)
if (cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
opP->error =
"displacement too large for this architecture; needs 68020 or higher";
_("displacement too large for this architecture; needs 68020 or higher");
if (opP->reg == PC)
tmpreg = 0x3B; /* 7.3 */
else
@ -2078,7 +2084,7 @@ m68k_ip (instring)
&& current_architecture == mcf5200))
{
opP->error =
"scale factor invalid on this architecture; needs cpu32 or 68020 or higher";
_("scale factor invalid on this architecture; needs cpu32 or 68020 or higher");
}
switch (opP->index.scale)
@ -2112,6 +2118,7 @@ m68k_ip (instring)
{
if (siz1 == SIZE_BYTE
|| cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200
|| (siz1 == SIZE_UNSPEC
&& ! isvar (&opP->disp)
&& issbyte (baseo)))
@ -2131,9 +2138,9 @@ m68k_ip (instring)
else if (siz1 != SIZE_BYTE)
{
if (siz1 != SIZE_UNSPEC)
as_warn ("Forcing byte displacement");
as_warn (_("Forcing byte displacement"));
if (! issbyte (baseo))
opP->error = "byte displacement out of range";
opP->error = _("byte displacement out of range");
}
break;
@ -2177,9 +2184,10 @@ m68k_ip (instring)
/* It isn't simple. */
if (cpu_of_arch (current_architecture) < m68020)
if (cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
opP->error =
"invalid operand mode for this architecture; needs 68020 or higher";
_("invalid operand mode for this architecture; needs 68020 or higher");
nextword |= 0x100;
/* If the guy specified a width, we assume that it is
@ -2203,7 +2211,7 @@ m68k_ip (instring)
}
break;
case SIZE_BYTE:
as_warn (":b not permitted; defaulting to :w");
as_warn (_(":b not permitted; defaulting to :w"));
/* Fall through. */
case SIZE_WORD:
nextword |= 0x20;
@ -2217,7 +2225,7 @@ m68k_ip (instring)
if (opP->mode == POST || opP->mode == PRE)
{
if (cpu_of_arch (current_architecture) & cpu32)
opP->error = "invalid operand mode for this architecture; needs 68020 or higher";
opP->error = _("invalid operand mode for this architecture; needs 68020 or higher");
switch (siz2)
{
case SIZE_UNSPEC:
@ -2237,7 +2245,7 @@ m68k_ip (instring)
}
break;
case 1:
as_warn (":b not permitted; defaulting to :w");
as_warn (_(":b not permitted; defaulting to :w"));
/* Fall through. */
case 2:
nextword |= 0x2;
@ -2318,7 +2326,7 @@ m68k_ip (instring)
break;
case SIZE_BYTE:
as_bad ("unsupported byte value; use a different suffix");
as_bad (_("unsupported byte value; use a different suffix"));
/* Fall through. */
case SIZE_WORD: /* Word */
if (isvar (&opP->disp))
@ -2332,7 +2340,7 @@ m68k_ip (instring)
case CONTROL:
case FPREG:
default:
as_bad ("unknown/incorrect operand");
as_bad (_("unknown/incorrect operand"));
/* abort(); */
}
install_gen_operand (s[1], tmpreg);
@ -2365,7 +2373,7 @@ m68k_ip (instring)
certain types of overflow.
user beware! */
if (!isbyte (tmpreg))
opP->error = "out of range";
opP->error = _("out of range");
insop (tmpreg, opcode);
if (isvar (&opP->disp))
the_ins.reloc[the_ins.nrel - 1].n =
@ -2373,21 +2381,21 @@ m68k_ip (instring)
break;
case 'B':
if (!issbyte (tmpreg))
opP->error = "out of range";
opcode->m_opcode |= tmpreg;
opP->error = _("out of range");
the_ins.opcode[the_ins.numo - 1] |= tmpreg & 0xff;
if (isvar (&opP->disp))
the_ins.reloc[the_ins.nrel - 1].n = opcode->m_codenum * 2 - 1;
break;
case 'w':
if (!isword (tmpreg))
opP->error = "out of range";
opP->error = _("out of range");
insop (tmpreg, opcode);
if (isvar (&opP->disp))
the_ins.reloc[the_ins.nrel - 1].n = (opcode->m_codenum) * 2;
break;
case 'W':
if (!issword (tmpreg))
opP->error = "out of range";
opP->error = _("out of range");
insop (tmpreg, opcode);
if (isvar (&opP->disp))
the_ins.reloc[the_ins.nrel - 1].n = (opcode->m_codenum) * 2;
@ -2437,7 +2445,7 @@ m68k_ip (instring)
case 'L':
long_branch:
if (!HAVE_LONG_BRANCH(current_architecture))
as_warn ("Can't use long branches on 68000/68010/5200");
as_warn (_("Can't use long branches on 68000/68010/5200"));
the_ins.opcode[the_ins.numo - 1] |= 0xff;
add_fix ('l', &opP->disp, 1, 0);
addword (0);
@ -2525,7 +2533,7 @@ m68k_ip (instring)
tmpreg = get_num (&opP->disp, 80);
if (!issword (tmpreg))
{
as_warn ("Expression out of range, using 0");
as_warn (_("Expression out of range, using 0"));
tmpreg = 0;
}
addword (tmpreg);
@ -2630,13 +2638,13 @@ m68k_ip (instring)
if (s[1] == 'w')
{
if (tmpreg & 0x7FF0000)
as_bad ("Floating point register in register list");
as_bad (_("Floating point register in register list"));
insop (reverse_16_bits (tmpreg), opcode);
}
else
{
if (tmpreg & 0x700FFFF)
as_bad ("Wrong register in floating-point reglist");
as_bad (_("Wrong register in floating-point reglist"));
install_operand (s[1], reverse_8_bits (tmpreg >> 16));
}
break;
@ -2646,19 +2654,19 @@ m68k_ip (instring)
if (s[1] == 'w')
{
if (tmpreg & 0x7FF0000)
as_bad ("Floating point register in register list");
as_bad (_("Floating point register in register list"));
insop (tmpreg, opcode);
}
else if (s[1] == '8')
{
if (tmpreg & 0x0FFFFFF)
as_bad ("incorrect register in reglist");
as_bad (_("incorrect register in reglist"));
install_operand (s[1], tmpreg >> 24);
}
else
{
if (tmpreg & 0x700FFFF)
as_bad ("wrong register in floating-point reglist");
as_bad (_("wrong register in floating-point reglist"));
else
install_operand (s[1], tmpreg >> 16);
}
@ -2734,7 +2742,7 @@ m68k_ip (instring)
tmpreg = 3;
break;
default:
as_fatal ("failed sanity check");
as_fatal (_("failed sanity check"));
} /* switch on cache token */
install_operand (s[1], tmpreg);
break;
@ -2860,6 +2868,8 @@ m68k_ip (instring)
install_operand (s[1], tmpreg);
break;
case '_': /* used only for move16 absolute 32-bit address */
if (isvar (&opP->disp))
add_fix ('l', &opP->disp, 0, 0);
tmpreg = get_num (&opP->disp, 80);
addword (tmpreg >> 16);
addword (tmpreg & 0xFFFF);
@ -3005,7 +3015,7 @@ install_operand (mode, val)
break;
case 'c':
default:
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
} /* install_operand() */
@ -3034,7 +3044,7 @@ install_gen_operand (mode, val)
break;
/* more stuff goes here */
default:
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
} /* install_gen_operand() */
@ -3068,7 +3078,7 @@ crack_operand (str, opP)
{
if (!parens)
{ /* ERROR */
opP->error = "Extra )";
opP->error = _("Extra )");
return str;
}
--parens;
@ -3079,7 +3089,7 @@ crack_operand (str, opP)
}
if (!*str && parens)
{ /* ERROR */
opP->error = "Missing )";
opP->error = _("Missing )");
return str;
}
c = *str;
@ -3096,8 +3106,17 @@ crack_operand (str, opP)
{
c = *++str;
if (!c)
as_bad ("Missing operand");
as_bad (_("Missing operand"));
}
/* Detect MRI REG symbols and convert them to REGLSTs. */
if (opP->mode == CONTROL && (int)opP->reg < 0)
{
opP->mode = REGLST;
opP->mask = ~(int)opP->reg;
opP->reg = 0;
}
return str;
}
@ -3378,7 +3397,7 @@ md_assemble (str)
}
if (er)
{
as_bad ("%s -- statement `%s' ignored", er, str);
as_bad (_("%s -- statement `%s' ignored"), er, str);
return;
}
@ -3422,7 +3441,7 @@ md_assemble (str)
n = 4;
break;
default:
as_fatal ("Don't know how to figure width of %c in md_assemble()",
as_fatal (_("Don't know how to figure width of %c in md_assemble()"),
the_ins.reloc[m].wid);
}
@ -3581,7 +3600,7 @@ md_begin ()
retval = hash_insert (op_hash, ins->name, (char *) hack);
if (retval)
as_fatal ("Internal Error: Can't hash %s: %s", ins->name, retval);
as_fatal (_("Internal Error: Can't hash %s: %s"), ins->name, retval);
}
for (i = 0; i < m68k_numaliases; i++)
@ -3590,10 +3609,10 @@ md_begin ()
const char *alias = m68k_opcode_aliases[i].alias;
PTR val = hash_find (op_hash, name);
if (!val)
as_fatal ("Internal Error: Can't find %s in hash table", name);
as_fatal (_("Internal Error: Can't find %s in hash table"), name);
retval = hash_insert (op_hash, alias, val);
if (retval)
as_fatal ("Internal Error: Can't hash %s: %s", alias, retval);
as_fatal (_("Internal Error: Can't hash %s: %s"), alias, retval);
}
/* In MRI mode, all unsized branches are variable sized. Normally,
@ -3626,10 +3645,10 @@ md_begin ()
const char *alias = mri_aliases[i].alias;
PTR val = hash_find (op_hash, name);
if (!val)
as_fatal ("Internal Error: Can't find %s in hash table", name);
as_fatal (_("Internal Error: Can't find %s in hash table"), name);
retval = hash_jam (op_hash, alias, val);
if (retval)
as_fatal ("Internal Error: Can't hash %s: %s", alias, retval);
as_fatal (_("Internal Error: Can't hash %s: %s"), alias, retval);
}
}
@ -3755,7 +3774,7 @@ m68k_init_after_args ()
break;
if (i == n_archs)
{
as_bad ("unrecognized default cpu `%s' ???", TARGET_CPU);
as_bad (_("unrecognized default cpu `%s' ???"), TARGET_CPU);
current_architecture |= m68020;
}
else
@ -3767,7 +3786,7 @@ m68k_init_after_args ()
{
if (current_architecture & m68040)
{
as_warn ("68040 and 68851 specified; mmu instructions may assemble incorrectly");
as_warn (_("68040 and 68851 specified; mmu instructions may assemble incorrectly"));
}
}
/* What other incompatibilities could we check for? */
@ -3787,9 +3806,9 @@ m68k_init_after_args ()
current_architecture |= m68851;
}
if (no_68881 && (current_architecture & m68881))
as_bad ("options for 68881 and no-68881 both given");
as_bad (_("options for 68881 and no-68881 both given"));
if (no_68851 && (current_architecture & m68851))
as_bad ("options for 68851 and no-68851 both given");
as_bad (_("options for 68851 and no-68851 both given"));
#ifdef OBJ_AOUT
/* Work out the magic number. This isn't very general. */
@ -3806,7 +3825,8 @@ m68k_init_after_args ()
/* Note which set of "movec" control registers is available. */
select_control_regs ();
if (cpu_of_arch (current_architecture) < m68020)
if (cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
md_relax_table[TAB (PCINDEX, BYTE)].rlx_more = 0;
}
@ -3843,7 +3863,13 @@ void
m68k_frob_symbol (sym)
symbolS *sym;
{
if ((S_GET_VALUE (sym) & 1) != 0)
if (S_GET_SEGMENT (sym) == reg_section
&& (int) S_GET_VALUE (sym) < 0)
{
S_SET_SEGMENT (sym, absolute_section);
S_SET_VALUE (sym, ~(int)S_GET_VALUE (sym));
}
else if ((S_GET_VALUE (sym) & 1) != 0)
{
struct label_line *l;
@ -3853,7 +3879,7 @@ m68k_frob_symbol (sym)
{
if (l->text)
as_warn_where (l->file, l->line,
"text label `%s' aligned to odd boundary",
_("text label `%s' aligned to odd boundary"),
S_GET_NAME (sym));
break;
}
@ -3947,7 +3973,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -4043,7 +4069,7 @@ md_apply_fix_2 (fixP, val)
if ((addressT) val > upper_limit
&& (val > 0 || val < lower_limit))
as_bad_where (fixP->fx_file, fixP->fx_line, "value out of range");
as_bad_where (fixP->fx_file, fixP->fx_line, _("value out of range"));
/* A one byte PC-relative reloc means a short branch. We can't use
a short branch with a value of 0 or -1, because those indicate
@ -4059,7 +4085,7 @@ md_apply_fix_2 (fixP, val)
&& (fixP->fx_addsy == NULL
|| S_IS_DEFINED (fixP->fx_addsy))
&& (val == 0 || val == -1))
as_bad_where (fixP->fx_file, fixP->fx_line, "invalid byte branch offset");
as_bad_where (fixP->fx_file, fixP->fx_line, _("invalid byte branch offset"));
}
#ifdef BFD_ASSEMBLER
@ -4116,7 +4142,7 @@ md_convert_frag_1 (fragP)
case TAB (ABRANCH, BYTE):
know (issbyte (disp));
if (disp == 0)
as_bad ("short branch with zero offset: use :w");
as_bad (_("short branch with zero offset: use :w"));
fragP->fr_opcode[1] = disp;
ext = 0;
break;
@ -4162,7 +4188,7 @@ md_convert_frag_1 (fragP)
}
else
{
as_bad ("Long branch offset not supported.");
as_bad (_("Long branch offset not supported."));
}
}
else
@ -4223,7 +4249,7 @@ md_convert_frag_1 (fragP)
fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol, fragP->fr_offset,
0, NO_RELOC);
if ((fragP->fr_opcode[1] & 0x3F) != 0x3A)
as_bad ("Internal error (long PC-relative operand) for insn 0x%04x at 0x%lx",
as_bad (_("Internal error (long PC-relative operand) for insn 0x%04x at 0x%lx"),
(unsigned) fragP->fr_opcode[0],
(unsigned long) fragP->fr_address);
fragP->fr_opcode[1] &= ~0x3F;
@ -4254,7 +4280,7 @@ md_convert_frag_1 (fragP)
disp += 2;
if (!issbyte (disp))
{
as_bad ("displacement doesn't fit in one byte");
as_bad (_("displacement doesn't fit in one byte"));
disp = 0;
}
assert (fragP->fr_fix >= 2);
@ -4366,7 +4392,7 @@ md_estimate_size_before_relax (fragP, segment)
}
else
{
as_warn ("Long branch offset to extern symbol not supported.");
as_warn (_("Long branch offset to extern symbol not supported."));
}
}
else
@ -4404,7 +4430,8 @@ md_estimate_size_before_relax (fragP, segment)
{
if (S_GET_SEGMENT (fragP->fr_symbol) == segment
|| flag_short_refs
|| cpu_of_arch (current_architecture) < m68020)
|| cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
{
fragP->fr_subtype = TAB (PCREL, SHORT);
fragP->fr_var += 2;
@ -4500,7 +4527,8 @@ md_estimate_size_before_relax (fragP, segment)
{
if ((S_GET_SEGMENT (fragP->fr_symbol)) == segment
|| flag_short_refs
|| cpu_of_arch (current_architecture) < m68020)
|| cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
{
fragP->fr_subtype = TAB (PCLEA, SHORT);
fragP->fr_var += 2;
@ -4515,7 +4543,8 @@ md_estimate_size_before_relax (fragP, segment)
case TAB (PCINDEX, SZ_UNDEF):
if (S_GET_SEGMENT (fragP->fr_symbol) == segment
|| cpu_of_arch (current_architecture) < m68020)
|| cpu_of_arch (current_architecture) < m68020
|| cpu_of_arch (current_architecture) == mcf5200)
{
fragP->fr_subtype = TAB (PCINDEX, BYTE);
}
@ -4704,7 +4733,7 @@ get_num (exp, ok)
offs (exp) = 0;
if (ok == 10)
{
as_warn ("expression out of range: defaulting to 1");
as_warn (_("expression out of range: defaulting to 1"));
offs (exp) = 1;
}
}
@ -4715,7 +4744,7 @@ get_num (exp, ok)
case 10:
if (offs (exp) < 1 || offs (exp) > 8)
{
as_warn ("expression out of range: defaulting to 1");
as_warn (_("expression out of range: defaulting to 1"));
offs (exp) = 1;
}
break;
@ -4747,7 +4776,7 @@ get_num (exp, ok)
if (offs (exp) < 0 || offs (exp) > 4095)
{
outrange:
as_warn ("expression out of range: defaulting to 0");
as_warn (_("expression out of range: defaulting to 0"));
offs (exp) = 0;
}
break;
@ -4780,7 +4809,7 @@ get_num (exp, ok)
adds (exp) = 0;
subs (exp) = 0;
offs (exp) = (ok == 10) ? 1 : 0;
as_warn ("Can't deal with expression; defaulting to %ld",
as_warn (_("Can't deal with expression; defaulting to %ld"),
offs (exp));
}
}
@ -4792,7 +4821,7 @@ get_num (exp, ok)
adds (exp) = 0;
subs (exp) = 0;
offs (exp) = (ok == 10) ? 1 : 0;
as_warn ("Can't deal with expression; defaulting to %ld",
as_warn (_("Can't deal with expression; defaulting to %ld"),
offs (exp));
}
}
@ -4806,11 +4835,11 @@ get_num (exp, ok)
break;
case SIZE_BYTE:
if (!isbyte (offs (exp)))
as_warn ("expression doesn't fit in BYTE");
as_warn (_("expression doesn't fit in BYTE"));
break;
case SIZE_WORD:
if (!isword (offs (exp)))
as_warn ("expression doesn't fit in WORD");
as_warn (_("expression doesn't fit in WORD"));
break;
}
}
@ -4903,7 +4932,7 @@ mri_chip ()
break;
if (i >= n_archs)
{
as_bad ("%s: unrecognized processor name", s);
as_bad (_("%s: unrecognized processor name"), s);
*input_line_pointer = c;
ignore_rest_of_line ();
return;
@ -4968,13 +4997,13 @@ s_fopt (ignore)
input_line_pointer += 3;
temp = get_absolute_expression ();
if (temp < 0 || temp > 7)
as_bad ("bad coprocessor id");
as_bad (_("bad coprocessor id"));
else
m68k_float_copnum = COP0 + temp;
}
else
{
as_bad ("unrecognized fopt option");
as_bad (_("unrecognized fopt option"));
ignore_rest_of_line ();
return;
}
@ -5108,7 +5137,7 @@ s_opt (ignore)
else if (o->pvar != NULL)
{
if (! t && o->arg == o->notarg)
as_bad ("option `%s' may not be negated", s);
as_bad (_("option `%s' may not be negated"), s);
*input_line_pointer = c;
*o->pvar = t ? o->arg : o->notarg;
}
@ -5119,7 +5148,7 @@ s_opt (ignore)
}
if (i >= OPTCOUNT)
{
as_bad ("option `%s' not recognized", s);
as_bad (_("option `%s' not recognized"), s);
*input_line_pointer = c;
}
}
@ -5152,7 +5181,7 @@ opt_nest (arg, on)
{
if (*input_line_pointer != '=')
{
as_bad ("bad format of OPT NEST=depth");
as_bad (_("bad format of OPT NEST=depth"));
return;
}
@ -5209,13 +5238,13 @@ s_reg (ignore)
char *s;
int c;
struct m68k_op rop;
unsigned long mask;
int mask;
char *stop = NULL;
char stopc;
if (line_label == NULL)
{
as_bad ("missing label");
as_bad (_("missing label"));
ignore_rest_of_line ();
return;
}
@ -5239,9 +5268,9 @@ s_reg (ignore)
if (m68k_ip_op (s, &rop) != 0)
{
if (rop.error == NULL)
as_bad ("bad register list");
as_bad (_("bad register list"));
else
as_bad ("bad register list: %s", rop.error);
as_bad (_("bad register list: %s"), rop.error);
*input_line_pointer = c;
ignore_rest_of_line ();
return;
@ -5268,13 +5297,13 @@ s_reg (ignore)
mask = 1 << 26;
else
{
as_bad ("bad register list");
as_bad (_("bad register list"));
ignore_rest_of_line ();
return;
}
S_SET_SEGMENT (line_label, absolute_section);
S_SET_VALUE (line_label, mask);
S_SET_SEGMENT (line_label, reg_section);
S_SET_VALUE (line_label, ~mask);
line_label->sy_frag = &zero_address_frag;
if (flag_mri)
@ -5339,7 +5368,7 @@ s_restore (ignore)
if (save_stack == NULL)
{
as_bad ("restore without save");
as_bad (_("restore without save"));
ignore_rest_of_line ();
return;
}
@ -5497,7 +5526,7 @@ parse_mri_condition (pcc)
if (*input_line_pointer != '>')
{
as_bad ("syntax error in structured control directive");
as_bad (_("syntax error in structured control directive"));
return 0;
}
@ -5548,7 +5577,7 @@ parse_mri_control_operand (pcc, leftstart, leftstop, rightstart, rightstop)
}
if (*s == '\0')
{
as_bad ("missing condition code in structured control directive");
as_bad (_("missing condition code in structured control directive"));
return 0;
}
@ -5846,7 +5875,7 @@ parse_mri_control_expression (stop, qual, truelab, falselab, extent)
*stop = c;
if (input_line_pointer != stop)
as_bad ("syntax error in structured control directive");
as_bad (_("syntax error in structured control directive"));
}
/* Handle the MRI IF pseudo-op. This may be a structured control
@ -5880,7 +5909,7 @@ s_mri_if (qual)
{
if (qual != '\0')
{
as_bad ("missing then");
as_bad (_("missing then"));
ignore_rest_of_line ();
return;
}
@ -5962,7 +5991,7 @@ s_mri_else (qual)
|| mri_control_stack->type != mri_if
|| mri_control_stack->else_seen)
{
as_bad ("else without matching if");
as_bad (_("else without matching if"));
ignore_rest_of_line ();
return;
}
@ -5996,7 +6025,7 @@ s_mri_endi (ignore)
if (mri_control_stack == NULL
|| mri_control_stack->type != mri_if)
{
as_bad ("endi without matching if");
as_bad (_("endi without matching if"));
ignore_rest_of_line ();
return;
}
@ -6037,7 +6066,7 @@ s_mri_break (extent)
n = n->outer;
if (n == NULL)
{
as_bad ("break outside of structured loop");
as_bad (_("break outside of structured loop"));
ignore_rest_of_line ();
return;
}
@ -6076,7 +6105,7 @@ s_mri_next (extent)
n = n->outer;
if (n == NULL)
{
as_bad ("next outside of structured loop");
as_bad (_("next outside of structured loop"));
ignore_rest_of_line ();
return;
}
@ -6128,7 +6157,7 @@ s_mri_for (qual)
++input_line_pointer;
if (*input_line_pointer != '=')
{
as_bad ("missing =");
as_bad (_("missing ="));
ignore_rest_of_line ();
return;
}
@ -6166,7 +6195,7 @@ s_mri_for (qual)
}
if (initstop == NULL)
{
as_bad ("missing to or downto");
as_bad (_("missing to or downto"));
ignore_rest_of_line ();
return;
}
@ -6202,7 +6231,7 @@ s_mri_for (qual)
}
if (endstop == NULL)
{
as_bad ("missing do");
as_bad (_("missing do"));
ignore_rest_of_line ();
return;
}
@ -6236,7 +6265,7 @@ s_mri_for (qual)
}
if (bystop == NULL)
{
as_bad ("missing do");
as_bad (_("missing do"));
ignore_rest_of_line ();
return;
}
@ -6339,7 +6368,7 @@ s_mri_endf (ignore)
if (mri_control_stack == NULL
|| mri_control_stack->type != mri_for)
{
as_bad ("endf without for");
as_bad (_("endf without for"));
ignore_rest_of_line ();
return;
}
@ -6395,7 +6424,7 @@ s_mri_until (qual)
if (mri_control_stack == NULL
|| mri_control_stack->type != mri_repeat)
{
as_bad ("until without repeat");
as_bad (_("until without repeat"));
ignore_rest_of_line ();
return;
}
@ -6446,7 +6475,7 @@ s_mri_while (qual)
if (s - input_line_pointer < 2
|| strncasecmp (s - 1, "DO", 2) != 0)
{
as_bad ("missing do");
as_bad (_("missing do"));
ignore_rest_of_line ();
return;
}
@ -6482,7 +6511,7 @@ s_mri_endw (ignore)
if (mri_control_stack == NULL
|| mri_control_stack->type != mri_while)
{
as_bad ("endw without while");
as_bad (_("endw without while"));
ignore_rest_of_line ();
return;
}
@ -6598,7 +6627,7 @@ md_parse_option (c, arg)
if (i == n_archs)
{
unknown:
as_bad ("unrecognized option `%s'", oarg);
as_bad (_("unrecognized option `%s'"), oarg);
return 0;
}
arch = archs[i].arch;
@ -6643,7 +6672,7 @@ md_parse_option (c, arg)
}
if (i == n_archs)
{
as_bad ("unrecognized architecture specification `%s'", arg);
as_bad (_("unrecognized architecture specification `%s'"), arg);
return 0;
}
}
@ -6713,7 +6742,7 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, "\
fprintf(stream, _("\
680X0 options:\n\
-l use 1 word for refs to undefined symbols [default 2]\n\
-m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060\n\
@ -6722,8 +6751,8 @@ md_show_usage (stream)
specify variant of 680X0 architecture [default 68020]\n\
-m68881 | -m68882 | -mno-68881 | -mno-68882\n\
target has/lacks floating-point coprocessor\n\
[default yes for 68020, 68030, and cpu32]\n");
fprintf(stream, "\
[default yes for 68020, 68030, and cpu32]\n"));
fprintf(stream, _("\
-m68851 | -mno-68851\n\
target has/lacks memory-management unit coprocessor\n\
[default yes for 68020 and up]\n\
@ -6731,12 +6760,12 @@ md_show_usage (stream)
-S turn jbsr into jsr\n\
--register-prefix-optional\n\
recognize register names without prefix character\n\
--bitwise-or do not treat `|' as a comment character\n");
fprintf (stream, "\
--bitwise-or do not treat `|' as a comment character\n"));
fprintf (stream, _("\
--base-size-default-16 base reg without size is 16 bits\n\
--base-size-default-32 base reg without size is 32 bits (default)\n\
--disp-size-default-16 displacement with unknown size is 16 bits\n\
--disp-size-default-32 displacement with unknown size is 32 bits (default)\n");
--disp-size-default-32 displacement with unknown size is 32 bits (default)\n"));
}
#ifdef TEST2
@ -6767,11 +6796,11 @@ main ()
m68k_ip (&the_ins, buf);
if (the_ins.error)
{
printf ("Error %s in %s\n", the_ins.error, buf);
printf (_("Error %s in %s\n"), the_ins.error, buf);
}
else
{
printf ("Opcode(%d.%s): ", the_ins.numo, the_ins.args);
printf (_("Opcode(%d.%s): "), the_ins.numo, the_ins.args);
for (n = 0; n < the_ins.numo; n++)
printf (" 0x%x", the_ins.opcode[n] & 0xffff);
printf (" ");

View File

@ -8,7 +8,7 @@ This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
@ -203,7 +203,7 @@ md_begin ()
retval = hash_insert (op_hash, name, &m88k_opcodes[i]);
if (retval != NULL)
as_fatal ("Can't hash instruction '%s':%s",
as_fatal (_("Can't hash instruction '%s':%s"),
m88k_opcodes[i].name, retval);
/* skip to next unique mnemonic or end of list */
@ -255,7 +255,7 @@ md_assemble (op)
if ((format = (struct m88k_opcode *) hash_find (op_hash, op)) == NULL)
{
as_bad ("Invalid mnemonic '%s'", op);
as_bad (_("Invalid mnemonic '%s'"), op);
return;
}
@ -275,7 +275,7 @@ md_assemble (op)
format++;
else
{
as_fatal ("Parameter syntax error");
as_fatal (_("Parameter syntax error"));
return;
}
}
@ -330,7 +330,7 @@ md_assemble (op)
break;
default:
as_fatal ("Unknown relocation type");
as_fatal (_("Unknown relocation type"));
break;
}
}
@ -443,7 +443,7 @@ calcop (format, param, insn)
case '?':
/* Having this here repeats the warning somtimes.
But can't we stand that? */
as_warn ("Use of obsolete instruction");
as_warn (_("Use of obsolete instruction"));
break;
}
}
@ -560,7 +560,7 @@ get_imm16 (param, insn)
{
/* Warn about too big expressions if not surrounded by xx16. */
if (val > 0xffff)
as_warn ("Expression truncated to 16 bits");
as_warn (_("Expression truncated to 16 bits"));
}
if (reloc == RELOC_HI16)
@ -626,7 +626,7 @@ get_cmp (param, valp)
if (val >= 32)
{
as_warn ("Expression truncated to 5 bits");
as_warn (_("Expression truncated to 5 bits"));
val %= 32;
}
}
@ -648,7 +648,7 @@ get_cnd (param, valp)
if (val >= 32)
{
as_warn ("Expression truncated to 5 bits");
as_warn (_("Expression truncated to 5 bits"));
val %= 32;
}
}
@ -870,7 +870,7 @@ get_vec9 (param, valp)
input_line_pointer = save_ptr;
if (val >= 1 << 9)
as_warn ("Expression truncated to 9 bits");
as_warn (_("Expression truncated to 9 bits"));
*valp = val % (1 << 9);
@ -892,7 +892,7 @@ get_o6 (param, valp)
input_line_pointer = save_ptr;
if (val & 0x3)
as_warn ("Removed lower 2 bits of expression");
as_warn (_("Removed lower 2 bits of expression"));
*valp = val;
@ -1031,7 +1031,7 @@ md_number_to_imm (buf, val, nbytes, fixP, seg_type)
break;
default:
as_fatal ("Bad relocation type");
as_fatal (_("Bad relocation type"));
break;
}
}
@ -1044,7 +1044,7 @@ md_number_to_disp (buf, val, nbytes)
int val;
int nbytes;
{
as_fatal ("md_number_to_disp not defined");
as_fatal (_("md_number_to_disp not defined"));
md_number_to_chars (buf, val, nbytes);
}
@ -1054,7 +1054,7 @@ md_number_to_field (buf, val, nbytes)
int val;
int nbytes;
{
as_fatal ("md_number_to_field not defined");
as_fatal (_("md_number_to_field not defined"));
md_number_to_chars (buf, val, nbytes);
}
@ -1103,7 +1103,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -1167,7 +1167,7 @@ md_estimate_size_before_relax (fragP, segment_type)
fragS *fragP;
segT segment_type;
{
as_fatal ("Relaxation should never occur");
as_fatal (_("Relaxation should never occur"));
return (-1);
}
@ -1257,14 +1257,14 @@ s_bss ()
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_warn ("Expected comma after name");
as_warn (_("Expected comma after name"));
ignore_rest_of_line ();
return;
}
input_line_pointer++;
if ((temp = get_absolute_expression ()) < 0)
{
as_warn ("BSS length (%d.) <0! Ignored.", temp);
as_warn (_("BSS length (%d.) <0! Ignored."), temp);
ignore_rest_of_line ();
return;
}
@ -1308,7 +1308,7 @@ s_bss ()
}
else
{
as_warn ("Ignoring attempt to re-define symbol %s.", name);
as_warn (_("Ignoring attempt to re-define symbol %s."), name);
}
while (!is_end_of_line[*input_line_pointer])

View File

@ -8,7 +8,7 @@ This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
@ -75,7 +75,7 @@ struct reloc_info_m88k
/* Don't warn on word overflow; it happens on %hi relocs. */
#undef WARN_SIGNED_OVERFLOW_WORD
#define md_convert_frag(b,s,f) {as_fatal ("m88k convert_frag\n");}
#define md_convert_frag(b,s,f) {as_fatal (_("m88k convert_frag\n"));}
/* We don't need to do anything special for undefined symbols. */
#define md_undefined_symbol(s) 0

File diff suppressed because it is too large Load Diff

View File

@ -80,6 +80,7 @@ static void ppc_function PARAMS ((int));
static void ppc_extern PARAMS ((int));
static void ppc_lglobl PARAMS ((int));
static void ppc_section PARAMS ((int));
static void ppc_named_section PARAMS ((int));
static void ppc_stabx PARAMS ((int));
static void ppc_rename PARAMS ((int));
static void ppc_toc PARAMS ((int));
@ -174,6 +175,7 @@ const pseudo_typeS md_pseudo_table[] =
{ "function", ppc_function, 0 },
{ "lglobl", ppc_lglobl, 0 },
{ "rename", ppc_rename, 0 },
{ "section", ppc_named_section, 0 },
{ "stabx", ppc_stabx, 0 },
{ "text", ppc_section, 't' },
{ "toc", ppc_toc, 0 },
@ -827,7 +829,7 @@ md_parse_option (c, arg)
#endif
else
{
as_bad ("invalid switch -m%s", arg);
as_bad (_("invalid switch -m%s"), arg);
return 0;
}
break;
@ -864,7 +866,7 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, "\
fprintf(stream, _("\
PowerPC options:\n\
-u ignored\n\
-mpwrx, -mpwr2 generate code for IBM POWER/2 (RIOS2)\n\
@ -876,9 +878,9 @@ PowerPC options:\n\
-mcom generate code Power/PowerPC common instructions\n\
-many generate code for any architecture (PWR/PWRX/PPC)\n\
-mregnames Allow symbolic names for registers\n\
-mno-regnames Do not allow symbolic names for registers\n");
-mno-regnames Do not allow symbolic names for registers\n"));
#ifdef OBJ_ELF
fprintf(stream, "\
fprintf(stream, _("\
-mrelocatable support for GCC's -mrelocatble option\n\
-mrelocatable-lib support for GCC's -mrelocatble-lib option\n\
-memb set PPC_EMB bit in ELF flags\n\
@ -888,7 +890,7 @@ PowerPC options:\n\
-msolaris generate code for Solaris\n\
-mno-solaris do not generate code for Solaris\n\
-V print assembler version number\n\
-Qy, -Qn ignored\n");
-Qy, -Qn ignored\n"));
#endif
}
@ -913,7 +915,7 @@ ppc_set_cpu ()
|| strcmp (default_cpu, "powerpcle") == 0)
ppc_cpu = PPC_OPCODE_PPC;
else
as_fatal ("Unknown default cpu = %s, os = %s", default_cpu, default_os);
as_fatal (_("Unknown default cpu = %s, os = %s"), default_cpu, default_os);
}
}
@ -938,7 +940,7 @@ ppc_arch ()
return bfd_arch_powerpc;
}
as_fatal ("Neither Power nor PowerPC opcodes were selected.");
as_fatal (_("Neither Power nor PowerPC opcodes were selected."));
return bfd_arch_unknown;
}
@ -985,7 +987,7 @@ md_begin ()
&& (op->flags & PPC_OPCODE_POWER) != 0)
continue;
as_bad ("Internal assembler error for instruction %s", op->name);
as_bad (_("Internal assembler error for instruction %s"), op->name);
dup_insn = true;
}
}
@ -1004,7 +1006,7 @@ md_begin ()
retval = hash_insert (ppc_macro_hash, macro->name, (PTR) macro);
if (retval != (const char *) NULL)
{
as_bad ("Internal assembler error for macro %s", macro->name);
as_bad (_("Internal assembler error for macro %s"), macro->name);
dup_insn = true;
}
}
@ -1093,7 +1095,7 @@ ppc_insert_operand (insn, operand, val, file, line)
if (test < (offsetT) min || test > (offsetT) max)
{
const char *err =
"operand out of range (%s not between %ld and %ld)";
_("operand out of range (%s not between %ld and %ld)");
char buf[100];
sprint_value (buf, test);
@ -1215,7 +1217,7 @@ ppc_elf_suffix (str_p, exp_p)
|| ptr->reloc == BFD_RELOC_LO16_GOTOFF
|| ptr->reloc == BFD_RELOC_HI16_GOTOFF
|| ptr->reloc == BFD_RELOC_HI16_S_GOTOFF))
as_warn ("identifier+constant@got means identifier@got+constant");
as_warn (_("identifier+constant@got means identifier@got+constant"));
/* Now check for identifier@suffix+constant */
if (*str == '-' || *str == '+')
@ -1269,7 +1271,7 @@ ppc_elf_cons (nbytes)
int size = bfd_get_reloc_size (reloc_howto);
if (size > nbytes)
as_bad ("%s relocations do not fit in %d bytes\n", reloc_howto->name, nbytes);
as_bad (_("%s relocations do not fit in %d bytes\n"), reloc_howto->name, nbytes);
else
{
@ -1328,7 +1330,7 @@ ppc_elf_lcomm(xxx)
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after symbol-name: rest of line ignored.");
as_bad (_("Expected comma after symbol-name: rest of line ignored."));
ignore_rest_of_line ();
return;
}
@ -1336,7 +1338,7 @@ ppc_elf_lcomm(xxx)
input_line_pointer++; /* skip ',' */
if ((size = get_absolute_expression ()) < 0)
{
as_warn (".COMMon length (%ld.) <0! Ignored.", (long) size);
as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) size);
ignore_rest_of_line ();
return;
}
@ -1350,7 +1352,7 @@ ppc_elf_lcomm(xxx)
align = get_absolute_expression ();
if (align <= 0)
{
as_warn ("ignoring bad alignment");
as_warn (_("ignoring bad alignment"));
align = 8;
}
}
@ -1361,7 +1363,7 @@ ppc_elf_lcomm(xxx)
if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol `%s'.",
as_bad (_("Ignoring attempt to re-define symbol `%s'."),
S_GET_NAME (symbolP));
ignore_rest_of_line ();
return;
@ -1369,7 +1371,7 @@ ppc_elf_lcomm(xxx)
if (S_GET_VALUE (symbolP) && S_GET_VALUE (symbolP) != (valueT) size)
{
as_bad ("Length of .lcomm \"%s\" is already %ld. Not changed to %ld.",
as_bad (_("Length of .lcomm \"%s\" is already %ld. Not changed to %ld."),
S_GET_NAME (symbolP),
(long) S_GET_VALUE (symbolP),
(long) size);
@ -1387,7 +1389,7 @@ ppc_elf_lcomm(xxx)
for (align2 = 0; (align & 1) == 0; align >>= 1, ++align2);
if (align != 1)
{
as_bad ("Common alignment not a power of 2");
as_bad (_("Common alignment not a power of 2"));
ignore_rest_of_line ();
return;
}
@ -1450,7 +1452,7 @@ ppc_elf_validate_fix (fixp, seg)
|| fixp->fx_r_type != BFD_RELOC_CTOR)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"Relocation cannot be done when using -mrelocatable");
_("Relocation cannot be done when using -mrelocatable"));
}
}
return;
@ -1531,7 +1533,7 @@ parse_toc_entry(toc_kind)
}
else
{
as_bad ("syntax error: invalid toc specifier `%s'", toc_spec);
as_bad (_("syntax error: invalid toc specifier `%s'"), toc_spec);
*input_line_pointer = c; /* put back the delimiting char */
input_line_pointer = start; /* reset input_line pointer */
return 0;
@ -1545,7 +1547,7 @@ parse_toc_entry(toc_kind)
if (c != ']')
{
as_bad ("syntax error: expected `]', found `%c'", c);
as_bad (_("syntax error: expected `]', found `%c'"), c);
input_line_pointer = start; /* reset input_line pointer */
return 0;
}
@ -1604,7 +1606,7 @@ md_assemble (str)
macro = (const struct powerpc_macro *) hash_find (ppc_macro_hash, str);
if (macro == (const struct powerpc_macro *) NULL)
as_bad ("Unrecognized opcode: `%s'", str);
as_bad (_("Unrecognized opcode: `%s'"), str);
else
ppc_macro (s, macro);
@ -1779,7 +1781,7 @@ md_assemble (str)
assert (ex.X_add_symbol != NULL);
if (ex.X_add_symbol->bsym->section != tocdata_section)
{
as_bad("[tocv] symbol is not a toc symbol");
as_bad(_("[tocv] symbol is not a toc symbol"));
}
}
@ -1790,16 +1792,16 @@ md_assemble (str)
/* entries. We don't support them today. Is this the */
/* right way to say that? */
toc_reloc = BFD_RELOC_UNUSED;
as_bad ("Unimplemented toc32 expression modifier");
as_bad (_("Unimplemented toc32 expression modifier"));
break;
case must_be_64:
/* FIXME: see above */
toc_reloc = BFD_RELOC_UNUSED;
as_bad ("Unimplemented toc64 expression modifier");
as_bad (_("Unimplemented toc64 expression modifier"));
break;
default:
fprintf(stderr,
"Unexpected return value [%d] from parse_toc_entry!\n",
_("Unexpected return value [%d] from parse_toc_entry!\n"),
toc_kind);
abort();
break;
@ -1807,7 +1809,7 @@ md_assemble (str)
/* We need to generate a fixup for this expression. */
if (fc >= MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[fc].reloc = toc_reloc;
fixups[fc].exp = ex;
@ -1839,9 +1841,9 @@ md_assemble (str)
input_line_pointer = hold;
if (ex.X_op == O_illegal)
as_bad ("illegal operand");
as_bad (_("illegal operand"));
else if (ex.X_op == O_absent)
as_bad ("missing operand");
as_bad (_("missing operand"));
else if (ex.X_op == O_register)
{
insn = ppc_insert_operand (insn, operand, ex.X_add_number,
@ -1914,7 +1916,7 @@ md_assemble (str)
/* We need to generate a fixup for this expression. */
if (fc >= MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[fc].exp = ex;
fixups[fc].opindex = 0;
fixups[fc].reloc = reloc;
@ -1926,7 +1928,7 @@ md_assemble (str)
{
/* We need to generate a fixup for this expression. */
if (fc >= MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[fc].exp = ex;
fixups[fc].opindex = *opindex_ptr;
fixups[fc].reloc = BFD_RELOC_UNUSED;
@ -1951,7 +1953,7 @@ md_assemble (str)
if (*str != endc
&& (endc != ',' || *str != '\0'))
{
as_bad ("syntax error; found `%c' but expected `%c'", *str, endc);
as_bad (_("syntax error; found `%c' but expected `%c'"), *str, endc);
break;
}
@ -1963,7 +1965,7 @@ md_assemble (str)
++str;
if (*str != '\0')
as_bad ("junk at end of line: `%s'", str);
as_bad (_("junk at end of line: `%s'"), str);
/* Write out the instruction. */
f = frag_more (4);
@ -2082,7 +2084,7 @@ ppc_macro (str, macro)
if (count != macro->operands)
{
as_bad ("wrong number of operands");
as_bad (_("wrong number of operands"));
return;
}
@ -2138,7 +2140,7 @@ ppc_section_letter (letter, ptr_msg)
if (letter == 'e')
return SHF_EXCLUDE;
*ptr_msg = "Bad .section directive: want a,w,x,e in string";
*ptr_msg = _("Bad .section directive: want a,w,x,e in string");
return 0;
}
@ -2256,7 +2258,7 @@ ppc_comm (lcomm)
if (*input_line_pointer != ',')
{
as_bad ("missing size");
as_bad (_("missing size"));
ignore_rest_of_line ();
return;
}
@ -2265,7 +2267,7 @@ ppc_comm (lcomm)
size = get_absolute_expression ();
if (size < 0)
{
as_bad ("negative size");
as_bad (_("negative size"));
ignore_rest_of_line ();
return;
}
@ -2281,7 +2283,7 @@ ppc_comm (lcomm)
align = get_absolute_expression ();
if (align <= 0)
{
as_warn ("ignoring bad alignment");
as_warn (_("ignoring bad alignment"));
align = 3;
}
}
@ -2306,7 +2308,7 @@ ppc_comm (lcomm)
argument. */
if (*input_line_pointer != ',')
{
as_bad ("missing real symbol name");
as_bad (_("missing real symbol name"));
ignore_rest_of_line ();
return;
}
@ -2327,7 +2329,7 @@ ppc_comm (lcomm)
if (S_IS_DEFINED (sym)
|| S_GET_VALUE (sym) != 0)
{
as_bad ("attempt to redefine symbol");
as_bad (_("attempt to redefine symbol"));
ignore_rest_of_line ();
return;
}
@ -2536,6 +2538,43 @@ ppc_section (type)
demand_empty_rest_of_line ();
}
/* This function handles the .section pseudo-op. This is mostly to
give an error, since XCOFF only supports .text, .data and .bss, but
we do permit the user to name the text or data section. */
static void
ppc_named_section (ignore)
int ignore;
{
char *user_name;
const char *real_name;
char c;
symbolS *sym;
user_name = input_line_pointer;
c = get_symbol_end ();
if (strcmp (user_name, ".text") == 0)
real_name = ".text[PR]";
else if (strcmp (user_name, ".data") == 0)
real_name = ".data[RW]";
else
{
as_bad (_("The XCOFF file format does not support arbitrary sections"));
*input_line_pointer = c;
ignore_rest_of_line ();
return;
}
*input_line_pointer = c;
sym = symbol_find_or_make (real_name);
ppc_change_csect (sym);
demand_empty_rest_of_line ();
}
/* The .extern pseudo-op. We create an undefined symbol. */
static void
@ -2598,7 +2637,7 @@ ppc_rename (ignore)
if (*input_line_pointer != ',')
{
as_bad ("missing rename string");
as_bad (_("missing rename string"));
ignore_rest_of_line ();
return;
}
@ -2629,7 +2668,7 @@ ppc_stabx (ignore)
if (*input_line_pointer != ',')
{
as_bad ("missing value");
as_bad (_("missing value"));
return;
}
++input_line_pointer;
@ -2647,7 +2686,7 @@ ppc_stabx (ignore)
case O_illegal:
case O_absent:
case O_big:
as_bad ("illegal .stabx expression; zero assumed");
as_bad (_("illegal .stabx expression; zero assumed"));
exp.X_add_number = 0;
/* Fall through. */
case O_constant:
@ -2679,7 +2718,7 @@ ppc_stabx (ignore)
if (*input_line_pointer != ',')
{
as_bad ("missing class");
as_bad (_("missing class"));
return;
}
++input_line_pointer;
@ -2688,7 +2727,7 @@ ppc_stabx (ignore)
if (*input_line_pointer != ',')
{
as_bad ("missing type");
as_bad (_("missing type"));
return;
}
++input_line_pointer;
@ -2749,7 +2788,7 @@ ppc_function (ignore)
if (*input_line_pointer != ',')
{
as_bad ("missing symbol name");
as_bad (_("missing symbol name"));
ignore_rest_of_line ();
return;
}
@ -2921,7 +2960,7 @@ ppc_bs (ignore)
symbolS *sym;
if (ppc_current_block != NULL)
as_bad ("nested .bs blocks");
as_bad (_("nested .bs blocks"));
name = input_line_pointer;
endc = get_symbol_end ();
@ -2954,7 +2993,7 @@ ppc_es (ignore)
symbolS *sym;
if (ppc_current_block == NULL)
as_bad (".es without preceding .bs");
as_bad (_(".es without preceding .bs"));
sym = symbol_make (".es");
S_SET_SEGMENT (sym, now_seg);
@ -3151,7 +3190,7 @@ ppc_tc (ignore)
if (ppc_toc_csect == (symbolS *) NULL
|| ppc_toc_csect != ppc_current_csect)
{
as_bad (".tc not in .toc section");
as_bad (_(".tc not in .toc section"));
ignore_rest_of_line ();
return;
}
@ -3170,7 +3209,7 @@ ppc_tc (ignore)
label = ppc_current_csect->sy_tc.within;
if (label->sy_tc.class != XMC_TC0)
{
as_bad (".tc with no label");
as_bad (_(".tc with no label"));
ignore_rest_of_line ();
return;
}
@ -3245,7 +3284,7 @@ ppc_previous(ignore)
if (ppc_previous_section == NULL)
{
as_warn("No previous section to return to. Directive ignored.");
as_warn(_("No previous section to return to. Directive ignored."));
return;
}
@ -3490,7 +3529,7 @@ ppc_pe_comm(lcomm)
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after symbol-name: rest of line ignored.");
as_bad (_("Expected comma after symbol-name: rest of line ignored."));
ignore_rest_of_line ();
return;
}
@ -3498,7 +3537,7 @@ ppc_pe_comm(lcomm)
input_line_pointer++; /* skip ',' */
if ((temp = get_absolute_expression ()) < 0)
{
as_warn (".COMMon length (%ld.) <0! Ignored.", (long) temp);
as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) temp);
ignore_rest_of_line ();
return;
}
@ -3514,7 +3553,7 @@ ppc_pe_comm(lcomm)
align = get_absolute_expression ();
if (align <= 0)
{
as_warn ("ignoring bad alignment");
as_warn (_("ignoring bad alignment"));
align = 3;
}
}
@ -3526,7 +3565,7 @@ ppc_pe_comm(lcomm)
*p = c;
if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol `%s'.",
as_bad (_("Ignoring attempt to re-define symbol `%s'."),
S_GET_NAME (symbolP));
ignore_rest_of_line ();
return;
@ -3535,7 +3574,7 @@ ppc_pe_comm(lcomm)
if (S_GET_VALUE (symbolP))
{
if (S_GET_VALUE (symbolP) != (valueT) temp)
as_bad ("Length of .comm \"%s\" is already %ld. Not changed to %ld.",
as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."),
S_GET_NAME (symbolP),
(long) S_GET_VALUE (symbolP),
(long) temp);
@ -3664,7 +3703,7 @@ ppc_pe_section (ignore)
{
/* Section Contents */
case 'a': /* unknown */
as_bad ("Unsupported section attribute -- 'a'");
as_bad (_("Unsupported section attribute -- 'a'"));
break;
case 'c': /* code section */
flags |= SEC_CODE;
@ -3734,7 +3773,7 @@ ppc_pe_section (ignore)
break;
default:
as_bad("unknown section attribute '%c'",
as_bad(_("unknown section attribute '%c'"),
*input_line_pointer);
break;
}
@ -3752,7 +3791,7 @@ ppc_pe_section (ignore)
if (flags != SEC_NO_FLAGS)
{
if (! bfd_set_section_flags (stdoutput, sec, flags))
as_bad ("error setting flags for \"%s\": %s",
as_bad (_("error setting flags for \"%s\": %s"),
bfd_section_name (stdoutput, sec),
bfd_errmsg (bfd_get_error ()));
}
@ -3854,7 +3893,7 @@ ppc_canonicalize_symbol_name (name)
*s = toupper (*s);
if (*s == '\0' || s[1] != '\0')
as_bad ("bad symbol suffix");
as_bad (_("bad symbol suffix"));
*s = ']';
}
@ -3945,7 +3984,7 @@ ppc_symbol_new_hook (sym)
}
if (sym->sy_tc.class == -1)
as_bad ("Unrecognized symbol suffix");
as_bad (_("Unrecognized symbol suffix"));
}
/* Set the class of a label based on where it is defined. This
@ -4027,7 +4066,7 @@ ppc_frob_symbol (sym)
if (SF_GET_FUNCTION (sym))
{
if (ppc_last_function != (symbolS *) NULL)
as_bad ("two .function pseudo-ops with no intervening .ef");
as_bad (_("two .function pseudo-ops with no intervening .ef"));
ppc_last_function = sym;
if (sym->sy_tc.size != (symbolS *) NULL)
{
@ -4039,7 +4078,7 @@ ppc_frob_symbol (sym)
&& strcmp (S_GET_NAME (sym), ".ef") == 0)
{
if (ppc_last_function == (symbolS *) NULL)
as_bad (".ef with no preceding .function");
as_bad (_(".ef with no preceding .function"));
else
{
set_end = ppc_last_function;
@ -4167,7 +4206,7 @@ ppc_frob_symbol (sym)
if (csect == (symbolS *) NULL)
{
as_warn ("warning: symbol %s has no csect", S_GET_NAME (sym));
as_warn (_("warning: symbol %s has no csect"), S_GET_NAME (sym));
a->x_csect.x_scnlen.l = 0;
}
else
@ -4319,7 +4358,7 @@ md_atof (type, litp, sizep)
default:
*sizep = 0;
return "bad call to md_atof";
return _("bad call to md_atof");
}
t = atof_ieee (input_line_pointer, type, words);
@ -4463,7 +4502,7 @@ ppc_fix_adjustable (fix)
}
as_bad_where (fix->fx_file, fix->fx_line,
"symbol in .toc does not match any .tc");
_("symbol in .toc does not match any .tc"));
}
/* Possibly adjust the reloc to be against the csect. */
@ -4654,7 +4693,7 @@ md_apply_fix3 (fixp, valuep, seg)
{
/* We can't actually support subtracting a symbol. */
as_bad_where (fixp->fx_file, fixp->fx_line,
"expression too complex");
_("expression too complex"));
}
}
}
@ -4757,10 +4796,10 @@ md_apply_fix3 (fixp, valuep, seg)
symbol. */
if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline))
as_bad_where (fixp->fx_file, fixp->fx_line,
"unresolved expression that must be resolved");
_("unresolved expression that must be resolved"));
else
as_bad_where (fixp->fx_file, fixp->fx_line,
"unsupported relocation type");
_("unsupported relocation type"));
fixp->fx_done = 1;
return 1;
}
@ -4811,13 +4850,17 @@ md_apply_fix3 (fixp, valuep, seg)
case BFD_RELOC_PPC_EMB_RELSDA:
case BFD_RELOC_PPC_TOC16:
if (fixp->fx_pcrel)
as_bad_where (fixp->fx_file, fixp->fx_line,
"cannot emit PC relative %s relocation%s%s",
bfd_get_reloc_code_name (fixp->fx_r_type),
fixp->fx_addsy != NULL ? " against " : "",
(fixp->fx_addsy != NULL
? S_GET_NAME (fixp->fx_addsy)
: ""));
{
if (fixp->fx_addsy != NULL)
as_bad_where (fixp->fx_file, fixp->fx_line,
_("cannot emit PC relative %s relocation against %s"),
bfd_get_reloc_code_name (fixp->fx_r_type),
S_GET_NAME (fixp->fx_addsy));
else
as_bad_where (fixp->fx_file, fixp->fx_line,
_("cannot emit PC relative %s relocation")
bfd_get_reloc_code_name (fixp->fx_r_type));
}
md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
value, 2);
@ -4877,12 +4920,12 @@ md_apply_fix3 (fixp, valuep, seg)
insn = bfd_getl32 ((unsigned char *) where);
if ((value & 3) != 0)
as_bad_where (fixp->fx_file, fixp->fx_line,
"must branch to an address a multiple of 4");
_("must branch to an address a multiple of 4"));
if ((offsetT) value < -0x40000000
|| (offsetT) value >= 0x40000000)
as_bad_where (fixp->fx_file, fixp->fx_line,
"@local or @plt branch destination is too far "
"away, %ld bytes",
_("@local or @plt branch destination is too far "
"away, %ld bytes"),
value);
insn = insn | (value & 0x03fffffc);
if (target_big_endian)
@ -4894,7 +4937,7 @@ md_apply_fix3 (fixp, valuep, seg)
default:
fprintf(stderr,
"Gas failure, reloc value %d\n", fixp->fx_r_type);
_("Gas failure, reloc value %d\n"), fixp->fx_r_type);
fflush(stderr);
abort ();
}
@ -4938,7 +4981,7 @@ tc_gen_reloc (seg, fixp)
if (reloc->howto == (reloc_howto_type *) NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"reloc %d not supported by object file format", (int)fixp->fx_r_type);
_("reloc %d not supported by object file format"), (int)fixp->fx_r_type);
return NULL;
}
reloc->addend = fixp->fx_addnumber;

View File

@ -1,5 +1,5 @@
/* tc-sh.c -- Assemble code for the Hitachi Super-H
Copyright (C) 1993, 94, 95, 96, 1997 Free Software Foundation.
Copyright (C) 1993, 94, 95, 96, 1997, 1998 Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@ -80,6 +80,10 @@ const pseudo_typeS md_pseudo_table[] =
int sh_relax; /* set if -relax seen */
/* Whether -small was seen. */
int sh_small;
const char EXP_CHARS[] = "eE";
/* Chars that mean this number is a floating point constant */
@ -262,6 +266,18 @@ parse_reg (src, mode, reg)
return 3;
}
if (src[0] == 's' && src[1] == 'g' && src[2] == 'r' && ! isalnum (src[3]))
{
*mode = A_SGR;
return 3;
}
if (src[0] == 'd' && src[1] == 'b' && src[2] == 'r' && ! isalnum (src[3]))
{
*mode = A_DBR;
return 3;
}
if (src[0] == 's' && src[1] == 'r' && ! isalnum (src[2]))
{
*mode = A_SR;
@ -327,6 +343,61 @@ parse_reg (src, mode, reg)
return 3;
}
}
if (src[0] == 'd' && src[1] == 'r')
{
if (src[2] == '1')
{
if (src[3] >= '0' && src[3] <= '4' && ! ((src[3] - '0') & 1)
&& ! isalnum (src[4]))
{
*mode = D_REG_N;
*reg = 10 + src[3] - '0';
return 4;
}
}
if (src[2] >= '0' && src[2] <= '8' && ! ((src[2] - '0') & 1)
&& ! isalnum (src[3]))
{
*mode = D_REG_N;
*reg = (src[2] - '0');
return 3;
}
}
if (src[0] == 'x' && src[1] == 'd')
{
if (src[2] == '1')
{
if (src[3] >= '0' && src[3] <= '4' && ! ((src[3] - '0') & 1)
&& ! isalnum (src[4]))
{
*mode = X_REG_N;
*reg = 11 + src[3] - '0';
return 4;
}
}
if (src[2] >= '0' && src[2] <= '8' && ! ((src[2] - '0') & 1)
&& ! isalnum (src[3]))
{
*mode = X_REG_N;
*reg = (src[2] - '0') + 1;
return 3;
}
}
if (src[0] == 'f' && src[1] == 'v')
{
if (src[2] == '1'&& src[3] == '2' && ! isalnum (src[4]))
{
*mode = V_REG_N;
*reg = 12;
return 4;
}
if ((src[2] == '0' || src[2] == '4' || src[2] == '8') && ! isalnum (src[3]))
{
*mode = V_REG_N;
*reg = (src[2] - '0');
return 3;
}
}
if (src[0] == 'f' && src[1] == 'p' && src[2] == 'u' && src[3] == 'l'
&& ! isalnum (src[4]))
{
@ -341,6 +412,13 @@ parse_reg (src, mode, reg)
return 5;
}
if (src[0] == 'x' && src[1] == 'm' && src[2] == 't' && src[3] == 'r'
&& src[4] == 'x' && ! isalnum (src[5]))
{
*mode = XMTRX_M4;
return 5;
}
return 0;
}
@ -371,7 +449,7 @@ parse_exp (s)
input_line_pointer = s;
expression (&immediate);
if (immediate.X_op == O_absent)
as_bad ("missing operand");
as_bad (_("missing operand"));
new = input_line_pointer;
input_line_pointer = save;
return new;
@ -414,7 +492,7 @@ parse_at (src, op)
len = parse_reg (src, &mode, &(op->reg));
if (mode != A_REG_N)
as_bad ("illegal register after @-");
as_bad (_("illegal register after @-"));
op->type = A_DEC_N;
src += len;
@ -430,7 +508,7 @@ parse_at (src, op)
src += len;
if (op->reg != 0)
{
as_bad ("must be @(r0,...)");
as_bad (_("must be @(r0,...)"));
}
if (src[0] == ',')
src++;
@ -446,7 +524,7 @@ parse_at (src, op)
}
else
{
as_bad ("syntax error in @(r0,...)");
as_bad (_("syntax error in @(r0,...)"));
}
}
else
@ -478,17 +556,17 @@ parse_at (src, op)
}
else
{
as_bad ("syntax error in @(disp,[Rn, gbr, pc])");
as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
}
}
else
{
as_bad ("syntax error in @(disp,[Rn, gbr, pc])");
as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
}
}
src += len;
if (src[0] != ')')
as_bad ("expecting )");
as_bad (_("expecting )"));
else
src++;
}
@ -497,7 +575,7 @@ parse_at (src, op)
src += parse_reg (src, &mode, &(op->reg));
if (mode != A_REG_N)
{
as_bad ("illegal register after @");
as_bad (_("illegal register after @"));
}
if (src[0] == '+')
{
@ -665,6 +743,9 @@ get_specific (opcode, operands)
case A_IND_R0_REG_N:
case A_DISP_REG_N:
case F_REG_N:
case D_REG_N:
case X_REG_N:
case V_REG_N:
case FPUL_N:
case FPSCR_N:
/* Opcode needs rn */
@ -672,11 +753,23 @@ get_specific (opcode, operands)
goto fail;
reg_n = user->reg;
break;
case FD_REG_N:
if (user->type != F_REG_N && user->type != D_REG_N)
goto fail;
reg_n = user->reg;
break;
case DX_REG_N:
if (user->type != D_REG_N && user->type != X_REG_N)
goto fail;
reg_n = user->reg;
break;
case A_GBR:
case A_SR:
case A_VBR:
case A_SSR:
case A_SPC:
case A_SGR:
case A_DBR:
if (user->type != arg)
goto fail;
break;
@ -700,6 +793,9 @@ get_specific (opcode, operands)
break;
case F_REG_M:
case D_REG_M:
case X_REG_M:
case V_REG_M:
case FPUL_M:
case FPSCR_M:
/* Opcode needs rn */
@ -707,9 +803,19 @@ get_specific (opcode, operands)
goto fail;
reg_m = user->reg;
break;
case DX_REG_M:
if (user->type != D_REG_N && user->type != X_REG_N)
goto fail;
reg_m = user->reg;
break;
case XMTRX_M4:
if (user->type != XMTRX_M4)
goto fail;
reg_m = 4;
break;
default:
printf ("unhandled %d\n", arg);
printf (_("unhandled %d\n"), arg);
goto fail;
}
}
@ -730,7 +836,7 @@ check (operand, low, high)
|| operand->X_add_number < low
|| operand->X_add_number > high)
{
as_bad ("operand must be absolute in range %d..%d", low, high);
as_bad (_("operand must be absolute in range %d..%d"), low, high);
}
return operand->X_add_number;
}
@ -816,6 +922,9 @@ build_Mytes (opcode, operand)
case REG_M:
nbuf[index] = reg_m;
break;
case REG_NM:
nbuf[index] = reg_n | (reg_m >> 2);
break;
case REG_B:
nbuf[index] = reg_b | 0x08;
break;
@ -847,7 +956,7 @@ build_Mytes (opcode, operand)
insert (output, BFD_RELOC_SH_PCRELIMM8BY2, 1);
break;
default:
printf ("failed for %d\n", i);
printf (_("failed for %d\n"), i);
}
}
}
@ -894,14 +1003,14 @@ md_assemble (str)
if (nlen == 0)
{
as_bad ("can't find opcode ");
as_bad (_("can't find opcode "));
}
opcode = (sh_opcode_info *) hash_find (opcode_hash_control, name);
if (opcode == NULL)
{
as_bad ("unknown opcode");
as_bad (_("unknown opcode"));
return;
}
@ -936,7 +1045,7 @@ md_assemble (str)
where[0] = 0x0;
where[1] = 0x0;
as_bad ("invalid operands for opcode");
as_bad (_("invalid operands for opcode"));
return;
}
@ -998,14 +1107,14 @@ void
DEFUN (tc_crawl_symbol_chain, (headers),
object_headers * headers)
{
printf ("call to tc_crawl_symbol_chain \n");
printf (_("call to tc_crawl_symbol_chain \n"));
}
void
DEFUN (tc_headers_hook, (headers),
object_headers * headers)
{
printf ("call to tc_headers_hook \n");
printf (_("call to tc_headers_hook \n"));
}
#endif
@ -1041,7 +1150,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "bad call to md_atof";
return _("bad call to md_atof");
}
t = atof_ieee (input_line_pointer, type, words);
@ -1082,13 +1191,13 @@ s_uses (ignore)
expressionS ex;
if (! sh_relax)
as_warn (".uses pseudo-op seen when not relaxing");
as_warn (_(".uses pseudo-op seen when not relaxing"));
expression (&ex);
if (ex.X_op != O_symbol || ex.X_add_number != 0)
{
as_bad ("bad .uses format");
as_bad (_("bad .uses format"));
ignore_rest_of_line ();
return;
}
@ -1102,10 +1211,12 @@ CONST char *md_shortopts = "";
struct option md_longopts[] = {
#define OPTION_RELAX (OPTION_MD_BASE)
#define OPTION_LITTLE (OPTION_MD_BASE+1)
#define OPTION_LITTLE (OPTION_MD_BASE + 1)
#define OPTION_SMALL (OPTION_LITTLE + 1)
{"relax", no_argument, NULL, OPTION_RELAX},
{"little", no_argument, NULL, OPTION_LITTLE},
{"small", no_argument, NULL, OPTION_SMALL},
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof(md_longopts);
@ -1120,11 +1231,16 @@ md_parse_option (c, arg)
case OPTION_RELAX:
sh_relax = 1;
break;
case OPTION_LITTLE:
shl = 1;
target_big_endian = 0;
break;
case OPTION_SMALL:
sh_small = 1;
break;
default:
return 0;
}
@ -1136,10 +1252,11 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, "\
fprintf(stream, _("\
SH options:\n\
-little generate little endian code\n\
-relax alter jump instructions for long displacements\n");
-relax alter jump instructions for long displacements\n\
-small align sections to 4 byte boundaries, not 16\n"));
}
int md_short_jump_size;
@ -1147,7 +1264,7 @@ int md_short_jump_size;
void
tc_Nout_fix_to_chars ()
{
printf ("call to tc_Nout_fix_to_chars \n");
printf (_("call to tc_Nout_fix_to_chars \n"));
abort ();
}
@ -1159,7 +1276,7 @@ md_create_short_jump (ptr, from_Nddr, to_Nddr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
void
@ -1169,7 +1286,7 @@ md_create_long_jump (ptr, from_Nddr, to_Nddr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
/* This struct is used to pass arguments to sh_count_relocs through
@ -1254,7 +1371,7 @@ sh_frob_section (abfd, sec, ignore)
|| S_IS_EXTERNAL (sym))
{
as_warn_where (fix->fx_file, fix->fx_line,
".uses does not refer to a local symbol in the same section");
_(".uses does not refer to a local symbol in the same section"));
continue;
}
@ -1273,7 +1390,7 @@ sh_frob_section (abfd, sec, ignore)
if (fscan == NULL)
{
as_warn_where (fix->fx_file, fix->fx_line,
"can't find fixup pointed to by .uses");
_("can't find fixup pointed to by .uses"));
continue;
}
@ -1296,7 +1413,7 @@ sh_frob_section (abfd, sec, ignore)
|| S_IS_EXTERNAL (sym))
{
as_warn_where (fix->fx_file, fix->fx_line,
".uses target does not refer to a local symbol in the same section");
_(".uses target does not refer to a local symbol in the same section"));
continue;
}
@ -1391,12 +1508,15 @@ md_convert_frag (headers, seg, fragP)
case C (UNCOND_JUMP, UNCOND32):
case C (UNCOND_JUMP, UNDEF_WORD_DISP):
if (fragP->fr_symbol == NULL)
as_bad ("at 0x%lx, displacement overflows 12-bit field",
as_bad (_("at 0x%lx, displacement overflows 12-bit field"),
(unsigned long) fragP->fr_address);
else
as_bad ("at 0x%lx, displacement to %sdefined symbol %s overflows 12-bit field",
else if (S_IS_DEFINED (fragP->fr_address))
as_bad (_("at 0x%lx, displacement to defined symbol %s overflows 12-bit field"),
(unsigned long) fragP->fr_address,
S_GET_NAME (fragP->fr_symbol));
else
as_bad (_("at 0x%lx, displacement to undefined symbol %s overflows 12-bit field"),
(unsigned long) fragP->fr_address,
S_IS_DEFINED (fragP->fr_symbol) ? "" : "un",
S_GET_NAME (fragP->fr_symbol));
#if 0 /* This code works, but generates poor code and the compiler
@ -1482,12 +1602,15 @@ md_convert_frag (headers, seg, fragP)
case C (COND_JUMP, COND32):
case C (COND_JUMP, UNDEF_WORD_DISP):
if (fragP->fr_symbol == NULL)
as_bad ("at 0x%lx, displacement overflows 8-bit field",
as_bad (_("at 0x%lx, displacement overflows 8-bit field"),
(unsigned long) fragP->fr_address);
else
as_bad ("at 0x%lx, displacement to %sdefined symbol %s overflows 8-bit field ",
else if (S_IS_DEFINED (fragP->fr_symbol))
as_bad (_("at 0x%lx, displacement to defined symbol %s overflows 8-bit field "),
(unsigned long) fragP->fr_address,
S_GET_NAME (fragP->fr_symbol));
else
as_bad (_("at 0x%lx, displacement to undefined symbol %s overflows 8-bit field "),
(unsigned long) fragP->fr_address,
S_IS_DEFINED (fragP->fr_symbol) ? "" : "un",
S_GET_NAME (fragP->fr_symbol));
#if 0 /* This code works, but generates poor code, and the compiler
@ -1539,7 +1662,7 @@ md_convert_frag (headers, seg, fragP)
if (donerelax && !sh_relax)
as_warn_where (fragP->fr_file, fragP->fr_line,
"overflow in branch to %s; converted into longer instruction sequence",
_("overflow in branch to %s; converted into longer instruction sequence"),
(fragP->fr_symbol != NULL
? S_GET_NAME (fragP->fr_symbol)
: ""));
@ -1614,7 +1737,7 @@ sh_cons_align (nbytes)
if (now_seg == absolute_section)
{
if ((abs_section_offset & ((1 << nalign) - 1)) != 0)
as_warn ("misaligned data");
as_warn (_("misaligned data"));
return;
}
@ -1642,7 +1765,7 @@ sh_handle_align (frag)
if (frag->fr_type == rs_align_code
&& frag->fr_next->fr_address - frag->fr_address - frag->fr_fix != 0)
as_warn_where (frag->fr_file, frag->fr_line, "misaligned data");
as_warn_where (frag->fr_file, frag->fr_line, _("misaligned data"));
}
/* This macro decides whether a particular reloc is an entry in a
@ -1656,6 +1779,7 @@ sh_handle_align (frag)
#define SWITCH_TABLE_CONS(fix) \
((fix)->fx_r_type == 0 \
&& ((fix)->fx_size == 2 \
|| (fix)->fx_size == 1 \
|| (fix)->fx_size == 4))
#endif
@ -1666,6 +1790,7 @@ sh_handle_align (frag)
&& S_GET_SEGMENT ((fix)->fx_subsy) == text_section \
&& ((fix)->fx_r_type == BFD_RELOC_32 \
|| (fix)->fx_r_type == BFD_RELOC_16 \
|| (fix)->fx_r_type == BFD_RELOC_8 \
|| SWITCH_TABLE_CONS (fix)))
/* See whether we need to force a relocation into the output file.
@ -1708,6 +1833,8 @@ md_apply_fix (fixP, val)
#ifdef BFD_ASSEMBLER
long val = *valp;
#endif
long max, min;
int shift;
#ifndef BFD_ASSEMBLER
if (fixP->fx_r_type == 0)
@ -1717,36 +1844,53 @@ md_apply_fix (fixP, val)
else if (fixP->fx_size == 4)
fixP->fx_r_type = BFD_RELOC_32;
else if (fixP->fx_size == 1)
fixP->fx_r_type = BFD_RELOC_SH_IMM8;
fixP->fx_r_type = BFD_RELOC_8;
else
abort ();
}
#endif
max = min = 0;
shift = 0;
switch (fixP->fx_r_type)
{
case BFD_RELOC_SH_IMM4:
max = 0xf;
*buf = (*buf & 0xf0) | (val & 0xf);
break;
case BFD_RELOC_SH_IMM4BY2:
max = 0xf;
shift = 1;
*buf = (*buf & 0xf0) | ((val >> 1) & 0xf);
break;
case BFD_RELOC_SH_IMM4BY4:
max = 0xf;
shift = 2;
*buf = (*buf & 0xf0) | ((val >> 2) & 0xf);
break;
case BFD_RELOC_SH_IMM8BY2:
max = 0xff;
shift = 1;
*buf = val >> 1;
break;
case BFD_RELOC_SH_IMM8BY4:
max = 0xff;
shift = 2;
*buf = val >> 2;
break;
case BFD_RELOC_8:
case BFD_RELOC_SH_IMM8:
/* Sometimes the 8 bit value is sign extended (e.g., add) and
sometimes it is not (e.g., and). We permit any 8 bit value.
Note that adding further restrictions may invalidate
reasonable looking assembly code, such as ``and -0x1,r0''. */
max = 0xff;
min = - 0xff;
*buf++ = val;
break;
@ -1766,28 +1910,28 @@ md_apply_fix (fixP, val)
variable val. */
val = (val + 2) / 4;
if (val & ~0xff)
as_bad_where (fixP->fx_file, fixP->fx_line, "pcrel too far");
as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
buf[lowbyte] = val;
break;
case BFD_RELOC_SH_PCRELIMM8BY2:
val /= 2;
if (val & ~0xff)
as_bad_where (fixP->fx_file, fixP->fx_line, "pcrel too far");
as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
buf[lowbyte] = val;
break;
case BFD_RELOC_SH_PCDISP8BY2:
val /= 2;
if (val < -0x80 || val > 0x7f)
as_bad_where (fixP->fx_file, fixP->fx_line, "pcrel too far");
as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
buf[lowbyte] = val;
break;
case BFD_RELOC_SH_PCDISP12BY2:
val /= 2;
if (val < -0x800 || val >= 0x7ff)
as_bad_where (fixP->fx_file, fixP->fx_line, "pcrel too far");
as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
buf[lowbyte] = val & 0xff;
buf[highbyte] |= (val >> 8) & 0xf;
break;
@ -1839,6 +1983,19 @@ md_apply_fix (fixP, val)
abort ();
}
if (shift != 0)
{
if ((val & ((1 << shift) - 1)) != 0)
as_bad_where (fixP->fx_file, fixP->fx_line, _("misaligned offset"));
if (val >= 0)
val >>= shift;
else
val = ((val >> shift)
| ((long) -1 & ~ ((long) -1 >> shift)));
}
if (max != 0 && (val < min || val > max))
as_bad_where (fixP->fx_file, fixP->fx_line, _("offset out of range"));
#ifdef BFD_ASSEMBLER
return 0;
#endif
@ -2000,6 +2157,7 @@ static const struct reloc_map coff_reloc_map[] =
{ BFD_RELOC_SH_IMM8BY4, R_SH_IMM8BY4 },
{ BFD_RELOC_SH_PCRELIMM8BY2, R_SH_PCRELIMM8BY2 },
{ BFD_RELOC_SH_PCRELIMM8BY4, R_SH_PCRELIMM8BY4 },
{ BFD_RELOC_8_PCREL, R_SH_SWITCH8 },
{ BFD_RELOC_SH_SWITCH16, R_SH_SWITCH16 },
{ BFD_RELOC_SH_SWITCH32, R_SH_SWITCH32 },
{ BFD_RELOC_SH_USES, R_SH_USES },
@ -2035,7 +2193,7 @@ sh_coff_reloc_mangle (seg, fix, intr, paddr)
break;
if (rm->bfd_reloc == BFD_RELOC_UNUSED)
as_bad_where (fix->fx_file, fix->fx_line,
"Can not represent %s relocation in this object file format",
_("Can not represent %s relocation in this object file format"),
bfd_get_reloc_code_name (fix->fx_r_type));
intr->r_type = rm->sh_reloc;
intr->r_offset = 0;
@ -2046,6 +2204,8 @@ sh_coff_reloc_mangle (seg, fix, intr, paddr)
if (fix->fx_r_type == BFD_RELOC_16)
intr->r_type = R_SH_SWITCH16;
else if (fix->fx_r_type == BFD_RELOC_8)
intr->r_type = R_SH_SWITCH8;
else if (fix->fx_r_type == BFD_RELOC_32)
intr->r_type = R_SH_SWITCH32;
else
@ -2146,6 +2306,8 @@ tc_gen_reloc (section, fixp)
rel->addend = rel->address - S_GET_VALUE (fixp->fx_subsy);
if (r_type == BFD_RELOC_16)
r_type = BFD_RELOC_SH_SWITCH16;
else if (r_type == BFD_RELOC_8)
r_type = BFD_RELOC_8_PCREL;
else if (r_type == BFD_RELOC_32)
r_type = BFD_RELOC_SH_SWITCH32;
else
@ -2166,7 +2328,7 @@ tc_gen_reloc (section, fixp)
if (rel->howto == NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"Cannot represent relocation type %s",
_("Cannot represent relocation type %s"),
bfd_get_reloc_code_name (r_type));
/* Set howto to a garbage value so that we can keep going. */
rel->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);

View File

@ -1,6 +1,5 @@
/* tc-sparc.c -- Assemble for the SPARC
Copyright (C) 1989, 90-96, 1997 Free Software Foundation, Inc.
Copyright (C) 1989, 90-96, 97, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
@ -26,7 +25,9 @@
#include "opcode/sparc.h"
#ifdef OBJ_ELF
#include "elf/sparc.h"
#endif
static struct sparc_arch *lookup_arch PARAMS ((char *));
static void init_default_arch PARAMS ((void));
@ -66,11 +67,16 @@ static enum sparc_opcode_arch_val max_architecture;
/* Either 32 or 64, selects file format. */
static int sparc_arch_size;
static enum { MM_TSO, MM_PSO, MM_RMO } sparc_memory_model = MM_RMO;
/* Initial (default) value, recorded separately in case a user option
changes the value before md_show_usage is called. */
static int default_arch_size;
#ifdef OBJ_ELF
/* The currently selected v9 memory model. Currently only used for
ELF. */
static enum { MM_TSO, MM_PSO, MM_RMO } sparc_memory_model = MM_RMO;
#endif
static int architecture_requested;
static int warn_on_bump;
@ -86,12 +92,15 @@ static int enforce_aligned_data;
extern int target_big_endian;
/* V9 has big and little endian data, but instructions are always big endian.
The sparclet has bi-endian support but both data and insns have the same
endianness. Global `target_big_endian' is used for data. The following
macro is used for instructions. */
/* V9 and 86x have big and little endian data, but instructions are always big
endian. The sparclet has bi-endian support but both data and insns have
the same endianness. Global `target_big_endian' is used for data.
The following macro is used for instructions. */
#ifndef INSN_BIG_ENDIAN
#define INSN_BIG_ENDIAN (target_big_endian \
|| default_arch_type == sparc86x \
|| SPARC_OPCODE_ARCH_V9_P (max_architecture))
#endif
/* handle of the OPCODE hash table */
static struct hash_control *op_hash;
@ -186,30 +195,38 @@ static void output_insn
for this use. That table is for opcodes only. This table is for opcodes
and file formats. */
enum sparc_arch_types {v6, v7, v8, sparclet, sparclite, sparc86x, v8plus,
v8plusa, v9, v9a, v9_64};
static struct sparc_arch {
char *name;
char *opcode_arch;
enum sparc_arch_types arch_type;
/* Default word size, as specified during configuration.
A value of zero means can't be used to specify default architecture. */
int default_arch_size;
/* Allowable arg to -A? */
int user_option_p;
} sparc_arch_table[] = {
{ "v6", "v6", 0, 1 },
{ "v7", "v7", 0, 1 },
{ "v8", "v8", 32, 1 },
{ "sparclet", "sparclet", 32, 1 },
{ "sparclite", "sparclite", 32, 1 },
{ "v8plus", "v9", 0, 1 },
{ "v8plusa", "v9a", 0, 1 },
{ "v9", "v9", 0, 1 },
{ "v9a", "v9a", 0, 1 },
{ "v6", "v6", v6, 0, 1 },
{ "v7", "v7", v7, 0, 1 },
{ "v8", "v8", v8, 32, 1 },
{ "sparclet", "sparclet", sparclet, 32, 1 },
{ "sparclite", "sparclite", sparclite, 32, 1 },
{ "sparc86x", "sparclite", sparc86x, 32, 1 },
{ "v8plus", "v9", v9, 0, 1 },
{ "v8plusa", "v9a", v9, 0, 1 },
{ "v9", "v9", v9, 0, 1 },
{ "v9a", "v9a", v9, 0, 1 },
/* This exists to allow configure.in/Makefile.in to pass one
value to specify both the default machine and default word size. */
{ "v9-64", "v9", 64, 0 },
{ NULL, NULL, 0 }
{ "v9-64", "v9", v9, 64, 0 },
{ NULL, NULL, v8, 0, 0 }
};
/* Variant of default_arch */
static enum sparc_arch_types default_arch_type;
static struct sparc_arch *
lookup_arch (name)
char *name;
@ -234,13 +251,14 @@ init_default_arch ()
if (sa == NULL
|| sa->default_arch_size == 0)
as_fatal ("Invalid default architecture, broken assembler.");
as_fatal (_("Invalid default architecture, broken assembler."));
max_architecture = sparc_opcode_lookup_arch (sa->opcode_arch);
if (max_architecture == SPARC_OPCODE_ARCH_BAD)
as_fatal ("Bad opcode table, broken assembler.");
as_fatal (_("Bad opcode table, broken assembler."));
default_arch_size = sparc_arch_size = sa->default_arch_size;
default_init_p = 1;
default_arch_type = sa->arch_type;
}
/* Called by TARGET_FORMAT. */
@ -397,7 +415,7 @@ md_parse_option (c, arg)
if (strcmp (arg, "v8plus") != 0
&& strcmp (arg, "v8plusa") != 0)
{
as_bad ("invalid architecture -xarch=%s", arg);
as_bad (_("invalid architecture -xarch=%s"), arg);
return 0;
}
@ -412,13 +430,13 @@ md_parse_option (c, arg)
if (sa == NULL
|| ! sa->user_option_p)
{
as_bad ("invalid architecture -A%s", arg);
as_bad (_("invalid architecture -A%s"), arg);
return 0;
}
opcode_arch = sparc_opcode_lookup_arch (sa->opcode_arch);
if (opcode_arch == SPARC_OPCODE_ARCH_BAD)
as_fatal ("Bad opcode table, broken assembler.");
as_fatal (_("Bad opcode table, broken assembler."));
max_architecture = opcode_arch;
architecture_requested = 1;
@ -436,6 +454,10 @@ md_parse_option (c, arg)
#ifdef SPARC_BIENDIAN
case OPTION_LITTLE_ENDIAN:
target_big_endian = 0;
if (default_arch_type != sparc86x
&& default_arch_type != sparclet
&& default_arch_type != v9)
as_fatal ("This target does not support -EL");
break;
case OPTION_BIG_ENDIAN:
target_big_endian = 1;
@ -470,7 +492,7 @@ md_parse_option (c, arg)
}
}
if (*l == NULL)
as_fatal ("No compiled in support for %d bit object file format",
as_fatal (_("No compiled in support for %d bit object file format"),
sparc_arch_size);
free (list);
}
@ -507,7 +529,7 @@ md_parse_option (c, arg)
case 'K':
if (strcmp (arg, "PIC") != 0)
as_warn ("Unrecognized option following -K");
as_warn (_("Unrecognized option following -K"));
else
sparc_pic_code = 1;
break;
@ -531,7 +553,7 @@ md_show_usage (stream)
if (! default_init_p)
init_default_arch ();
fprintf(stream, "SPARC options:\n");
fprintf(stream, _("SPARC options:\n"));
for (arch = &sparc_arch_table[0]; arch->name; arch++)
{
if (arch != &sparc_arch_table[0])
@ -539,39 +561,39 @@ md_show_usage (stream)
if (arch->user_option_p)
fprintf (stream, "-A%s", arch->name);
}
fprintf (stream, "\n-xarch=v8plus | -xarch=v8plusa\n");
fprintf (stream, "\
fprintf (stream, _("\n-xarch=v8plus | -xarch=v8plusa\n"));
fprintf (stream, _("\
specify variant of SPARC architecture\n\
-bump warn when assembler switches architectures\n\
-sparc ignored\n\
--enforce-aligned-data force .long, etc., to be aligned correctly\n");
--enforce-aligned-data force .long, etc., to be aligned correctly\n"));
#ifdef OBJ_AOUT
fprintf (stream, "\
-k generate PIC\n");
fprintf (stream, _("\
-k generate PIC\n"));
#endif
#ifdef OBJ_ELF
fprintf (stream, "\
fprintf (stream, _("\
-32 create 32 bit object file\n\
-64 create 64 bit object file\n");
fprintf (stream, "\
[default is %d]\n", default_arch_size);
fprintf (stream, "\
-64 create 64 bit object file\n"));
fprintf (stream, _("\
[default is %d]\n"), default_arch_size);
fprintf (stream, _("\
-TSO use Total Store Ordering\n\
-PSO use Partial Store Ordering\n\
-RMO use Relaxed Memory Ordering\n");
fprintf (stream, "\
[default is %s]\n", (default_arch_size == 64) ? "RMO" : "TSO");
fprintf (stream, "\
-RMO use Relaxed Memory Ordering\n"));
fprintf (stream, _("\
[default is %s]\n"), (default_arch_size == 64) ? "RMO" : "TSO");
fprintf (stream, _("\
-KPIC generate PIC\n\
-V print assembler version number\n\
-q ignored\n\
-Qy, -Qn ignored\n\
-s ignored\n");
-s ignored\n"));
#endif
#ifdef SPARC_BIENDIAN
fprintf (stream, "\
fprintf (stream, _("\
-EL generate code for a little endian machine\n\
-EB generate code for a big endian machine\n");
-EB generate code for a big endian machine\n"));
#endif
}
@ -649,13 +671,13 @@ md_begin ()
op_hash = hash_new ();
while (i < sparc_num_opcodes)
while (i < (unsigned int) sparc_num_opcodes)
{
const char *name = sparc_opcodes[i].name;
retval = hash_insert (op_hash, name, (PTR) &sparc_opcodes[i]);
if (retval != NULL)
{
fprintf (stderr, "internal error: can't hash `%s': %s\n",
fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
sparc_opcodes[i].name, retval);
lose = 1;
}
@ -663,18 +685,18 @@ md_begin ()
{
if (sparc_opcodes[i].match & sparc_opcodes[i].lose)
{
fprintf (stderr, "internal error: losing opcode: `%s' \"%s\"\n",
fprintf (stderr, _("internal error: losing opcode: `%s' \"%s\"\n"),
sparc_opcodes[i].name, sparc_opcodes[i].args);
lose = 1;
}
++i;
}
while (i < sparc_num_opcodes
while (i < (unsigned int) sparc_num_opcodes
&& !strcmp (sparc_opcodes[i].name, name));
}
if (lose)
as_fatal ("Broken assembler. No assembly attempted.");
as_fatal (_("Broken assembler. No assembly attempted."));
for (i = '0'; i < '8'; ++i)
octal[i] = 1;
@ -806,7 +828,7 @@ BSR (val, amount)
int amount;
{
if (sizeof (bfd_vma) <= 4 && amount >= 32)
as_fatal ("Support for 64-bit arithmetic not compiled in.");
as_fatal (_("Support for 64-bit arithmetic not compiled in."));
return val >> amount;
}
@ -861,7 +883,7 @@ md_assemble (str)
F_{UNBR,CONDBR,FBR} set is annullable. */
&& ((last_insn->flags & (F_UNBR | F_CONDBR | F_FBR)) == 0
|| (last_opcode & ANNUL) == 0))
as_warn ("FP branch in delay slot");
as_warn (_("FP branch in delay slot"));
/* SPARC before v9 requires a nop instruction between a floating
point instruction and a floating point branch. We insert one
@ -877,7 +899,7 @@ md_assemble (str)
nop_insn.opcode = NOP_INSN;
nop_insn.reloc = BFD_RELOC_NONE;
output_insn (insn, &nop_insn);
as_warn ("FP branch preceded by FP instruction; NOP inserted");
as_warn (_("FP branch preceded by FP instruction; NOP inserted"));
}
switch (special_case)
@ -897,9 +919,9 @@ md_assemble (str)
&& the_insn.exp.X_op == O_constant)
{
if (the_insn.exp.X_add_number < 0)
as_warn ("set: used with negative number");
else if (the_insn.exp.X_add_number > 0xffffffff)
as_warn ("set: number larger than 4294967295");
as_warn (_("set: used with negative number"));
else if (the_insn.exp.X_add_number > (offsetT) 0xffffffff)
as_warn (_("set: number larger than 4294967295"));
}
/* See if operand is absolute and small; skip sethi if so. */
@ -950,7 +972,7 @@ md_assemble (str)
/* The tmp reg should not be the dst reg. */
if (tmpreg == dstreg)
as_warn ("setx: temporary register same as destination register");
as_warn (_("setx: temporary register same as destination register"));
/* Reset X_add_number, we've extracted it as upper32/lower32.
Otherwise fixup_segment will complain about not being able to
@ -1095,7 +1117,7 @@ md_assemble (str)
}
default:
as_fatal ("failed special case insn sanity check");
as_fatal (_("failed special case insn sanity check"));
}
}
@ -1118,7 +1140,7 @@ sparc_ip (str, pinsn)
int comma = 0;
int v9_arg_p;
for (s = str; islower (*s) || (*s >= '0' && *s <= '3'); ++s)
for (s = str; islower ((unsigned char) *s) || (*s >= '0' && *s <= '3'); ++s)
;
switch (*s)
@ -1136,13 +1158,13 @@ sparc_ip (str, pinsn)
break;
default:
as_fatal ("Unknown opcode: `%s'", str);
as_fatal (_("Unknown opcode: `%s'"), str);
}
insn = (struct sparc_opcode *) hash_find (op_hash, str);
*pinsn = insn;
if (insn == NULL)
{
as_bad ("Unknown opcode: `%s'", str);
as_bad (_("Unknown opcode: `%s'"), str);
return;
}
if (comma)
@ -1180,7 +1202,7 @@ sparc_ip (str, pinsn)
if (! parse_keyword_arg (sparc_encode_membar, &s,
&mask))
{
error_message = ": invalid membar mask name";
error_message = _(": invalid membar mask name");
goto error;
}
kmask |= mask;
@ -1194,12 +1216,12 @@ sparc_ip (str, pinsn)
{
if (! parse_const_expr_arg (&s, &kmask))
{
error_message = ": invalid membar mask expression";
error_message = _(": invalid membar mask expression");
goto error;
}
if (kmask < 0 || kmask > 127)
{
error_message = ": invalid membar mask number";
error_message = _(": invalid membar mask number");
goto error;
}
}
@ -1217,7 +1239,7 @@ sparc_ip (str, pinsn)
{
if (! parse_keyword_arg (sparc_encode_prefetch, &s, &fcn))
{
error_message = ": invalid prefetch function name";
error_message = _(": invalid prefetch function name");
goto error;
}
}
@ -1225,12 +1247,12 @@ sparc_ip (str, pinsn)
{
if (! parse_const_expr_arg (&s, &fcn))
{
error_message = ": invalid prefetch function expression";
error_message = _(": invalid prefetch function expression");
goto error;
}
if (fcn < 0 || fcn > 31)
{
error_message = ": invalid prefetch function number";
error_message = _(": invalid prefetch function number");
goto error;
}
}
@ -1258,7 +1280,7 @@ sparc_ip (str, pinsn)
}
if (p->name[0] != s[0])
{
error_message = ": unrecognizable privileged register";
error_message = _(": unrecognizable privileged register");
goto error;
}
if (*args == '?')
@ -1270,7 +1292,7 @@ sparc_ip (str, pinsn)
}
else
{
error_message = ": unrecognizable privileged register";
error_message = _(": unrecognizable privileged register");
goto error;
}
@ -1294,12 +1316,12 @@ sparc_ip (str, pinsn)
}
if (p->name[0] != s[0])
{
error_message = ": unrecognizable v9a ancillary state register";
error_message = _(": unrecognizable v9a ancillary state register");
goto error;
}
if (*args == '/' && (p->regnum == 20 || p->regnum == 21))
{
error_message = ": rd on write only ancillary state register";
error_message = _(": rd on write only ancillary state register");
goto error;
}
if (*args == '/')
@ -1311,7 +1333,7 @@ sparc_ip (str, pinsn)
}
else
{
error_message = ": unrecognizable v9a ancillary state register";
error_message = _(": unrecognizable v9a ancillary state register");
goto error;
}
@ -1321,11 +1343,11 @@ sparc_ip (str, pinsn)
{
s += 4;
if (isdigit (*s))
if (isdigit ((unsigned char) *s))
{
long num = 0;
while (isdigit (*s))
while (isdigit ((unsigned char) *s))
{
num = num * 10 + *s - '0';
++s;
@ -1335,7 +1357,7 @@ sparc_ip (str, pinsn)
{
if (num < 16 || 31 < num)
{
error_message = ": asr number must be between 16 and 31";
error_message = _(": asr number must be between 16 and 31");
goto error;
}
}
@ -1343,7 +1365,7 @@ sparc_ip (str, pinsn)
{
if (num < 0 || 31 < num)
{
error_message = ": asr number must be between 0 and 31";
error_message = _(": asr number must be between 0 and 31");
goto error;
}
}
@ -1353,7 +1375,7 @@ sparc_ip (str, pinsn)
}
else
{
error_message = ": expecting %asrN";
error_message = _(": expecting %asrN");
goto error;
}
} /* if %asr */
@ -1529,9 +1551,9 @@ sparc_ip (str, pinsn)
break;
case '#': /* must be at least one digit */
if (isdigit (*s++))
if (isdigit ((unsigned char) *s++))
{
while (isdigit (*s))
while (isdigit ((unsigned char) *s))
{
++s;
}
@ -1550,10 +1572,10 @@ sparc_ip (str, pinsn)
case 'b': /* next operand is a coprocessor register */
case 'c':
case 'D':
if (*s++ == '%' && *s++ == 'c' && isdigit (*s))
if (*s++ == '%' && *s++ == 'c' && isdigit ((unsigned char) *s))
{
mask = *s++;
if (isdigit (*s))
if (isdigit ((unsigned char) *s))
{
mask = 10 * (mask - '0') + (*s++ - '0');
if (mask >= 32)
@ -1642,7 +1664,7 @@ sparc_ip (str, pinsn)
goto error;
case 'r': /* any register */
if (!isdigit (c = *s++))
if (!isdigit ((unsigned char) (c = *s++)))
{
goto error;
}
@ -1657,7 +1679,7 @@ sparc_ip (str, pinsn)
case '7':
case '8':
case '9':
if (isdigit (*s))
if (isdigit ((unsigned char) *s))
{
if ((c = 10 * (c - '0') + (*s++ - '0')) >= 32)
{
@ -1718,9 +1740,9 @@ sparc_ip (str, pinsn)
if (*s++ == '%'
&& ((format = *s) == 'f')
&& isdigit (*++s))
&& isdigit ((unsigned char) *++s))
{
for (mask = 0; isdigit (*s); ++s)
for (mask = 0; isdigit ((unsigned char) *s); ++s)
{
mask = 10 * mask + (*s - '0');
} /* read the number */
@ -1744,9 +1766,9 @@ sparc_ip (str, pinsn)
if (mask >= 64)
{
if (SPARC_OPCODE_ARCH_V9_P (max_architecture))
error_message = ": There are only 64 f registers; [0-63]";
error_message = _(": There are only 64 f registers; [0-63]");
else
error_message = ": There are only 32 f registers; [0-31]";
error_message = _(": There are only 32 f registers; [0-31]");
goto error;
} /* on error */
else if (mask >= 32)
@ -1758,7 +1780,7 @@ sparc_ip (str, pinsn)
}
else
{
error_message = ": There are only 32 f registers; [0-31]";
error_message = _(": There are only 32 f registers; [0-31]");
goto error;
}
}
@ -1891,7 +1913,7 @@ sparc_ip (str, pinsn)
for (s1 = s; *s1 && *s1 != ',' && *s1 != ']'; s1++) ;
if (s1 != s && isdigit (s1[-1]))
if (s1 != s && isdigit ((unsigned char) s1[-1]))
{
if (s1[-2] == '%' && s1[-3] == '+')
{
@ -1927,7 +1949,7 @@ sparc_ip (str, pinsn)
&& the_insn.reloc == BFD_RELOC_32_PCREL_S2
&& in_signed_range (the_insn.exp.X_add_number, 0x3fff))
{
error_message = ": PC-relative operand can't be a constant";
error_message = _(": PC-relative operand can't be a constant");
goto error;
}
@ -1960,7 +1982,7 @@ sparc_ip (str, pinsn)
{
if (! parse_keyword_arg (sparc_encode_asi, &s, &asi))
{
error_message = ": invalid ASI name";
error_message = _(": invalid ASI name");
goto error;
}
}
@ -1968,12 +1990,12 @@ sparc_ip (str, pinsn)
{
if (! parse_const_expr_arg (&s, &asi))
{
error_message = ": invalid ASI expression";
error_message = _(": invalid ASI expression");
goto error;
}
if (asi < 0 || asi > 255)
{
error_message = ": invalid ASI number";
error_message = _(": invalid ASI number");
goto error;
}
}
@ -2070,12 +2092,12 @@ sparc_ip (str, pinsn)
{
int n = e.X_add_number;
if (n != e.X_add_number || (n & ~0x1ff) != 0)
as_bad ("OPF immediate operand out of range (0-0x1ff)");
as_bad (_("OPF immediate operand out of range (0-0x1ff)"));
else
opcode |= e.X_add_number << 5;
}
else
as_bad ("non-immediate OPF operand, ignored");
as_bad (_("non-immediate OPF operand, ignored"));
s = input_line_pointer;
input_line_pointer = push;
continue;
@ -2094,7 +2116,7 @@ sparc_ip (str, pinsn)
int cpreg;
if (! parse_keyword_arg (sparc_encode_sparclet_cpreg, &s, &cpreg))
{
error_message = ": invalid cpreg name";
error_message = _(": invalid cpreg name");
goto error;
}
opcode |= (*args == 'U' ? RS1 (cpreg) : RD (cpreg));
@ -2102,7 +2124,7 @@ sparc_ip (str, pinsn)
}
default:
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
} /* switch on arg code */
/* Break out of for() loop. */
@ -2113,7 +2135,7 @@ sparc_ip (str, pinsn)
if (match == 0)
{
/* Args don't match. */
if (((unsigned) (&insn[1] - sparc_opcodes)) < sparc_num_opcodes
if (&insn[1] - sparc_opcodes < sparc_num_opcodes
&& (insn->name == insn[1].name
|| !strcmp (insn->name, insn[1].name)))
{
@ -2123,7 +2145,7 @@ sparc_ip (str, pinsn)
}
else
{
as_bad ("Illegal operands%s", error_message);
as_bad (_("Illegal operands%s"), error_message);
return;
}
}
@ -2152,7 +2174,7 @@ sparc_ip (str, pinsn)
if (warn_on_bump
&& needed_architecture > warn_after_architecture)
{
as_warn ("architecture bumped from \"%s\" to \"%s\" on \"%s\"",
as_warn (_("architecture bumped from \"%s\" to \"%s\" on \"%s\""),
sparc_opcode_archs[current_architecture].name,
sparc_opcode_archs[needed_architecture].name,
str);
@ -2188,8 +2210,8 @@ sparc_ip (str, pinsn)
++arch;
}
as_bad ("Architecture mismatch on \"%s\".", str);
as_tsktsk (" (Requires %s; requested architecture is %s.)",
as_bad (_("Architecture mismatch on \"%s\"."), str);
as_tsktsk (_(" (Requires %s; requested architecture is %s.)"),
required_archs,
sparc_opcode_archs[max_architecture].name);
return;
@ -2217,7 +2239,9 @@ parse_keyword_arg (lookup_fn, input_pointerP, valueP)
char c, *p, *q;
p = *input_pointerP;
for (q = p + (*p == '#' || *p == '%'); isalnum (*q) || *q == '_'; ++q)
for (q = p + (*p == '#' || *p == '%');
isalnum ((unsigned char) *q) || *q == '_';
++q)
continue;
c = *q;
*q = 0;
@ -2281,7 +2305,7 @@ get_expression (str)
&& seg != bss_section
&& seg != undefined_section)
{
the_insn.error = "bad segment";
the_insn.error = _("bad segment");
expr_end = input_line_pointer;
input_line_pointer = save_in;
return 1;
@ -2376,7 +2400,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_ATOF()";
return _("Bad call to MD_ATOF()");
}
t = atof_ieee (input_line_pointer, type, words);
@ -2533,31 +2557,36 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_11:
if (! in_signed_range (val, 0x7ff))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x7ff;
break;
case BFD_RELOC_SPARC_10:
if (! in_signed_range (val, 0x3ff))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x3ff;
break;
case BFD_RELOC_SPARC_7:
if (! in_bitfield_range (val, 0x7f))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x7f;
break;
case BFD_RELOC_SPARC_6:
if (! in_bitfield_range (val, 0x3f))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x3f;
break;
case BFD_RELOC_SPARC_5:
if (! in_bitfield_range (val, 0x1f))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x1f;
break;
@ -2565,7 +2594,8 @@ md_apply_fix3 (fixP, value, segment)
/* FIXME: simplify */
if (((val > 0) && (val & ~0x3fffc))
|| ((val < 0) && (~(val - 1) & ~0x3fffc)))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
/* FIXME: The +1 deserves a comment. */
val = (val >> 2) + 1;
insn |= ((val & 0xc000) << 6) | (val & 0x3fff);
@ -2575,7 +2605,8 @@ md_apply_fix3 (fixP, value, segment)
/* FIXME: simplify */
if (((val > 0) && (val & ~0x1ffffc))
|| ((val < 0) && (~(val - 1) & ~0x1ffffc)))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
/* FIXME: The +1 deserves a comment. */
val = (val >> 2) + 1;
insn |= val & 0x7ffff;
@ -2600,7 +2631,8 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC22:
if (val & ~0x003fffff)
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= (val & 0x3fffff);
break;
@ -2622,7 +2654,8 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC13:
if (! in_signed_range (val, 0x1fff))
as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow");
as_bad_where (fixP->fx_file, fixP->fx_line,
_("relocation overflow"));
insn |= val & 0x1fff;
break;
@ -2668,7 +2701,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_NONE:
default:
as_bad_where (fixP->fx_file, fixP->fx_line,
"bad or unhandled relocation type: 0x%02x",
_("bad or unhandled relocation type: 0x%02x"),
fixP->fx_r_type);
break;
}
@ -2734,6 +2767,7 @@ tc_gen_reloc (section, fixp)
break;
default:
abort ();
return NULL;
}
#if defined (OBJ_ELF) || defined (OBJ_AOUT)
@ -2784,7 +2818,7 @@ tc_gen_reloc (section, fixp)
if (reloc->howto == 0)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"internal error: can't export reloc type %d (`%s')",
_("internal error: can't export reloc type %d (`%s')"),
fixp->fx_r_type, bfd_get_reloc_code_name (code));
return 0;
}
@ -2893,7 +2927,7 @@ s_reserve (ignore)
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after name");
as_bad (_("Expected comma after name"));
ignore_rest_of_line ();
return;
}
@ -2902,7 +2936,7 @@ s_reserve (ignore)
if ((size = get_absolute_expression ()) < 0)
{
as_bad ("BSS length (%d.) <0! Ignored.", size);
as_bad (_("BSS length (%d.) <0! Ignored."), size);
ignore_rest_of_line ();
return;
} /* bad length */
@ -2914,7 +2948,7 @@ s_reserve (ignore)
if (strncmp (input_line_pointer, ",\"bss\"", 6) != 0
&& strncmp (input_line_pointer, ",\".bss\"", 7) != 0)
{
as_bad ("bad .reserve segment -- expected BSS segment");
as_bad (_("bad .reserve segment -- expected BSS segment"));
return;
}
@ -2931,7 +2965,7 @@ s_reserve (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer == '\n')
{
as_bad ("Missing alignment");
as_bad (_("Missing alignment"));
return;
}
@ -2940,13 +2974,13 @@ s_reserve (ignore)
if (align > max_alignment)
{
align = max_alignment;
as_warn ("Alignment too large: %d. assumed.", align);
as_warn (_("Alignment too large: %d. assumed."), align);
}
#endif
if (align < 0)
{
align = 0;
as_warn ("Alignment negative. 0 assumed.");
as_warn (_("Alignment negative. 0 assumed."));
}
record_alignment (bss_section, align);
@ -2956,7 +2990,7 @@ s_reserve (ignore)
if (align != 1)
{
as_bad ("Alignment not a power of 2");
as_bad (_("Alignment not a power of 2"));
ignore_rest_of_line ();
return;
} /* not a power of two */
@ -3025,14 +3059,14 @@ s_common (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after symbol-name");
as_bad (_("Expected comma after symbol-name"));
ignore_rest_of_line ();
return;
}
input_line_pointer++; /* skip ',' */
if ((temp = get_absolute_expression ()) < 0)
{
as_bad (".COMMon length (%d.) <0! Ignored.", temp);
as_bad (_(".COMMon length (%d.) <0! Ignored."), temp);
ignore_rest_of_line ();
return;
}
@ -3042,15 +3076,15 @@ s_common (ignore)
*p = c;
if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol");
as_bad (_("Ignoring attempt to re-define symbol"));
ignore_rest_of_line ();
return;
}
if (S_GET_VALUE (symbolP) != 0)
{
if (S_GET_VALUE (symbolP) != size)
if (S_GET_VALUE (symbolP) != (valueT) size)
{
as_warn ("Length of .comm \"%s\" is already %ld. Not changed to %d.",
as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."),
S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
}
}
@ -3064,7 +3098,7 @@ s_common (ignore)
know (symbolP->sy_frag == &zero_address_frag);
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after common length");
as_bad (_("Expected comma after common length"));
ignore_rest_of_line ();
return;
}
@ -3077,13 +3111,13 @@ s_common (ignore)
if (temp > max_alignment)
{
temp = max_alignment;
as_warn ("Common alignment too large: %d. assumed", temp);
as_warn (_("Common alignment too large: %d. assumed"), temp);
}
#endif
if (temp < 0)
{
temp = 0;
as_warn ("Common alignment negative; 0 assumed");
as_warn (_("Common alignment negative; 0 assumed"));
}
#ifdef OBJ_ELF
if (symbolP->local)
@ -3156,7 +3190,7 @@ s_common (ignore)
p++;
c = *p;
*p = '\0';
as_bad ("bad .common segment %s", input_line_pointer + 1);
as_bad (_("bad .common segment %s"), input_line_pointer + 1);
*p = c;
input_line_pointer = p;
ignore_rest_of_line ();
@ -3208,7 +3242,7 @@ s_seg (ignore)
subseg_set (data_section, 255); /* FIXME-SOMEDAY */
return;
}
as_bad ("Unknown segment type");
as_bad (_("Unknown segment type"));
demand_empty_rest_of_line ();
}
@ -3290,7 +3324,7 @@ sparc_cons_align (nbytes)
if (now_seg == absolute_section)
{
if ((abs_section_offset & ((1 << nalign) - 1)) != 0)
as_bad ("misaligned data");
as_bad (_("misaligned data"));
return;
}
@ -3309,7 +3343,7 @@ sparc_handle_align (fragp)
{
if (fragp->fr_type == rs_align_code && !fragp->fr_subtype
&& fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix != 0)
as_bad_where (fragp->fr_file, fragp->fr_line, "misaligned data");
as_bad_where (fragp->fr_file, fragp->fr_line, _("misaligned data"));
if (fragp->fr_type == rs_align_code && fragp->fr_subtype == 1024)
{
int count = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;

View File

@ -1,5 +1,5 @@
/* tc-sparc.h - Macros and type defines for the sparc.
Copyright (C) 1989, 90-96, 1997 Free Software Foundation, Inc.
Copyright (C) 1989, 90-96, 97, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -35,19 +35,23 @@ struct frag;
extern const char *sparc_target_format PARAMS ((void));
#define TARGET_FORMAT sparc_target_format ()
#if 0
#ifdef TE_SPARCAOUT
/* Bi-endian support may eventually be unconditional, but until things are
working well it's only provided for targets that need it. */
#define SPARC_BIENDIAN
#endif
#endif
/* Make it unconditional and check if -EL is valid after option parsing */
#define SPARC_BIENDIAN
#define WORKING_DOT_WORD
#define md_convert_frag(b,s,f) {as_fatal ("sparc convert_frag\n");}
#define md_create_long_jump(p,f,t,fr,s) as_fatal("sparc_create_long_jump")
#define md_create_short_jump(p,f,t,fr,s) as_fatal("sparc_create_short_jump")
#define md_convert_frag(b,s,f) {as_fatal (_("sparc convert_frag\n"));}
#define md_create_long_jump(p,f,t,fr,s) as_fatal(_("sparc_create_long_jump"))
#define md_create_short_jump(p,f,t,fr,s) as_fatal(_("sparc_create_short_jump"))
#define md_estimate_size_before_relax(f,s) \
(as_fatal("estimate_size_before_relax called"),1)
(as_fatal(_("estimate_size_before_relax called")),1)
#define LISTING_HEADER "SPARC GAS "

View File

@ -384,27 +384,27 @@ md_parse_option (c, arg)
switch (c)
{
case 'a':
as_warn ("The -a option doesn't exist. (Despite what the man page says!");
as_warn (_("The -a option doesn't exist. (Despite what the man page says!"));
break;
case 'd':
as_warn ("Displacement length %s ignored!", arg);
as_warn (_("Displacement length %s ignored!"), arg);
break;
case 'S':
as_warn ("SYMBOL TABLE not implemented");
as_warn (_("SYMBOL TABLE not implemented"));
break;
case 'T':
as_warn ("TOKEN TRACE not implemented");
as_warn (_("TOKEN TRACE not implemented"));
break;
case 't':
as_warn ("I don't need or use temp. file \"%s\".", arg);
as_warn (_("I don't need or use temp. file \"%s\"."), arg);
break;
case 'V':
as_warn ("I don't use an interpass file! -V ignored");
as_warn (_("I don't use an interpass file! -V ignored"));
break;
default:
@ -418,7 +418,7 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, "\
fprintf(stream, _("\
Tahoe options:\n\
-a ignored\n\
-d LENGTH ignored\n\
@ -426,7 +426,7 @@ Tahoe options:\n\
-S ignored\n\
-t FILE ignored\n\
-T ignored\n\
-V ignored\n");
-V ignored\n"));
}
/* The functions in this section take numbers in the machine format, and
@ -1072,7 +1072,7 @@ tip_op (optex, topP)
case 'l':
case 'L':
if (com_width)
as_warn ("Casting a branch displacement is bad form, and is ignored.");
as_warn (_("Casting a branch displacement is bad form, and is ignored."));
else
{
c = (isupper (*point) ? tolower (*point) : *point);
@ -1128,13 +1128,13 @@ tip_op (optex, topP)
}
if (ndx == -1)
{
op_bad = "Couldn't parse the [index] in this operand.";
op_bad = _("Couldn't parse the [index] in this operand.");
end = point; /* Force all the rest of the tests to fail. */
}
}
else
{
op_bad = "Couldn't find the opening '[' for the index of this operand.";
op_bad = _("Couldn't find the opening '[' for the index of this operand.");
end = point; /* Force all the rest of the tests to fail. */
}
}
@ -1174,7 +1174,7 @@ tip_op (optex, topP)
}
else
{
op_bad = "Couldn't find the opening '(' for the deref of this operand.";
op_bad = _("Couldn't find the opening '(' for the deref of this operand.");
end = point; /* Force all the rest of the tests to fail. */
}
}
@ -1184,7 +1184,7 @@ tip_op (optex, topP)
{
if (dec_inc != ' ')
{
op_bad = "Operand can't be both pre-inc and post-dec.";
op_bad = _("Operand can't be both pre-inc and post-dec.");
end = point;
}
else
@ -1214,7 +1214,7 @@ tip_op (optex, topP)
}
if (imreg != -1 && reg != -1)
op_bad = "I parsed 2 registers in this operand.";
op_bad = _("I parsed 2 registers in this operand.");
/*
* Evaluate whats left of the expression to see if it's valid.
@ -1264,19 +1264,19 @@ tip_op (optex, topP)
* then coding up a frag for this case will be easy.
*/
need_pass_2 = 1;
op_bad = "Can't relocate expression error.";
op_bad = _("Can't relocate expression error.");
break;
case O_big:
/* This is an error. Tahoe doesn't allow any expressions
bigger that a 32 bit long word. Any bigger has to be referenced
by address. */
op_bad = "Expression is too large for a 32 bits.";
op_bad = _("Expression is too large for a 32 bits.");
break;
}
if (*input_line_pointer != '\0')
{
op_bad = "Junk at end of expression.";
op_bad = _("Junk at end of expression.");
}
}
@ -1316,26 +1316,26 @@ tip_op (optex, topP)
mode = TAHOE_DIRECT_REG;
if (deferred || immediate || (dec_inc != ' ') ||
(reg != -1) || !really_none)
op_bad = "Syntax error in direct register mode.";
op_bad = _("Syntax error in direct register mode.");
else if (ndx != -1)
op_bad = "You can't index a register in direct register mode.";
op_bad = _("You can't index a register in direct register mode.");
else if (imreg == SP_REG && access == 'r')
op_bad =
"SP can't be the source operand with direct register addressing.";
_("SP can't be the source operand with direct register addressing.");
else if (access == 'a')
op_bad = "Can't take the address of a register.";
op_bad = _("Can't take the address of a register.");
else if (access == 'b')
op_bad = "Direct Register can't be used in a branch.";
op_bad = _("Direct Register can't be used in a branch.");
else if (width == 'q' && ((imreg % 2) || (imreg > 13)))
op_bad = "For quad access, the register must be even and < 14.";
op_bad = _("For quad access, the register must be even and < 14.");
else if (call_width)
op_bad = "You can't cast a direct register.";
op_bad = _("You can't cast a direct register.");
if (*op_bad == '\0')
{
/* No errors, check for warnings */
if (width == 'q' && imreg == 12)
as_warn ("Using reg 14 for quadwords can tromp the FP register.");
as_warn (_("Using reg 14 for quadwords can tromp the FP register."));
reg = imreg;
}
@ -1347,49 +1347,49 @@ tip_op (optex, topP)
/* -(SP) */
mode = TAHOE_AUTO_DEC;
if (deferred || immediate || !really_none)
op_bad = "Syntax error in auto-dec mode.";
op_bad = _("Syntax error in auto-dec mode.");
else if (ndx != -1)
op_bad = "You can't have an index auto dec mode.";
op_bad = _("You can't have an index auto dec mode.");
else if (access == 'r')
op_bad = "Auto dec mode cant be used for reading.";
op_bad = _("Auto dec mode cant be used for reading.");
else if (reg != SP_REG)
op_bad = "Auto dec only works of the SP register.";
op_bad = _("Auto dec only works of the SP register.");
else if (access == 'b')
op_bad = "Auto dec can't be used in a branch.";
op_bad = _("Auto dec can't be used in a branch.");
else if (width == 'q')
op_bad = "Auto dec won't work with quadwords.";
op_bad = _("Auto dec won't work with quadwords.");
/* We know: imm = -1, dec_inc != '-' */
}
else if (dec_inc == '+')
{
if (immediate || !really_none)
op_bad = "Syntax error in one of the auto-inc modes.";
op_bad = _("Syntax error in one of the auto-inc modes.");
else if (deferred)
{
/* *(SP)+ */
mode = TAHOE_AUTO_INC_DEFERRED;
if (reg != SP_REG)
op_bad = "Auto inc deferred only works of the SP register.";
op_bad = _("Auto inc deferred only works of the SP register.");
else if (ndx != -1)
op_bad = "You can't have an index auto inc deferred mode.";
op_bad = _("You can't have an index auto inc deferred mode.");
else if (access == 'b')
op_bad = "Auto inc can't be used in a branch.";
op_bad = _("Auto inc can't be used in a branch.");
}
else
{
/* (SP)+ */
mode = TAHOE_AUTO_INC;
if (access == 'm' || access == 'w')
op_bad = "You can't write to an auto inc register.";
op_bad = _("You can't write to an auto inc register.");
else if (reg != SP_REG)
op_bad = "Auto inc only works of the SP register.";
op_bad = _("Auto inc only works of the SP register.");
else if (access == 'b')
op_bad = "Auto inc can't be used in a branch.";
op_bad = _("Auto inc can't be used in a branch.");
else if (width == 'q')
op_bad = "Auto inc won't work with quadwords.";
op_bad = _("Auto inc won't work with quadwords.");
else if (ndx != -1)
op_bad = "You can't have an index in auto inc mode.";
op_bad = _("You can't have an index in auto inc mode.");
}
/* We know: imm = -1, dec_inc == ' ' */
@ -1397,13 +1397,13 @@ tip_op (optex, topP)
else if (reg != -1)
{
if ((ndx != -1) && (reg == SP_REG))
op_bad = "You can't index the sp register.";
op_bad = _("You can't index the sp register.");
if (deferred)
{
/* *<disp>(Rn) */
mode = TAHOE_REG_DISP_DEFERRED;
if (immediate)
op_bad = "Syntax error in register displaced mode.";
op_bad = _("Syntax error in register displaced mode.");
}
else if (really_none)
{
@ -1422,7 +1422,7 @@ tip_op (optex, topP)
else
{
if (really_none)
op_bad = "An offest is needed for this operand.";
op_bad = _("An offest is needed for this operand.");
if (deferred && immediate)
{
/* *$<ADDR> */
@ -1434,9 +1434,9 @@ tip_op (optex, topP)
/* $<disp> */
mode = TAHOE_IMMEDIATE;
if (ndx != -1)
op_bad = "You can't index a register in immediate mode.";
op_bad = _("You can't index a register in immediate mode.");
if (access == 'a')
op_bad = "Immediate access can't be used as an address.";
op_bad = _("Immediate access can't be used as an address.");
/* ponder the wisdom of a cast because it doesn't do any good. */
}
else if (deferred)
@ -1502,7 +1502,7 @@ tip (titP, instring)
/* Operation-code is ended with whitespace. */
if (p == instring)
{
titP->tit_error = "No operator";
titP->tit_error = _("No operator");
count = 0;
titP->tit_opcode = 0;
}
@ -1519,7 +1519,7 @@ tip (titP, instring)
*p = c; /* Restore char after op-code. */
if (twP == 0)
{
titP->tit_error = "Unknown operator";
titP->tit_error = _("Unknown operator");
count = 0;
titP->tit_opcode = 0;
}
@ -1547,7 +1547,7 @@ tip (titP, instring)
* past any one ',' that marks the end of this operand.
*/
if (!p[1])
as_fatal ("Compiler bug: ODD number of bytes in arg structure %s.",
as_fatal (_("Compiler bug: ODD number of bytes in arg structure %s."),
twP->args);
else if (*instring)
{
@ -1574,7 +1574,7 @@ tip (titP, instring)
count++; /* won another argument, may have an operr */
}
else
alloperr = "Not enough operands";
alloperr = _("Not enough operands");
}
/* Restore the pointer. */
input_line_pointer = save_input_line_pointer;
@ -1584,7 +1584,7 @@ tip (titP, instring)
if (*instring == ' ')
instring++; /* Skip whitespace. */
if (*instring)
alloperr = "Too many operands";
alloperr = _("Too many operands");
}
titP->tit_error = alloperr;
}
@ -1635,7 +1635,7 @@ md_assemble (instruction_string)
*/
if (*t.tit_error)
{
as_warn ("Ignoring statement due to \"%s\"", t.tit_error);
as_warn (_("Ignoring statement due to \"%s\""), t.tit_error);
}
else
{
@ -1730,7 +1730,7 @@ md_assemble (instruction_string)
opcodeP);
break;
default:
as_fatal ("Compliler bug: Got a case (%d) I wasn't expecting.",
as_fatal (_("Compliler bug: Got a case (%d) I wasn't expecting."),
operandP->top_width);
}
}
@ -1824,10 +1824,10 @@ md_assemble (instruction_string)
break;
case 'b':
case 'w':
as_warn ("Real branch displacements must be expressions.");
as_warn (_("Real branch displacements must be expressions."));
break;
default:
as_fatal ("Complier error: I got an unknown synthetic branch :%c",
as_fatal (_("Complier error: I got an unknown synthetic branch :%c"),
operandP->top_width);
break;
}
@ -1968,7 +1968,7 @@ md_assemble (instruction_string)
}
break;
default:
as_fatal ("Barf, bad mode %x\n", operandP->top_mode);
as_fatal (_("Barf, bad mode %x\n"), operandP->top_mode);
}
}
} /* for(operandP) */

View File

@ -1,5 +1,5 @@
/* tc-tic80.c -- Assemble for the TI TMS320C80 (MV)
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -22,9 +22,9 @@
#include "opcode/tic80.h"
#define internal_error(what) \
as_fatal("internal error:%s:%d: %s\n",__FILE__,__LINE__,what)
as_fatal(_("internal error:%s:%d: %s\n"),__FILE__,__LINE__,what)
#define internal_error_a(what,arg) \
as_fatal("internal error:%s:%d: %s %d\n",__FILE__,__LINE__,what,arg)
as_fatal(_("internal error:%s:%d: %s %d\n"),__FILE__,__LINE__,what,arg)
/* Generic assembler global variables which must be defined by all targets. */
@ -87,7 +87,7 @@ md_estimate_size_before_relax (fragP, segment_type)
fragS *fragP;
segT segment_type;
{
internal_error ("Relaxation is a luxury we can't afford");
internal_error (_("Relaxation is a luxury we can't afford"));
return (-1);
}
@ -138,7 +138,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "bad call to md_atof ()";
return _("bad call to md_atof ()");
}
t = atof_ieee (input_line_pointer, type, words);
@ -242,7 +242,7 @@ get_operands (exp)
}
else
{
as_bad ("':' not followed by 'm' or 's'");
as_bad (_("':' not followed by 'm' or 's'"));
}
numexp++;
continue;
@ -256,7 +256,7 @@ get_operands (exp)
{
if (++parens != 1)
{
as_bad ("paren nesting");
as_bad (_("paren nesting"));
}
p++;
continue;
@ -271,7 +271,7 @@ get_operands (exp)
/* Record that we have left a paren group and continue */
if (--parens < 0)
{
as_bad ("mismatched parenthesis");
as_bad (_("mismatched parenthesis"));
}
p++;
continue;
@ -284,11 +284,11 @@ get_operands (exp)
if (exp[numexp].X_op == O_illegal)
{
as_bad ("illegal operand");
as_bad (_("illegal operand"));
}
else if (exp[numexp].X_op == O_absent)
{
as_bad ("missing operand");
as_bad (_("missing operand"));
}
numexp++;
@ -464,7 +464,7 @@ find_opcode (opcode, myops)
case O_logical_or:
case O_max:
default:
internal_error_a ("unhandled expression type", X_op);
internal_error_a (_("unhandled expression type"), X_op);
}
}
if (!match)
@ -534,7 +534,7 @@ find_opcode (opcode, myops)
if (!match)
{
as_bad ("bad opcode or operands");
as_bad (_("bad opcode or operands"));
return (0);
}
@ -545,7 +545,7 @@ find_opcode (opcode, myops)
{
if ((tic80_operands[opcode->operands[i]].flags & TIC80_OPERAND_EVEN) &&
(myops[i].X_add_number & 1))
as_fatal ("Register number must be EVEN");
as_fatal (_("Register number must be EVEN"));
if (myops[i].X_op == O_register)
{
if (!(tic80_operands[opcode->operands[i]].flags & TIC80_OPERAND_REG))
@ -679,7 +679,7 @@ build_insn (opcode, opers)
}
else
{
internal_error ("symbol reloc that is not PC relative or 32 bits");
internal_error (_("symbol reloc that is not PC relative or 32 bits"));
}
break;
case O_absent:
@ -702,7 +702,7 @@ build_insn (opcode, opers)
}
else
{
internal_error_a ("unhandled operand modifier", opers[expi].X_add_number);
internal_error_a (_("unhandled operand modifier"), opers[expi].X_add_number);
}
break;
case O_big:
@ -743,7 +743,7 @@ build_insn (opcode, opers)
case O_logical_or:
case O_max:
default:
internal_error_a ("unhandled expression", X_op);
internal_error_a (_("unhandled expression"), X_op);
break;
}
}
@ -794,7 +794,7 @@ md_assemble (str)
/* Try to find this mnemonic in the hash table */
if ((opcode = (struct tic80_opcode *) hash_find (tic80_hash, str)) == NULL)
{
as_bad ("Invalid mnemonic: '%s'", str);
as_bad (_("Invalid mnemonic: '%s'"), str);
return;
}
@ -810,7 +810,7 @@ md_assemble (str)
opcode = find_opcode (opcode, myops);
if (opcode == NULL)
{
as_bad ("Invalid operands: '%s'", input_line_save);
as_bad (_("Invalid operands: '%s'"), input_line_save);
}
input_line_pointer = input_line_save;
@ -887,7 +887,7 @@ md_begin ()
valu = PDS_VALUE (pdsp) & ~TIC80_OPERAND_MASK;
break;
default:
internal_error_a ("unhandled predefined symbol bits", symtype);
internal_error_a (_("unhandled predefined symbol bits"), symtype);
break;
}
symbol_table_insert (symbol_create (PDS_NAME (pdsp), segment, valu,
@ -983,7 +983,7 @@ md_apply_fix (fixP, val)
if (overflow)
{
as_bad_where (fixP -> fx_file, fixP -> fx_line,
"PC offset 0x%lx outside range 0x%lx-0x%lx",
_("PC offset 0x%lx outside range 0x%lx-0x%lx"),
val, -65536L, 65532L);
}
else
@ -998,7 +998,7 @@ md_apply_fix (fixP, val)
md_number_to_chars (dest, (valueT) val, fixP -> fx_size);
break;
default:
internal_error_a ("unhandled relocation type in fixup", fixP -> fx_r_type);
internal_error_a (_("unhandled relocation type in fixup"), fixP -> fx_r_type);
break;
}
}
@ -1035,7 +1035,7 @@ md_convert_frag (headers, seg, fragP)
segT seg;
fragS *fragP;
{
internal_error ("md_convert_frag() not implemented yet");
internal_error (_("md_convert_frag() not implemented yet"));
abort ();
}

View File

@ -261,14 +261,14 @@ v850_comm (area)
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
as_bad ("Expected comma after symbol-name");
as_bad (_("Expected comma after symbol-name"));
ignore_rest_of_line ();
return;
}
input_line_pointer++; /* skip ',' */
if ((temp = get_absolute_expression ()) < 0)
{
as_bad (".COMMon length (%d.) <0! Ignored.", temp);
as_bad (_(".COMMon length (%d.) <0! Ignored."), temp);
ignore_rest_of_line ();
return;
}
@ -278,7 +278,7 @@ v850_comm (area)
*p = c;
if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
{
as_bad ("Ignoring attempt to re-define symbol");
as_bad (_("Ignoring attempt to re-define symbol"));
ignore_rest_of_line ();
return;
}
@ -286,7 +286,7 @@ v850_comm (area)
{
if (S_GET_VALUE (symbolP) != size)
{
as_warn ("Length of .comm \"%s\" is already %ld. Not changed to %d.",
as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."),
S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
}
}
@ -309,7 +309,7 @@ v850_comm (area)
if (temp < 0)
{
temp = 0;
as_warn ("Common alignment negative; 0 assumed");
as_warn (_("Common alignment negative; 0 assumed"));
}
}
if (symbolP->local)
@ -328,7 +328,7 @@ v850_comm (area)
for (align = 0; (temp & 1) == 0; temp >>= 1, ++align);
if (temp != 1)
{
as_bad ("Common alignment not a power of 2");
as_bad (_("Common alignment not a power of 2"));
ignore_rest_of_line ();
return;
}
@ -451,7 +451,7 @@ v850_comm (area)
p++;
c = *p;
*p = '\0';
as_bad ("bad .common segment %s", input_line_pointer + 1);
as_bad (_("bad .common segment %s"), input_line_pointer + 1);
*p = c;
input_line_pointer = p;
ignore_rest_of_line ();
@ -907,8 +907,8 @@ parse_register_list
case 0xfff8000f: regs = type2_regs; break;
case 0xfff8001f: regs = type3_regs; break;
default:
as_bad ("unknown operand shift: %x\n", operand->shift );
return "internal failure in parse_register_list";
as_bad (_("unknown operand shift: %x\n"), operand->shift );
return _("internal failure in parse_register_list");
}
skip_white_space();
@ -1003,26 +1003,26 @@ parse_register_list
if (i == 32)
{
return "illegal register included in list";
return _("illegal register included in list");
}
}
else if (system_register_name (& exp, true, true))
{
if (regs == type1_regs)
{
return "system registers cannot be included in list";
return _("system registers cannot be included in list");
}
else if (exp.X_add_number == 5)
{
if (regs == type2_regs)
return "PSW cannot be included in list";
return _("PSW cannot be included in list");
else
* insn |= 0x8;
}
else if (exp.X_add_number < 4)
* insn |= 0x80000;
else
return "High value system registers cannot be included in list";
return _("High value system registers cannot be included in list");
}
else if (* input_line_pointer == '}')
{
@ -1097,13 +1097,14 @@ void
md_show_usage (stream)
FILE * stream;
{
fprintf (stream, "V850 options:\n");
fprintf (stream, "\t-mwarn-signed-overflow Warn if signed immediate values overflow\n");
fprintf (stream, "\t-mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n");
fprintf (stream, "\t-mv850 The code is targeted at the v850\n");
fprintf (stream, _("V850 options:\n"));
fprintf (stream, _("\t-mwarn-signed-overflow Warn if signed immediate values overflow\n"));
fprintf (stream, _("\t-mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n"));
fprintf (stream, _("\t-mv850 The code is targeted at the v850\n"));
/* start-sanitize-v850e */
fprintf (stream, "\t-mv850e The code is targeted at the v850e\n");
fprintf (stream, "\t-mv850ea The code is targeted at the v850ea\n");
fprintf (stream, _("\t-mv850e The code is targeted at the v850e\n"));
fprintf (stream, _("\t-mv850ea The code is targeted at the v850ea\n"));
fprintf (stream, _("\t-mv850any The code is generic, despite any processor specific instructions\n"));
/* end-sanitize-v850e */
}
@ -1142,6 +1143,11 @@ md_parse_option (c, arg)
machine = bfd_mach_v850ea;
processor_mask = PROCESSOR_V850EA;
}
else if (strcmp (arg, "v850any") == 0)
{
machine = 0; /* Tell the world that this is for any v850 chip. */
processor_mask = PROCESSOR_V850EA; /* But support instructions for the extended versions. */
}
/* end-sanitize-v850e */
else
{
@ -1182,7 +1188,7 @@ md_atof (type, litp, sizep)
default:
*sizep = 0;
return "bad call to md_atof";
return _("bad call to md_atof");
}
t = atof_ieee (input_line_pointer, type, words);
@ -1300,7 +1306,7 @@ md_begin ()
processor_mask = PROCESSOR_V850;
}
else
as_bad ("Unable to determine default target processor from string: %s",
as_bad (_("Unable to determine default target processor from string: %s"),
TARGET_CPU);
v850_hash = hash_new();
@ -1381,7 +1387,7 @@ handle_ctoff (const struct v850_operand * operand)
if ( operand->bits != 6
|| operand->shift != 0)
{
as_bad ("ctoff() relocation used on an instruction which does not support it");
as_bad (_("ctoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
@ -1401,7 +1407,7 @@ handle_sdaoff (const struct v850_operand * operand)
if ( operand->bits != 16
|| operand->shift != 16)
{
as_bad ("sdaoff() relocation used on an instruction which does not support it");
as_bad (_("sdaoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
@ -1420,7 +1426,7 @@ handle_zdaoff (const struct v850_operand * operand)
if ( operand->bits != 16
|| operand->shift != 16)
{
as_bad ("zdaoff() relocation used on an instruction which does not support it");
as_bad (_("zdaoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
@ -1440,7 +1446,7 @@ handle_tdaoff (const struct v850_operand * operand)
if (operand->bits != 7)
{
as_bad ("tdaoff() relocation used on an instruction which does not support it");
as_bad (_("tdaoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
@ -1638,7 +1644,7 @@ md_assemble (str)
opcode = (struct v850_opcode *) hash_find (v850_hash, str);
if (opcode == NULL)
{
as_bad ("Unrecognized opcode: `%s'", str);
as_bad (_("Unrecognized opcode: `%s'"), str);
ignore_rest_of_line ();
return;
}
@ -1659,7 +1665,7 @@ md_assemble (str)
if ((opcode->processors & processor_mask) == 0)
{
errmsg = "Target processor does not support this instruction.";
errmsg = _("Target processor does not support this instruction.");
goto error;
}
@ -1750,7 +1756,7 @@ md_assemble (str)
case BFD_RELOC_32:
if ((operand->flags & V850E_IMMEDIATE32) == 0)
{
errmsg = "immediate operand is too large";
errmsg = _("immediate operand is too large");
goto error;
}
@ -1763,13 +1769,17 @@ md_assemble (str)
default:
fprintf (stderr, "reloc: %d\n", reloc);
as_bad ("AAARG -> unhandled constant reloc");
as_bad (_("AAARG -> unhandled constant reloc"));
break;
}
insn = v850_insert_operand (insn, operand, ex.X_add_number,
(char *) NULL, 0,
copy_of_instruction);
if (fc > MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
fixups[ fc ].exp = ex;
fixups[ fc ].opindex = * opindex_ptr;
fixups[ fc ].reloc = reloc;
fc++;
}
else
{
@ -1778,7 +1788,7 @@ md_assemble (str)
{
if ((operand->flags & V850E_IMMEDIATE32) == 0)
{
errmsg = "immediate operand is too large";
errmsg = _("immediate operand is too large");
goto error;
}
@ -1789,7 +1799,7 @@ md_assemble (str)
/* end-sanitize-v850e */
if (fc > MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[ fc ].exp = ex;
fixups[ fc ].opindex = * opindex_ptr;
@ -1805,12 +1815,12 @@ md_assemble (str)
{
if (!register_name (& ex))
{
errmsg = "invalid register name";
errmsg = _("invalid register name");
}
else if ((operand->flags & V850_NOT_R0)
&& ex.X_add_number == 0)
{
errmsg = "register r0 cannot be used here";
errmsg = _("register r0 cannot be used here");
/* Force an error message to be generated by
skipping over any following potential matches
@ -1826,7 +1836,7 @@ md_assemble (str)
/* end-sanitize-v850e */
))
{
errmsg = "invalid system register name";
errmsg = _("invalid system register name");
}
}
else if ((operand->flags & V850_OPERAND_EP) != 0)
@ -1839,7 +1849,7 @@ md_assemble (str)
/* Put things back the way we found them. */
*input_line_pointer = c;
input_line_pointer = start;
errmsg = "expected EP register";
errmsg = _("expected EP register");
goto error;
}
@ -1856,7 +1866,7 @@ md_assemble (str)
{
if (!cc_name (& ex))
{
errmsg = "invalid condition code name";
errmsg = _("invalid condition code name");
}
}
/* start-sanitize-v850e */
@ -1874,15 +1884,15 @@ md_assemble (str)
expression (& ex);
if (ex.X_op != O_constant)
errmsg = "constant expression expected";
errmsg = _("constant expression expected");
else if (ex.X_add_number & 0xffff0000)
{
if (ex.X_add_number & 0xffff)
errmsg = "constant too big to fit into instruction";
errmsg = _("constant too big to fit into instruction");
else if ((insn & 0x001fffc0) == 0x00130780)
ex.X_add_number >>= 16;
else
errmsg = "constant too big to fit into instruction";
errmsg = _("constant too big to fit into instruction");
}
extra_data_after_insn = true;
@ -1895,7 +1905,7 @@ md_assemble (str)
expression (& ex);
if (ex.X_op != O_constant)
errmsg = "constant expression expected";
errmsg = _("constant expression expected");
extra_data_after_insn = true;
extra_data_len = 4;
@ -1924,9 +1934,9 @@ md_assemble (str)
field is missing) then report this. */
if (opindex_ptr[1] != 0
&& (v850_operands [opindex_ptr [1]].flags & V850_OPERAND_REG))
errmsg = "syntax error: value is missing before the register name";
errmsg = _("syntax error: value is missing before the register name");
else
errmsg = "syntax error: register not expected";
errmsg = _("syntax error: register not expected");
}
}
else if (system_register_name (& ex, false
@ -1936,12 +1946,12 @@ md_assemble (str)
)
&& (operand->flags & V850_OPERAND_SRG) == 0)
{
errmsg = "syntax error: system register not expected";
errmsg = _("syntax error: system register not expected");
}
else if (cc_name (&ex)
&& (operand->flags & V850_OPERAND_CC) == 0)
{
errmsg = "syntax error: condition code not expected";
errmsg = _("syntax error: condition code not expected");
}
else
{
@ -1957,7 +1967,7 @@ md_assemble (str)
if (((insn & 0x07e0) == 0x0200)
&& ex.X_op == O_constant
&& (ex.X_add_number < (- (1 << (operand->bits - 1))) || ex.X_add_number > ((1 << operand->bits) - 1)))
errmsg = "immediate operand is too large";
errmsg = _("immediate operand is too large");
/* end-sanitize-v850e */
}
@ -1969,15 +1979,15 @@ md_assemble (str)
switch (ex.X_op)
{
case O_illegal:
errmsg = "illegal operand";
errmsg = _("illegal operand");
goto error;
case O_absent:
errmsg = "missing operand";
errmsg = _("missing operand");
goto error;
case O_register:
if ((operand->flags & (V850_OPERAND_REG | V850_OPERAND_SRG)) == 0)
{
errmsg = "invalid operand";
errmsg = _("invalid operand");
goto error;
}
insn = v850_insert_operand (insn, operand, ex.X_add_number,
@ -1994,7 +2004,7 @@ md_assemble (str)
default:
/* We need to generate a fixup for this expression. */
if (fc >= MAX_INSN_FIXUPS)
as_fatal ("too many fixups");
as_fatal (_("too many fixups"));
fixups[ fc ].exp = ex;
fixups[ fc ].opindex = * opindex_ptr;
@ -2046,7 +2056,7 @@ md_assemble (str)
++str;
if (*str != '\0')
as_bad ("junk at end of line: `%s'", str);
as_bad (_("junk at end of line: `%s'"), str);
input_line_pointer = str;
@ -2193,7 +2203,7 @@ tc_gen_reloc (seg, fixp)
if (reloc->howto == (reloc_howto_type *) NULL)
{
as_bad_where (fixp->fx_file, fixp->fx_line,
"reloc %d not supported by object file format",
_("reloc %d not supported by object file format"),
(int)fixp->fx_r_type);
xfree (reloc);
@ -2262,7 +2272,7 @@ md_apply_fix3 (fixp, valuep, seg)
{
/* We don't actually support subtracting a symbol. */
as_bad_where (fixp->fx_file, fixp->fx_line,
"expression too complex");
_("expression too complex"));
}
}
}
@ -2306,7 +2316,7 @@ md_apply_fix3 (fixp, valuep, seg)
/* fprintf (stderr, "bits: %d, insn: %x\n", operand->bits, insn); */
as_bad_where(fixp->fx_file, fixp->fx_line,
"unresolved expression that must be resolved");
_("unresolved expression that must be resolved"));
fixp->fx_done = 1;
return 1;
}

View File

@ -1,6 +1,6 @@
/* tc-w65.c -- Assemble code for the W65816
Copyright (C) 1995 Free Software Foundation.
Copyright (C) 1995, 1998 Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@ -133,7 +133,7 @@ s_longa (xmode)
input_line_pointer += 3;
}
else
as_bad ("need on or off.");
as_bad (_("need on or off."));
demand_empty_rest_of_line ();
}
void
@ -254,7 +254,7 @@ parse_exp (s, bytes)
input_line_pointer = s;
w65_expression (&immediate, bytes);
if (immediate.X_op == O_absent)
as_bad ("missing operand");
as_bad (_("missing operand"));
new = input_line_pointer;
input_line_pointer = save;
return new;
@ -318,7 +318,7 @@ get_operands (info, ptr)
}
else
{
as_bad ("syntax error after <exp");
as_bad (_("syntax error after <exp"));
}
}
else
@ -361,7 +361,7 @@ get_operands (info, ptr)
}
else
{
as_bad ("syntax error after <exp");
as_bad (_("syntax error after <exp"));
}
}
else
@ -756,7 +756,7 @@ md_assemble (str)
if (opcode == NULL)
{
as_bad ("unknown opcode");
as_bad (_("unknown opcode"));
return;
}
@ -776,7 +776,7 @@ md_assemble (str)
where[0] = 0x0;
where[1] = 0x0;
as_bad ("invalid operands for opcode");
as_bad (_("invalid operands for opcode"));
return;
}
@ -788,7 +788,7 @@ void
DEFUN (tc_crawl_symbol_chain, (headers),
object_headers * headers)
{
printf ("call to tc_crawl_symbol_chain \n");
printf (_("call to tc_crawl_symbol_chain \n"));
}
symbolS *
@ -802,7 +802,7 @@ void
DEFUN (tc_headers_hook, (headers),
object_headers * headers)
{
printf ("call to tc_headers_hook \n");
printf (_("call to tc_headers_hook \n"));
}
/* Various routines to kill one day */
@ -853,7 +853,7 @@ md_atof (type, litP, sizeP)
default:
*sizeP = 0;
return "Bad call to MD_NTOF()";
return _("Bad call to MD_NTOF()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
@ -882,7 +882,7 @@ int md_short_jump_size;
void
tc_Nout_fix_to_chars ()
{
printf ("call to tc_Nout_fix_to_chars \n");
printf (_("call to tc_Nout_fix_to_chars \n"));
abort ();
}
@ -894,7 +894,7 @@ md_create_short_jump (ptr, from_Nddr, to_Nddr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}
void
@ -904,7 +904,7 @@ md_create_long_jump (ptr, from_Nddr, to_Nddr, frag, to_symbol)
fragS *frag;
symbolS *to_symbol;
{
as_fatal ("failed sanity check.");
as_fatal (_("failed sanity check."));
}

1876
gas/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -625,6 +625,9 @@ AC_PROG_CC
AC_PROG_YACC
AM_PROG_LEX
ALL_LINGUAS=
CY_GNU_GETTEXT
AM_MAINTAINER_MODE
AM_CYGWIN32
AM_EXEEXT
@ -700,7 +703,7 @@ dnl the build directory which include the right .h file. Make sure
dnl the old symlinks don't exist, so that a reconfigure in an existing
dnl directory behaves reasonably.
AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in po/Makefile.in:po/Make-in,
[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
@ -708,7 +711,9 @@ AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
case ${target_cpu_type} in
m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
esac],
esac
sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
[target_cpu_type=${target_cpu_type}
obj_format=${obj_format}
te_file=${te_file}])

View File

@ -1,5 +1,5 @@
/* ECOFF debugging support.
Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file was put together by Ian Lance Taylor <ian@cygnus.com>. A
good deal of it comes directly from mips-tfile.c, by Michael
@ -768,13 +768,24 @@ enum aux_type {
If PAGE_SIZE is > 4096, the string length in the shash_t structure
can't be represented (assuming there are strings > 4096 bytes). */
/* FIXME: Yes, there can be such strings while emitting C++ class debug
info. Templates are the offender here, the test case in question
having a mangled class name of
t7rb_tree4Z4xkeyZt4pair2ZC4xkeyZt7xsocket1Z4UserZt9select1st2Zt4pair\
2ZC4xkeyZt7xsocket1Z4UserZ4xkeyZt4less1Z4xkey
Repeat that a couple dozen times while listing the class members and
you've got strings over 4k. Hack around this for now by increasing
the page size. A proper solution would abandon this structure scheme
certainly for very large strings, and possibly entirely. */
#ifndef PAGE_SIZE
#define PAGE_SIZE 4096 /* size of varray pages */
#define PAGE_SIZE (8*1024) /* size of varray pages */
#endif
#define PAGE_USIZE ((unsigned long) PAGE_SIZE)
#ifndef MAX_CLUSTER_PAGES /* # pages to get from system */
#define MAX_CLUSTER_PAGES 63
#endif
@ -1482,7 +1493,6 @@ static forward_t *allocate_forward PARAMS ((void));
static thead_t *allocate_thead PARAMS ((void));
static void free_thead PARAMS ((thead_t *ptr));
static lineno_list_t *allocate_lineno_list PARAMS ((void));
static void generate_ecoff_stab PARAMS ((int, const char *, int, int, int));
/* This function should be called when the assembler starts up. */
@ -1560,7 +1570,7 @@ add_string (vp, hash_tbl, str, ret_hash)
register shash_t *hash_ptr;
if (len >= PAGE_USIZE)
as_fatal ("String too big (%lu bytes)", len);
as_fatal (_("String too big (%lu bytes)"), len);
hash_ptr = (shash_t *) hash_find (hash_tbl, str);
if (hash_ptr == (shash_t *) NULL)
@ -1586,7 +1596,7 @@ add_string (vp, hash_tbl, str, ret_hash)
err = hash_insert (hash_tbl, str, (char *) hash_ptr);
if (err)
as_fatal ("Inserting \"%s\" into string hash table: %s",
as_fatal (_("Inserting \"%s\" into string hash table: %s"),
str, err);
}
@ -1618,7 +1628,7 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
shash_t *hash_ptr = (shash_t *) NULL;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
vp = &cur_file_ptr->symbols;
@ -1705,7 +1715,7 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
case st_End:
pscope = cur_file_ptr->cur_scope;
if (pscope == (scope_t *) NULL)
as_fatal ("too many st_End's");
as_fatal (_("too many st_End's"));
else
{
st_t begin_type = (st_t) pscope->lsym->ecoff_sym.asym.st;
@ -1811,7 +1821,7 @@ add_aux_sym_symint (aux_word)
register aux_t *aux_ptr;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
vp = &cur_file_ptr->aux_syms;
@ -1837,7 +1847,7 @@ add_aux_sym_rndx (file_index, sym_index)
register aux_t *aux_ptr;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
vp = &cur_file_ptr->aux_syms;
@ -1869,7 +1879,7 @@ add_aux_sym_tir (t, state, hash_tbl)
AUXU aux;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
vp = &cur_file_ptr->aux_syms;
@ -2025,7 +2035,7 @@ get_tag (tag, sym, basic_type)
tag_t *tag_ptr;
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
hash_ptr = (shash_t *) hash_find (tag_hash, tag);
@ -2051,7 +2061,7 @@ get_tag (tag, sym, basic_type)
hash_ptr = allocate_shash ();
err = hash_insert (tag_hash, perm, (char *) hash_ptr);
if (err)
as_fatal ("Inserting \"%s\" into tag hash table: %s",
as_fatal (_("Inserting \"%s\" into tag hash table: %s"),
tag, err);
hash_ptr->string = perm;
}
@ -2139,7 +2149,7 @@ add_procedure (func)
#endif
if (cur_file_ptr == (efdr_t *) NULL)
as_fatal ("no current file pointer");
as_fatal (_("no current file pointer"));
vp = &cur_file_ptr->procs;
@ -2211,7 +2221,7 @@ add_file (file_name, indx, fake)
char *file;
if (first_file != (efdr_t *) NULL)
as_fatal ("fake .file after real one");
as_fatal (_("fake .file after real one"));
as_where (&file, (unsigned int *) NULL);
file_name = (const char *) file;
@ -2299,7 +2309,7 @@ add_file (file_name, indx, fake)
(shash_t **)0);
if (strlen (file_name) > PAGE_USIZE - 2)
as_fatal ("Filename goes over one page boundary.");
as_fatal (_("Filename goes over one page boundary."));
/* Push the start of the filename. We assume that the filename
will be stored at string offset 1. */
@ -2434,14 +2444,14 @@ ecoff_directive_begin (ignore)
if (cur_file_ptr == (efdr_t *) NULL)
{
as_warn (".begin directive without a preceding .file directive");
as_warn (_(".begin directive without a preceding .file directive"));
demand_empty_rest_of_line ();
return;
}
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".begin directive without a preceding .ent directive");
as_warn (_(".begin directive without a preceding .ent directive"));
demand_empty_rest_of_line ();
return;
}
@ -2473,14 +2483,14 @@ ecoff_directive_bend (ignore)
if (cur_file_ptr == (efdr_t *) NULL)
{
as_warn (".bend directive without a preceding .file directive");
as_warn (_(".bend directive without a preceding .file directive"));
demand_empty_rest_of_line ();
return;
}
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".bend directive without a preceding .ent directive");
as_warn (_(".bend directive without a preceding .ent directive"));
demand_empty_rest_of_line ();
return;
}
@ -2493,7 +2503,7 @@ ecoff_directive_bend (ignore)
the symbol. */
endsym = symbol_find (name);
if (endsym == (symbolS *) NULL)
as_warn (".bend directive names unknown symbol");
as_warn (_(".bend directive names unknown symbol"));
else
(void) add_ecoff_symbol ((const char *) NULL, st_End, sc_Text, endsym,
(bfd_vma) 0, (symint_t) 0, (symint_t) 0);
@ -2537,9 +2547,9 @@ ecoff_directive_def (ignore)
name_end = get_symbol_end ();
if (coff_sym_name != (char *) NULL)
as_warn (".def pseudo-op used inside of .def/.endef; ignored");
as_warn (_(".def pseudo-op used inside of .def/.endef; ignored"));
else if (*name == '\0')
as_warn ("Empty symbol name in .def; ignored");
as_warn (_("Empty symbol name in .def; ignored"));
else
{
if (coff_sym_name != (char *) NULL)
@ -2577,7 +2587,7 @@ ecoff_directive_dim (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".dim pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".dim pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2592,7 +2602,7 @@ ecoff_directive_dim (ignore)
{
if (*input_line_pointer != '\n'
&& *input_line_pointer != ';')
as_warn ("Badly formed .dim directive");
as_warn (_("Badly formed .dim directive"));
break;
}
}
@ -2605,7 +2615,7 @@ ecoff_directive_dim (ignore)
{
if (coff_type.num_dims >= N_TQ)
{
as_warn ("Too many .dim entries");
as_warn (_("Too many .dim entries"));
break;
}
coff_type.dimensions[coff_type.num_dims] = dimens[i];
@ -2626,7 +2636,7 @@ ecoff_directive_scl (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".scl pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".scl pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2652,7 +2662,7 @@ ecoff_directive_size (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".size pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".size pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2667,7 +2677,7 @@ ecoff_directive_size (ignore)
{
if (*input_line_pointer != '\n'
&& *input_line_pointer != ';')
as_warn ("Badly formed .size directive");
as_warn (_("Badly formed .size directive"));
break;
}
}
@ -2680,7 +2690,7 @@ ecoff_directive_size (ignore)
{
if (coff_type.num_sizes >= N_TQ)
{
as_warn ("Too many .size entries");
as_warn (_("Too many .size entries"));
break;
}
coff_type.sizes[coff_type.num_sizes] = sizes[i];
@ -2703,7 +2713,7 @@ ecoff_directive_type (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".type pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".type pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2721,7 +2731,7 @@ ecoff_directive_type (ignore)
/* FIXME: We could handle this by setting the continued bit.
There would still be a limit: the .type argument can not
be infinite. */
as_warn ("The type of %s is too complex; it will be simplified",
as_warn (_("The type of %s is too complex; it will be simplified"),
coff_sym_name);
break;
}
@ -2732,7 +2742,7 @@ ecoff_directive_type (ignore)
else if (ISARY (val))
*--tq_ptr = tq_Array;
else
as_fatal ("Unrecognized .type argument");
as_fatal (_("Unrecognized .type argument"));
val = DECREF (val);
}
@ -2771,7 +2781,7 @@ ecoff_directive_tag (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".tag pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".tag pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2798,7 +2808,7 @@ ecoff_directive_val (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".val pseudo-op used outside of .def/.endef; ignored");
as_warn (_(".val pseudo-op used outside of .def/.endef; ignored"));
demand_empty_rest_of_line ();
return;
}
@ -2806,7 +2816,7 @@ ecoff_directive_val (ignore)
expression (&exp);
if (exp.X_op != O_constant && exp.X_op != O_symbol)
{
as_bad (".val expression is too copmlex");
as_bad (_(".val expression is too copmlex"));
demand_empty_rest_of_line ();
return;
}
@ -2837,7 +2847,7 @@ ecoff_directive_endef (ignore)
if (coff_sym_name == (char *) NULL)
{
as_warn (".endef pseudo-op used before .def; ignored");
as_warn (_(".endef pseudo-op used before .def; ignored"));
return;
}
@ -2863,7 +2873,7 @@ ecoff_directive_endef (ignore)
if (coff_type.num_sizes != 1 || diff < 0)
{
as_warn ("Bad COFF debugging info");
as_warn (_("Bad COFF debugging info"));
return;
}
@ -2912,7 +2922,7 @@ ecoff_directive_endef (ignore)
{
if (coff_tag == (char *) NULL)
{
as_warn ("No tag specified for %s", name);
as_warn (_("No tag specified for %s"), name);
return;
}
@ -2944,7 +2954,7 @@ ecoff_directive_endef (ignore)
if (coff_type.num_sizes - coff_type.num_dims - coff_type.extra_sizes
!= 1)
{
as_warn ("Bad COFF debugging information");
as_warn (_("Bad COFF debugging information"));
return;
}
else
@ -3016,14 +3026,14 @@ ecoff_directive_end (ignore)
if (cur_file_ptr == (efdr_t *) NULL)
{
as_warn (".end directive without a preceding .file directive");
as_warn (_(".end directive without a preceding .file directive"));
demand_empty_rest_of_line ();
return;
}
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".end directive without a preceding .ent directive");
as_warn (_(".end directive without a preceding .ent directive"));
demand_empty_rest_of_line ();
return;
}
@ -3034,7 +3044,7 @@ ecoff_directive_end (ignore)
ch = *name;
if (! is_name_beginner (ch))
{
as_warn (".end directive has no name");
as_warn (_(".end directive has no name"));
*input_line_pointer = name_end;
demand_empty_rest_of_line ();
return;
@ -3046,7 +3056,7 @@ ecoff_directive_end (ignore)
symbol. */
ent = symbol_find (name);
if (ent == (symbolS *) NULL)
as_warn (".end directive names unknown symbol");
as_warn (_(".end directive names unknown symbol"));
else
(void) add_ecoff_symbol ((const char *) NULL, st_End, sc_Text,
symbol_new ("L0\001", now_seg,
@ -3075,7 +3085,7 @@ ecoff_directive_ent (ignore)
if (cur_proc_ptr != (proc_t *) NULL)
{
as_warn ("second .ent directive found before .end directive");
as_warn (_("second .ent directive found before .end directive"));
demand_empty_rest_of_line ();
return;
}
@ -3086,7 +3096,7 @@ ecoff_directive_ent (ignore)
ch = *name;
if (! is_name_beginner (ch))
{
as_warn (".ent directive has no name");
as_warn (_(".ent directive has no name"));
*input_line_pointer = name_end;
demand_empty_rest_of_line ();
return;
@ -3149,7 +3159,7 @@ ecoff_directive_file (ignore)
if (cur_proc_ptr != (proc_t *) NULL)
{
as_warn ("No way to handle .file within .ent/.end section");
as_warn (_("No way to handle .file within .ent/.end section"));
demand_empty_rest_of_line ();
return;
}
@ -3174,14 +3184,14 @@ ecoff_directive_fmask (ignore)
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".fmask outside of .ent");
as_warn (_(".fmask outside of .ent"));
demand_empty_rest_of_line ();
return;
}
if (get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .fmask directive");
as_warn (_("Bad .fmask directive"));
--input_line_pointer;
demand_empty_rest_of_line ();
return;
@ -3203,7 +3213,7 @@ ecoff_directive_frame (ignore)
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".frame outside of .ent");
as_warn (_(".frame outside of .ent"));
demand_empty_rest_of_line ();
return;
}
@ -3214,7 +3224,7 @@ ecoff_directive_frame (ignore)
if (*input_line_pointer++ != ','
|| get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .frame directive");
as_warn (_("Bad .frame directive"));
--input_line_pointer;
demand_empty_rest_of_line ();
return;
@ -3243,14 +3253,14 @@ ecoff_directive_mask (ignore)
if (cur_proc_ptr == (proc_t *) NULL)
{
as_warn (".mask outside of .ent");
as_warn (_(".mask outside of .ent"));
demand_empty_rest_of_line ();
return;
}
if (get_absolute_expression_and_terminator (&val) != ',')
{
as_warn ("Bad .mask directive");
as_warn (_("Bad .mask directive"));
--input_line_pointer;
demand_empty_rest_of_line ();
return;
@ -3273,14 +3283,14 @@ ecoff_directive_loc (ignore)
if (cur_file_ptr == (efdr_t *) NULL)
{
as_warn (".loc before .file");
as_warn (_(".loc before .file"));
demand_empty_rest_of_line ();
return;
}
if (now_seg != text_section)
{
as_warn (".loc outside of .text");
as_warn (_(".loc outside of .text"));
demand_empty_rest_of_line ();
return;
}
@ -3377,7 +3387,8 @@ mark_stabs (ignore)
}
/* Parse .weakext directives. */
#ifndef TC_MIPS
/* For TC_MIPS use the version in tc-mips.c. */
void
ecoff_directive_weakext (ignore)
int ignore;
@ -3398,7 +3409,7 @@ ecoff_directive_weakext (ignore)
{
if (S_IS_DEFINED (symbolP))
{
as_bad ("Ignoring attempt to redefine symbol `%s'.",
as_bad (_("Ignoring attempt to redefine symbol `%s'."),
S_GET_NAME (symbolP));
ignore_rest_of_line ();
return;
@ -3411,7 +3422,7 @@ ecoff_directive_weakext (ignore)
expression (&exp);
if (exp.X_op != O_symbol)
{
as_bad ("bad .weakext directive");
as_bad (_("bad .weakext directive"));
ignore_rest_of_line();
return;
}
@ -3423,6 +3434,7 @@ ecoff_directive_weakext (ignore)
demand_empty_rest_of_line ();
}
#endif /* not TC_MIPS */
/* Handle .stabs directives. The actual parsing routine is done by a
generic routine. This routine is called via OBJ_PROCESS_STAB.
@ -3479,7 +3491,7 @@ ecoff_stab (sec, what, string, type, other, desc)
/* We don't handle .stabd. */
if (what != 's' && what != 'n')
{
as_bad (".stab%c is not supported", what);
as_bad (_(".stab%c is not supported"), what);
return;
}
@ -3489,7 +3501,7 @@ ecoff_stab (sec, what, string, type, other, desc)
/* We ignore the other field. */
if (other != 0)
as_warn (".stab%c: ignoring non-zero other field", what);
as_warn (_(".stab%c: ignoring non-zero other field"), what);
/* Make sure we have a current file. */
if (cur_file_ptr == (efdr_t *) NULL)
@ -3523,7 +3535,7 @@ ecoff_stab (sec, what, string, type, other, desc)
dummy_symr.index = desc;
if (dummy_symr.index != desc)
{
as_warn ("Line number (%d) for .stab%c directive cannot fit in index field (20 bits)",
as_warn (_("Line number (%d) for .stab%c directive cannot fit in index field (20 bits)"),
desc, what);
return;
}
@ -3559,7 +3571,7 @@ ecoff_stab (sec, what, string, type, other, desc)
}
else if (! is_name_beginner ((unsigned char) *input_line_pointer))
{
as_warn ("Illegal .stab%c directive, bad character", what);
as_warn (_("Illegal .stab%c directive, bad character"), what);
return;
}
else
@ -3642,7 +3654,7 @@ ecoff_frob_symbol (sym)
if (sym->bsym->flags & BSF_WEAK)
{
if (S_IS_COMMON (sym))
as_bad ("Symbol `%s' can not be both weak and common",
as_bad (_("Symbol `%s' can not be both weak and common"),
S_GET_NAME (sym));
}
}
@ -4016,7 +4028,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
begin_sym = sym_ptr->proc_ptr->sym->as_sym;
if (S_GET_SEGMENT (as_sym)
!= S_GET_SEGMENT (begin_sym))
as_warn (".begin/.bend in different segments");
as_warn (_(".begin/.bend in different segments"));
sym_ptr->ecoff_sym.asym.value =
S_GET_VALUE (as_sym) - S_GET_VALUE (begin_sym);
}
@ -4203,7 +4215,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
know (begin_ptr->as_sym != (symbolS *) NULL);
if (S_GET_SEGMENT (as_sym)
!= S_GET_SEGMENT (begin_ptr->as_sym))
as_warn (".begin/.bend in different segments");
as_warn (_(".begin/.bend in different segments"));
sym_ptr->ecoff_sym.asym.value =
(S_GET_VALUE (as_sym)
- S_GET_VALUE (begin_ptr->as_sym));
@ -4228,7 +4240,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
begin_sym = sym_ptr->proc_ptr->sym->as_sym;
if (S_GET_SEGMENT (as_sym)
!= S_GET_SEGMENT (begin_sym))
as_warn (".begin/.bend in different segments");
as_warn (_(".begin/.bend in different segments"));
sym_ptr->ecoff_sym.asym.value =
S_GET_VALUE (as_sym) - S_GET_VALUE (begin_sym);
}
@ -4726,7 +4738,7 @@ ecoff_build_debug (hdr, bufp, backend)
cur_file_ptr->cur_scope = cur_file_ptr->cur_scope->prev;
if (! end_warning && ! cur_file_ptr->fake)
{
as_warn ("Missing .end or .bend at end of file");
as_warn (_("Missing .end or .bend at end of file"));
end_warning = 1;
}
}
@ -5217,110 +5229,13 @@ ecoff_set_gp_prolog_size (sz)
cur_proc_ptr->pdr.gp_prologue = sz;
if (cur_proc_ptr->pdr.gp_prologue != sz)
{
as_warn ("GP prologue size exceeds field size, using 0 instead");
as_warn (_("GP prologue size exceeds field size, using 0 instead"));
cur_proc_ptr->pdr.gp_prologue = 0;
}
cur_proc_ptr->pdr.gp_used = 1;
}
static void
generate_ecoff_stab (what, string, type, other, desc)
int what;
const char *string;
int type;
int other;
int desc;
{
efdr_t *save_file_ptr = cur_file_ptr;
symbolS *sym;
symint_t value;
st_t st;
sc_t sc;
symint_t indx;
localsym_t *hold = NULL;
/* We don't handle .stabd. */
if (what != 's' && what != 'n')
{
as_bad (".stab%c is not supported", what);
return;
}
/* We ignore the other field. */
if (other != 0)
as_warn (".stab%c: ignoring non-zero other field", what);
/* Make sure we have a current file. */
if (cur_file_ptr == (efdr_t *) NULL)
{
add_file ((const char *) NULL, 0, 1);
save_file_ptr = cur_file_ptr;
}
/* For stabs in ECOFF, the first symbol must be @stabs. This is a
signal to gdb. */
if (stabs_seen == 0)
mark_stabs (0);
/* Line number stabs are handled differently, since they have two
values, the line number and the address of the label. We use the
index field (aka desc) to hold the line number, and the value
field to hold the address. The symbol type is st_Label, which
should be different from the other stabs, so that gdb can
recognize it. */
if (type == N_SLINE)
{
SYMR dummy_symr;
#ifndef NO_LISTING
if (listing)
listing_source_line ((unsigned int) desc);
#endif
dummy_symr.index = desc;
if (dummy_symr.index != desc)
{
as_warn ("Line number (%d) for .stab%c directive cannot fit in index field (20 bits)",
desc, what);
return;
}
sym = symbol_find_or_make ((char *)string);
value = 0;
st = st_Label;
sc = sc_Text;
indx = desc;
}
else
{
#ifndef NO_LISTING
if (listing && (type == N_SO || type == N_SOL))
listing_source_file (string);
#endif
sym = symbol_find_or_make ((char *)string);
sc = sc_Nil;
st = st_Nil;
value = 0;
indx = ECOFF_MARK_STAB (type);
}
/* Don't store the stabs symbol we are creating as the type of the
ECOFF symbol. We want to compute the type of the ECOFF symbol
independently. */
if (sym != (symbolS *) NULL)
hold = sym->ecoff_symbol;
(void) add_ecoff_symbol (string, st, sc, sym, (bfd_vma) 0, value, indx);
if (sym != (symbolS *) NULL)
sym->ecoff_symbol = hold;
/* Restore normal file type. */
cur_file_ptr = save_file_ptr;
}
int
ecoff_no_current_file ()
{

View File

@ -67,6 +67,7 @@ extern char *malloc ();
#include "libiberty.h"
#include "sb.h"
#include "macro.h"
#include "asintl.h"
char *program_version = "1.2";
@ -475,7 +476,7 @@ hash_add_to_string_table (tab, key, name, again)
if (ptr->value.s.len)
{
if (!again)
ERROR ((stderr, "redefinition not allowed\n"));
ERROR ((stderr, _("redefinition not allowed\n")));
}
ptr->type = hash_string;
@ -549,7 +550,7 @@ checkconst (op, term)
if (term->add_symbol.len
|| term->sub_symbol.len)
{
ERROR ((stderr, "the %c operator cannot take non-absolute arguments.\n", op));
ERROR ((stderr, _("the %c operator cannot take non-absolute arguments.\n"), op));
}
}
@ -626,13 +627,13 @@ level_0 (idx, string, lhs)
{
sb acc;
sb_new (&acc);
ERROR ((stderr, "string where expression expected.\n"));
ERROR ((stderr, _("string where expression expected.\n")));
idx = getstring (idx, string, &acc);
sb_kill (&acc);
}
else
{
ERROR ((stderr, "can't find primary in expression.\n"));
ERROR ((stderr, _("can't find primary in expression.\n")));
idx++;
}
return sb_skip_white (idx, string);
@ -672,7 +673,7 @@ level_1 (idx, string, lhs)
idx++;
idx = level_5 (sb_skip_white (idx, string), string, lhs);
if (string->ptr[idx] != ')')
ERROR ((stderr, "misplaced closing parens.\n"));
ERROR ((stderr, _("misplaced closing parens.\n")));
else
idx++;
break;
@ -709,7 +710,7 @@ level_2 (idx, string, lhs)
checkconst ('/', lhs);
checkconst ('/', &rhs);
if (rhs.value == 0)
ERROR ((stderr, "attempt to divide by zero.\n"));
ERROR ((stderr, _("attempt to divide by zero.\n")));
else
lhs->value /= rhs.value;
break;
@ -741,7 +742,7 @@ level_3 (idx, string, lhs)
lhs->value += rhs.value;
if (lhs->add_symbol.name && rhs.add_symbol.name)
{
ERROR ((stderr, "can't add two relocatable expressions\n"));
ERROR ((stderr, _("can't add two relocatable expressions\n")));
}
/* change nn+symbol to symbol + nn */
if (rhs.add_symbol.name)
@ -946,7 +947,7 @@ include_buf (name, ptr, type, index)
{
sp++;
if (sp - include_stack >= MAX_INCLUDES)
FATAL ((stderr, "unreasonable nesting.\n"));
FATAL ((stderr, _("unreasonable nesting.\n")));
sb_new (&sp->name);
sb_add_sb (&sp->name, name);
sp->handle = 0;
@ -1024,7 +1025,7 @@ get_line (in)
{
if (online)
{
WARNING ((stderr, "End of file not at start of line.\n"));
WARNING ((stderr, _("End of file not at start of line.\n")));
if (copysource)
putc ('\n', outfile);
ch = '\n';
@ -1145,7 +1146,7 @@ change_base (idx, in, out)
base = 10;
break;
default:
ERROR ((stderr, "Illegal base character %c.\n", in->ptr[idx]));
ERROR ((stderr, _("Illegal base character %c.\n"), in->ptr[idx]));
base = 10;
break;
}
@ -1260,7 +1261,7 @@ do_radix (ptr)
radix = 16;
break;
default:
ERROR ((stderr, "radix is %c must be one of b, q, d or h", radix));
ERROR ((stderr, _("radix is %c must be one of b, q, d or h"), radix));
}
}
@ -1296,7 +1297,7 @@ get_opsize (idx, in, size)
case '\t':
break;
default:
ERROR ((stderr, "size must be one of b, w or l, is %c.\n", in->ptr[idx]));
ERROR ((stderr, _("size must be one of b, w or l, is %c.\n"), in->ptr[idx]));
break;
}
idx++;
@ -1404,9 +1405,9 @@ do_datab (idx, in)
idx = get_opsize (idx, in, &opsize);
idx = exp_get_abs ("datab repeat must be constant.\n", idx, in, &repeat);
idx = exp_get_abs (_("datab repeat must be constant.\n"), idx, in, &repeat);
idx = sb_skip_comma (idx, in);
idx = exp_get_abs ("datab data must be absolute.\n", idx, in, &fill);
idx = exp_get_abs (_("datab data must be absolute.\n"), idx, in, &fill);
fprintf (outfile, ".fill\t%d,%d,%d\n", repeat, opsize, fill);
}
@ -1420,14 +1421,14 @@ do_align (idx, in)
{
int al, have_fill, fill;
idx = exp_get_abs ("align needs absolute expression.\n", idx, in, &al);
idx = exp_get_abs (_("align needs absolute expression.\n"), idx, in, &al);
idx = sb_skip_white (idx, in);
have_fill = 0;
fill = 0;
if (! eol (idx, in))
{
idx = sb_skip_comma (idx, in);
idx = exp_get_abs (".align needs absolute fill value.\n", idx, in,
idx = exp_get_abs (_(".align needs absolute fill value.\n"), idx, in,
&fill);
have_fill = 1;
}
@ -1435,7 +1436,7 @@ do_align (idx, in)
if (al != 1
&& al != 2
&& al != 4)
WARNING ((stderr, "alignment must be one of 1, 2 or 4.\n"));
WARNING ((stderr, _("alignment must be one of 1, 2 or 4.\n")));
fprintf (outfile, ".align %d", al);
if (have_fill)
@ -1460,7 +1461,7 @@ do_res (idx, in, type)
idx = sb_skip_white (idx, in);
if (in->ptr[idx] == ',')
idx++;
idx = exp_get_abs ("res needs absolute expression for fill count.\n", idx, in, &count);
idx = exp_get_abs (_("res needs absolute expression for fill count.\n"), idx, in, &count);
if (type == 'c' || type == 'z')
count++;
@ -1540,13 +1541,13 @@ do_form (idx, in)
if (strncasecmp (in->ptr + idx, "LIN=", 4) == 0)
{
idx += 4;
idx = exp_get_abs ("form LIN= needs absolute expresssion.\n", idx, in, &lines);
idx = exp_get_abs (_("form LIN= needs absolute expresssion.\n"), idx, in, &lines);
}
if (strncasecmp (in->ptr + idx, "COL=", 4) == 0)
if (strncasecmp (in->ptr + idx, _("COL="), 4) == 0)
{
idx += 4;
idx = exp_get_abs ("form COL= needs absolute expresssion.\n", idx, in, &columns);
idx = exp_get_abs (_("form COL= needs absolute expresssion.\n"), idx, in, &columns);
}
idx++;
@ -1588,7 +1589,7 @@ get_any_string (idx, in, out, expand, pretend_quoted)
int val;
char buf[20];
/* Turns the next expression into a string */
idx = exp_get_abs ("% operator needs absolute expression",
idx = exp_get_abs (_("% operator needs absolute expression"),
idx + 1,
in,
&val);
@ -1650,7 +1651,7 @@ skip_openp (idx, in)
{
idx = sb_skip_white (idx, in);
if (in->ptr[idx] != '(')
ERROR ((stderr, "misplaced ( .\n"));
ERROR ((stderr, _("misplaced ( .\n")));
idx = sb_skip_white (idx + 1, in);
return idx;
}
@ -1665,7 +1666,7 @@ skip_closep (idx, in)
{
idx = sb_skip_white (idx, in);
if (in->ptr[idx] != ')')
ERROR ((stderr, "misplaced ).\n"));
ERROR ((stderr, _("misplaced ).\n")));
idx = sb_skip_white (idx + 1, in);
return idx;
}
@ -1719,7 +1720,7 @@ doinstr (idx, in, out)
idx = sb_skip_comma (idx, in);
if (isdigit ((unsigned char) in->ptr[idx]))
{
idx = exp_get_abs (".instr needs absolute expresson.\n", idx, in, &start);
idx = exp_get_abs (_(".instr needs absolute expresson.\n"), idx, in, &start);
}
else
{
@ -1757,9 +1758,9 @@ dosubstr (idx, in, out)
idx = skip_openp (idx, in);
idx = get_and_process (idx, in, &string);
idx = sb_skip_comma (idx, in);
idx = exp_get_abs ("need absolute position.\n", idx, in, &pos);
idx = exp_get_abs (_("need absolute position.\n"), idx, in, &pos);
idx = sb_skip_comma (idx, in);
idx = exp_get_abs ("need absolute length.\n", idx, in, &len);
idx = exp_get_abs (_("need absolute length.\n"), idx, in, &len);
idx = skip_closep (idx, in);
@ -2008,7 +2009,7 @@ process_file ()
}
if (!had_end && !mri)
WARNING ((stderr, "END missing from end of file.\n"));
WARNING ((stderr, _("END missing from end of file.\n")));
}
@ -2038,11 +2039,11 @@ do_assigna (idx, in)
sb_new (&tmp);
process_assigns (idx, in, &tmp);
idx = exp_get_abs (".ASSIGNA needs constant expression argument.\n", 0, &tmp, &val);
idx = exp_get_abs (_(".ASSIGNA needs constant expression argument.\n"), 0, &tmp, &val);
if (!label.len)
{
ERROR ((stderr, ".ASSIGNA without label.\n"));
ERROR ((stderr, _(".ASSIGNA without label.\n")));
}
else
{
@ -2067,7 +2068,7 @@ do_assignc (idx, in)
if (!label.len)
{
ERROR ((stderr, ".ASSIGNS without label.\n"));
ERROR ((stderr, _(".ASSIGNS without label.\n")));
}
else
{
@ -2134,7 +2135,7 @@ condass_lookup_name (inbuf, idx, out, warn)
{
if (warn)
{
WARNING ((stderr, "Can't find preprocessor variable %s.\n", sb_name (&condass_acc)));
WARNING ((stderr, _("Can't find preprocessor variable %s.\n"), sb_name (&condass_acc)));
}
else
{
@ -2199,7 +2200,7 @@ whatcond (idx, in, val)
}
if (cond == NEVER)
{
ERROR ((stderr, "Comparison operator must be one of EQ, NE, LT, LE, GT or GE.\n"));
ERROR ((stderr, _("Comparison operator must be one of EQ, NE, LT, LE, GT or GE.\n")));
cond = NEVER;
}
idx = sb_skip_white (idx + 2, in);
@ -2233,7 +2234,7 @@ istrue (idx, in)
if (cond != EQ && cond != NE)
{
ERROR ((stderr, "Comparison operator for strings must be EQ or NE\n"));
ERROR ((stderr, _("Comparison operator for strings must be EQ or NE\n")));
res = 0;
}
else
@ -2245,17 +2246,17 @@ istrue (idx, in)
int vala;
int valb;
int cond;
idx = exp_get_abs ("Conditional operator must have absolute operands.\n", idx, in, &vala);
idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"), idx, in, &vala);
idx = whatcond (idx, in, &cond);
idx = sb_skip_white (idx, in);
if (in->ptr[idx] == '"')
{
WARNING ((stderr, "String compared against expression.\n"));
WARNING ((stderr, _("String compared against expression.\n")));
res = 0;
}
else
{
idx = exp_get_abs ("Conditional operator must have absolute operands.\n", idx, in, &valb);
idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"), idx, in, &valb);
switch (cond)
{
default:
@ -2300,7 +2301,7 @@ do_aif (idx, in)
{
if (ifi >= IFNESTING)
{
FATAL ((stderr, "AIF nesting unreasonable.\n"));
FATAL ((stderr, _("AIF nesting unreasonable.\n")));
}
ifi++;
ifstack[ifi].on = ifstack[ifi-1].on ? istrue (idx, in) : 0;
@ -2315,7 +2316,7 @@ do_aelse ()
ifstack[ifi].on = ifstack[ifi-1].on ? !ifstack[ifi].on : 0;
if (ifstack[ifi].hadelse)
{
ERROR ((stderr, "Multiple AELSEs in AIF.\n"));
ERROR ((stderr, _("Multiple AELSEs in AIF.\n")));
}
ifstack[ifi].hadelse = 1;
}
@ -2331,7 +2332,7 @@ do_aendi ()
}
else
{
ERROR ((stderr, "AENDI without AIF.\n"));
ERROR ((stderr, _("AENDI without AIF.\n")));
}
}
@ -2354,10 +2355,10 @@ do_if (idx, in, cond)
if (ifi >= IFNESTING)
{
FATAL ((stderr, "IF nesting unreasonable.\n"));
FATAL ((stderr, _("IF nesting unreasonable.\n")));
}
idx = exp_get_abs ("Conditional operator must have absolute operands.\n",
idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"),
idx, in, &val);
switch (cond)
{
@ -2436,7 +2437,7 @@ do_ifc (idx, in, ifnc)
if (ifi >= IFNESTING)
{
FATAL ((stderr, "IF nesting unreasonable.\n"));
FATAL ((stderr, _("IF nesting unreasonable.\n")));
}
sb_new (&first);
@ -2446,7 +2447,7 @@ do_ifc (idx, in, ifnc)
if (idx >= in->len || in->ptr[idx] != ',')
{
ERROR ((stderr, "Bad format for IF or IFNC.\n"));
ERROR ((stderr, _("Bad format for IF or IFNC.\n")));
return;
}
@ -2466,9 +2467,9 @@ static void
do_aendr ()
{
if (!mri)
ERROR ((stderr, "AENDR without a AREPEAT.\n"));
ERROR ((stderr, _("AENDR without a AREPEAT.\n")));
else
ERROR ((stderr, "ENDR without a REPT.\n"));
ERROR ((stderr, _("ENDR without a REPT.\n")));
}
/* .AWHILE */
@ -2491,7 +2492,7 @@ do_awhile (idx, in)
doit = istrue (0, &exp);
if (! buffer_and_nest ("AWHILE", "AENDW", &sub, get_line))
FATAL ((stderr, "AWHILE without a AENDW at %d.\n", line - 1));
FATAL ((stderr, _("AWHILE without a AENDW at %d.\n"), line - 1));
/* Turn
.AWHILE exp
@ -2529,7 +2530,7 @@ do_awhile (idx, in)
static void
do_aendw ()
{
ERROR ((stderr, "AENDW without a AENDW.\n"));
ERROR ((stderr, _("AENDW without a AENDW.\n")));
}
@ -2574,13 +2575,13 @@ do_arepeat (idx, in)
sb_new (&copy);
sb_new (&sub);
process_assigns (idx, in, &exp);
idx = exp_get_abs ("AREPEAT must have absolute operand.\n", 0, &exp, &rc);
idx = exp_get_abs (_("AREPEAT must have absolute operand.\n"), 0, &exp, &rc);
if (!mri)
ret = buffer_and_nest ("AREPEAT", "AENDR", &sub, get_line);
else
ret = buffer_and_nest ("REPT", "ENDR", &sub, get_line);
if (! ret)
FATAL ((stderr, "AREPEAT without a AENDR at %d.\n", line - 1));
FATAL ((stderr, _("AREPEAT without a AENDR at %d.\n"), line - 1));
if (rc > 0)
{
/* Push back the text following the repeat, and another repeat block
@ -2622,7 +2623,7 @@ do_arepeat (idx, in)
static void
do_endm ()
{
ERROR ((stderr, ".ENDM without a matching .MACRO.\n"));
ERROR ((stderr, _(".ENDM without a matching .MACRO.\n")));
}
/* MRI IRP pseudo-op. */
@ -2656,7 +2657,7 @@ do_local (idx, line)
int idx;
sb *line;
{
ERROR ((stderr, "LOCAL outside of MACRO"));
ERROR ((stderr, _("LOCAL outside of MACRO")));
}
static void
@ -2669,7 +2670,7 @@ do_macro (idx, in)
err = define_macro (idx, in, &label, get_line, (const char **) NULL);
if (err != NULL)
ERROR ((stderr, "macro at line %d: %s\n", line - 1, err));
ERROR ((stderr, _("macro at line %d: %s\n"), line - 1, err));
}
static int
@ -2692,7 +2693,7 @@ macro_op (idx, in)
ERROR ((stderr, "%s\n", err));
sb_new (&name);
sb_add_string (&name, "macro expansion");
sb_add_string (&name, _("macro expansion"));
include_buf (&name, &out, include_macro, include_next_index ());
@ -2744,12 +2745,12 @@ getstring (idx, in, acc)
else {
int code;
idx++;
idx = exp_get_abs ("Character code in string must be absolute expression.\n",
idx = exp_get_abs (_("Character code in string must be absolute expression.\n"),
idx, in, &code);
sb_add_char (acc, code);
if (in->ptr[idx] != '>')
ERROR ((stderr, "Missing > for character code.\n"));
ERROR ((stderr, _("Missing > for character code.\n")));
idx++;
}
}
@ -2808,7 +2809,7 @@ do_sdata (idx, in, type)
{
if (acc.len > 255)
{
ERROR ((stderr, "string for SDATAC longer than 255 characters (%d).\n", acc.len));
ERROR ((stderr, _("string for SDATAC longer than 255 characters (%d).\n"), acc.len));
}
fprintf (outfile, "%d", acc.len);
nc = 1;
@ -2836,7 +2837,7 @@ do_sdata (idx, in, type)
if (!alternate && in->ptr[idx] != ',' && idx != in->len)
{
fprintf (outfile, "\n");
ERROR ((stderr, "illegal character in SDATA line (0x%x).\n", in->ptr[idx]));
ERROR ((stderr, _("illegal character in SDATA line (0x%x).\n"), in->ptr[idx]));
break;
}
idx++;
@ -2857,10 +2858,10 @@ do_sdatab (idx, in)
sb acc;
sb_new (&acc);
idx = exp_get_abs ("Must have absolute SDATAB repeat count.\n", idx, in, &repeat);
idx = exp_get_abs (_("Must have absolute SDATAB repeat count.\n"), idx, in, &repeat);
if (repeat <= 0)
{
ERROR ((stderr, "Must have positive SDATAB repeat count (%d).\n", repeat));
ERROR ((stderr, _("Must have positive SDATAB repeat count (%d).\n"), repeat));
repeat = 1;
}
@ -2888,7 +2889,7 @@ new_file (name)
return 0;
if (isp == MAX_INCLUDES)
FATAL ((stderr, "Unreasonable include depth (%ld).\n", (long) isp));
FATAL ((stderr, _("Unreasonable include depth (%ld).\n"), (long) isp));
sp++;
sp->handle = newone;
@ -2942,7 +2943,7 @@ do_include (idx, in)
if (!includes)
{
if (! new_file (sb_name (&t)))
FATAL ((stderr, "Can't open include file `%s'.\n", sb_name (&t)));
FATAL ((stderr, _("Can't open include file `%s'.\n"), sb_name (&t)));
}
sb_kill (&cat);
sb_kill (&t);
@ -3016,7 +3017,7 @@ include_next_index ()
static int index;
if (!unreasonable
&& index > MAX_REASONABLE)
FATAL ((stderr, "Unreasonable expansion (-u turns off check).\n"));
FATAL ((stderr, _("Unreasonable expansion (-u turns off check).\n")));
return ++index;
}
@ -3237,7 +3238,7 @@ process_pseudo_op (idx, line, acc)
#if 0
/* This one causes lots of pain when trying to preprocess
ordinary code */
WARNING ((stderr, "Unrecognised pseudo op `%s'.\n", sb_name (acc)));
WARNING ((stderr, _("Unrecognised pseudo op `%s'.\n"), sb_name (acc)));
#endif
return 0;
}
@ -3304,7 +3305,7 @@ process_pseudo_op (idx, line, acc)
do_aendi ();
return 1;
case K_ORG:
ERROR ((stderr, "ORG command not allowed.\n"));
ERROR ((stderr, _("ORG command not allowed.\n")));
break;
case K_RADIX:
do_radix (line);
@ -3521,7 +3522,7 @@ do_define (string)
sb_add_char (&value, *string);
string++;
}
exp_get_abs ("Invalid expression on command line.\n", 0, &value, &res);
exp_get_abs (_("Invalid expression on command line.\n"), 0, &value, &res);
sb_kill (&value);
break;
}
@ -3562,7 +3563,7 @@ show_usage (file, status)
FILE *file;
int status;
{
fprintf (file, "\
fprintf (file, _("\
Usage: %s \n\
[-a] [--alternate] enter alternate macro mode\n\
[-c char] [--commentchar char] change the comment character from !\n\
@ -3570,16 +3571,16 @@ Usage: %s \n\
[-h] [--help] print this message\n\
[-M] [--mri] enter MRI compatibility mode\n\
[-o out] [--output out] set the output file\n\
[-p] [--print] print line numbers\n", program_name);
fprintf (file, "\
[-p] [--print] print line numbers\n"), program_name);
fprintf (file, _("\
[-s] [--copysource] copy source through as comments \n\
[-u] [--unreasonable] allow unreasonable nesting\n\
[-v] [--version] print the program version\n\
[-Dname=value] create preprocessor variable called name, with value\n\
[-Ipath] add to include path list\n\
[in-file]\n");
[in-file]\n"));
if (status == 0)
printf ("\nReport bugs to bug-gnu-utils@gnu.org\n");
printf (_("\nReport bugs to bug-gnu-utils@gnu.org\n"));
exit (status);
}
@ -3587,7 +3588,7 @@ Usage: %s \n\
static void
show_help ()
{
printf ("%s: Gnu Assembler Macro Preprocessor\n",
printf (_("%s: Gnu Assembler Macro Preprocessor\n"),
program_name);
show_usage (stdout, 0);
}
@ -3604,7 +3605,9 @@ main (argc, argv)
ifstack[0].on = 1;
ifi = 0;
setlocale (LC_MESSAGES, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = argv[0];
xmalloc_set_program_name (program_name);
@ -3667,11 +3670,11 @@ main (argc, argv)
/*NOTREACHED*/
case 'v':
/* This output is intended to follow the GNU standards document. */
printf ("GNU assembler pre-processor %s\n", program_version);
printf ("Copyright 1996 Free Software Foundation, Inc.\n");
printf ("\
printf (_("GNU assembler pre-processor %s\n"), program_version);
printf (_("Copyright 1996 Free Software Foundation, Inc.\n"));
printf (_("\
This program is free software; you may redistribute it under the terms of\n\
the GNU General Public License. This program has absolutely no warranty.\n");
the GNU General Public License. This program has absolutely no warranty.\n"));
exit (0);
/*NOTREACHED*/
case 0:
@ -3690,7 +3693,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
outfile = fopen (out_name, "w");
if (!outfile)
{
fprintf (stderr, "%s: Can't open output file `%s'.\n",
fprintf (stderr, _("%s: Can't open output file `%s'.\n"),
program_name, out_name);
exit (1);
}
@ -3713,7 +3716,7 @@ the GNU General Public License. This program has absolutely no warranty.\n");
}
else
{
fprintf (stderr, "%s: Can't open input file `%s'.\n",
fprintf (stderr, _("%s: Can't open input file `%s'.\n"),
program_name, argv[optind]);
exit (1);
}
@ -3732,9 +3735,9 @@ as_abort (file, line, fn)
const char *file, *fn;
int line;
{
fprintf (stderr, "Internal error, aborting at %s line %d", file, line);
fprintf (stderr, _("Internal error, aborting at %s line %d"), file, line);
if (fn)
fprintf (stderr, " in %s", fn);
fprintf (stderr, "\nPlease report this bug.\n");
fprintf (stderr, _("\nPlease report this bug.\n"));
exit (1);
}

250
gas/po/Make-in Normal file
View File

@ -0,0 +1,250 @@
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
PACKAGE = @PACKAGE@
VERSION = @VERSION@
SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datadir = $(prefix)/@DATADIRNAME@
localedir = $(datadir)/locale
gnulocaledir = $(prefix)/share/locale
gettextsrcdir = $(prefix)/share/gettext/po
subdir = po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
MSGFMT = @MSGFMT@
XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
MSGMERGE = PATH=../src:$$PATH msgmerge
DEFS = @DEFS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES = cat-id-tbl.c
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
.c.o:
$(COMPILE) $<
.po.pox:
$(MAKE) $(PACKAGE).pot
$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
.po.mo:
$(MSGFMT) -o $@ $<
.po.gmo:
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
all: all-@USE_NLS@
all-yes: $(CATALOGS)
all-no:
$(srcdir)/$(PACKAGE).pot: @MAINT@ $(POTFILES)
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
--files-from=$(srcdir)/POTFILES.in
rm -f $(srcdir)/$(PACKAGE).pot
mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
$(srcdir)/stamp-cat-id: $(PACKAGE).pot
rm -f cat-id-tbl.tmp
sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
rm cat-id-tbl.tmp; \
else \
echo cat-id-tbl.c changed; \
rm -f $(srcdir)/cat-id-tbl.c; \
mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
fi
cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $(datadir); \
else \
$(top_srcdir)/mkinstalldirs $(datadir); \
fi
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
case "$$cat" in \
*.gmo) destdir=$(gnulocaledir);; \
*) destdir=$(localedir);; \
esac; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$$destdir/$$lang/LC_MESSAGES; \
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $$dir; \
else \
$(top_srcdir)/mkinstalldirs $$dir; \
fi; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
fi; \
if test -r $$cat.m; then \
$(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
if test -r $(srcdir)/$$cat.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \
$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
true; \
fi; \
fi; \
done
if test "$(PACKAGE)" = "gettext"; then \
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $(gettextsrcdir); \
else \
$(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
fi; \
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
# Define this as empty until I found a useful application.
installcheck:
uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
done
rm -f $(gettextsrcdir)/po-Makefile.in.in
check: all
cat-id-tbl.o: ../intl/libgettext.h
dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
rm -fr *.o
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir: update-po $(DISTFILES)
dists="$(DISTFILES)"; \
for file in $$dists; do \
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(PACKAGE).pot
PATH=`pwd`/../src:$$PATH; \
cd $(srcdir); \
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mv $$lang.po $$lang.old.po; \
echo "$$lang:"; \
if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
rm -f $$lang.old.po; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$lang.po; \
mv $$lang.old.po $$lang.po; \
fi; \
done
POTFILES: POTFILES.in
( if test 'x$(srcdir)' != 'x.'; then \
posrcprefix='$(top_srcdir)/'; \
else \
posrcprefix="../"; \
fi; \
rm -f $@-t $@ \
&& (sed -e '/^#/d' -e '/^[ ]*$$/d' \
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
| sed -e '$$s/\\$$//') > $@-t \
&& chmod a-w $@-t \
&& mv $@-t $@ )
POTFILES.in: @MAINT@ ../Makefile
cd .. && $(MAKE) po/POTFILES.in
Makefile: Make-in ../config.status POTFILES
cd .. \
&& CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
CONFIG_HEADERS= $(SHELL) ./config.status
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

157
gas/po/POTFILES.in Normal file
View File

@ -0,0 +1,157 @@
app.c
app.c
as.c
as.c
as.h
atof-generic.c
atof-generic.c
bignum-copy.c
bignum-copy.c
bignum.h
bit_fix.h
cond.c
cond.c
config/e-i386coff.c
config/e-i386elf.c
config/e-mipsecoff.c
config/e-mipself.c
config/obj-aout.c
config/obj-aout.h
config/obj-bout.c
config/obj-bout.h
config/obj-coff.c
config/obj-coff.h
config/obj-ecoff.c
config/obj-ecoff.h
config/obj-elf.c
config/obj-elf.h
config/obj-evax.c
config/obj-evax.h
config/obj-hp300.c
config/obj-hp300.h
config/obj-ieee.c
config/obj-ieee.h
config/obj-som.c
config/obj-som.h
config/obj-vms.c
config/obj-vms.h
config/tc-a29k.c
config/tc-a29k.h
config/tc-alpha.c
config/tc-alpha.h
config/tc-arc.c
config/tc-arc.h
config/tc-arm.c
config/tc-arm.h
config/tc-d10v.c
config/tc-d10v.h
config/tc-h8300.c
config/tc-h8300.h
config/tc-h8500.c
config/tc-h8500.h
config/tc-hppa.c
config/tc-hppa.h
config/tc-i386.c
config/tc-i386.h
config/tc-i860.c
config/tc-i860.h
config/tc-i960.c
config/tc-i960.h
config/tc-m32r.c
config/tc-m32r.h
config/tc-m68k.c
config/tc-m68k.h
config/tc-m88k.c
config/tc-m88k.h
config/tc-mips.c
config/tc-mips.h
config/tc-mn10200.c
config/tc-mn10200.h
config/tc-mn10300.c
config/tc-mn10300.h
config/tc-ns32k.c
config/tc-ns32k.h
config/tc-ppc.c
config/tc-ppc.h
config/tc-sh.c
config/tc-sh.h
config/tc-sparc.c
config/tc-sparc.h
config/tc-tahoe.c
config/tc-tahoe.h
config/tc-tic30.c
config/tc-tic30.h
config/tc-v850.c
config/tc-v850.h
config/tc-vax.c
config/tc-vax.h
config/tc-w65.c
config/tc-w65.h
config/tc-z8k.c
config/tc-z8k.h
depend.c
depend.c
ecoff.c
ecoff.c
ecoff.h
ehopt.c
ehopt.c
emul-target.h
emul.h
expr.c
expr.c
expr.h
flonum-copy.c
flonum-copy.c
flonum-konst.c
flonum-konst.c
flonum-mult.c
flonum-mult.c
flonum.h
frags.c
frags.c
frags.h
gasp.c
hash.c
hash.c
hash.h
input-file.c
input-file.c
input-file.h
input-scrub.c
input-scrub.c
itbl-ops.c
itbl-ops.h
listing.c
listing.c
listing.h
literal.c
literal.c
macro.c
macro.c
macro.h
messages.c
messages.c
obj.h
output-file.c
output-file.c
output-file.h
read.c
read.c
read.h
sb.c
sb.c
sb.h
stabs.c
stabs.c
struc-symbol.h
subsegs.c
subsegs.c
subsegs.h
symbols.c
symbols.c
symbols.h
tc.h
write.c
write.c
write.h

File diff suppressed because it is too large Load Diff