* 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,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 ()
{