/* BFD back-end for mmo objects (MMIX-specific object-format).
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+ Copyright (C) 2001-2017 Free Software Foundation, Inc.
Written by Hans-Peter Nilsson (hp@bitrange.com).
Infrastructure and other bits originally copied from srec.c and
binary.c.
if (newsecname == NULL)
{
- (*_bfd_error_handler)
- (_("%s: No core to allocate section name %s\n"),
- bfd_get_filename (abfd), secname);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: No core to allocate section name %s\n"),
+ abfd, secname);
bfd_set_error (bfd_error_system_call);
return NULL;
}
if (abfd->tdata.mmo_data->lop_stab_symbol == NULL)
{
- (*_bfd_error_handler)
- (_("%s: No core to allocate a symbol %d bytes long\n"),
- bfd_get_filename (abfd), abfd->tdata.mmo_data->max_symbol_length);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: No core to allocate a symbol %d bytes long\n"),
+ abfd, abfd->tdata.mmo_data->max_symbol_length);
goto bad_final;
}
group-wise aligned. */
if ((vma & 3) != 0)
{
- (*_bfd_error_handler)
- (_("%s: attempt to emit contents at non-multiple-of-4 address 0x%lx\n"),
- bfd_get_filename (abfd), (unsigned long) vma);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: attempt to emit contents at non-multiple-of-4"
+ " address %#Lx"),
+ abfd, vma);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
&& bfd_get_start_address (abfd) != addr
&& !mmo_ignore_symbol_consistency (abfd))
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: initialization value for $255 is not `Main'\n"),
- bfd_get_filename (abfd));
+ _bfd_error_handler
+ (_("%B: invalid mmo file: initialization value for $255"
+ " is not `Main'\n"),
+ abfd);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
abfd->tdata.mmo_data->lop_stab_symbol
[abfd->tdata.mmo_data->symbol_position] = 0;
- (*_bfd_error_handler)
- (_("%s: unsupported wide character sequence"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: unsupported wide character sequence"
" 0x%02X 0x%02X after symbol name starting with `%s'\n"),
- bfd_get_filename (abfd), c, c2,
- abfd->tdata.mmo_data->lop_stab_symbol);
+ abfd, c, c2, abfd->tdata.mmo_data->lop_stab_symbol);
bfd_set_error (bfd_error_bad_value);
abfd->tdata.mmo_data->have_error = TRUE;
return FALSE;
bfd_size_type nbytes_read = 0;
/* Buffer with room to read a 64-bit value. */
bfd_byte buf[8];
- long stab_loc = -1;
+ file_ptr stab_loc = -1;
char *file_names[256];
abfd->symcount = 0;
switch (buf[1])
{
default:
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: unsupported lopcode `%d'\n"),
- bfd_get_filename (abfd), buf[1]);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: unsupported lopcode `%d'\n"),
+ abfd, buf[1]);
bfd_set_error (bfd_error_bad_value);
goto error_return;
/* Quote the next 32-bit word. */
if (y != 0 || z != 1)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"),
- bfd_get_filename (abfd), y*256+z);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: expected YZ = 1"
+ " got YZ = %d for lop_quote\n"),
+ abfd, y*256+z);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
}
else
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"),
- bfd_get_filename (abfd), z);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: expected z = 1 or z = 2,"
+ " got z = %d for lop_loc\n"),
+ abfd, z);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
}
else
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"),
- bfd_get_filename (abfd), z);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: expected z = 1 or z = 2,"
+ " got z = %d for lop_fixo\n"),
+ abfd, z);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if (y != 0)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"),
- bfd_get_filename (abfd), y);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: expected y = 0,"
+ " got y = %d for lop_fixrx\n"),
+ abfd, y);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if (z != 16 && z != 24)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"),
- bfd_get_filename (abfd), z);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: expected z = 16 or z = 24,"
+ " got z = %d for lop_fixrx\n"),
+ abfd, z);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
p = vma - 4 * ((delta & 0xffffff) - (1 << z));
else
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"),
- bfd_get_filename (abfd), buf[0]);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: leading byte of operand word"
+ " must be 0 or 1, got %d for lop_fixrx\n"),
+ abfd, buf[0]);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if (fname == NULL)
{
- (*_bfd_error_handler)
- (_("%s: cannot allocate file name for file number %d, %d bytes\n"),
- bfd_get_filename (abfd), y, z * 4 + 1);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: cannot allocate file name for file number %d,"
+ " %d bytes\n"),
+ abfd, y, z * 4 + 1);
bfd_set_error (bfd_error_system_call);
goto error_return;
}
if (file_names[y] != NULL)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: file number %d `%s',"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: file number %d `%s',"
" was already entered as `%s'\n"),
- bfd_get_filename (abfd), y, fname, file_names[y]);
+ abfd, y, fname, file_names[y]);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if (file_names[y] == NULL)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: file name for number %d"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: file name for number %d"
" was not specified before use\n"),
- bfd_get_filename (abfd), y);
+ abfd, y);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
/* We read in the symbols now, not later. */
if (y != 0 || z != 0)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: fields y and z of lop_stab"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: fields y and z of lop_stab"
" non-zero, y: %d, z: %d\n"),
- bfd_get_filename (abfd), y, z);
+ abfd, y, z);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if (statbuf.st_size != curpos)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: lop_end not last item in"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: lop_end not last item in"
" file\n"),
- bfd_get_filename (abfd));
+ abfd);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
it. */
if ((long) (y * 256 + z) * 4 != (curpos - stab_loc) - 4)
{
- (*_bfd_error_handler)
- (_("%s: invalid mmo file: YZ of lop_end (%ld)"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid mmo file: YZ of lop_end (%ld)"
" not equal to the number of tetras to the preceding"
" lop_stab (%ld)\n"),
- bfd_get_filename (abfd), (long) (y * 256 + z),
- (curpos - stab_loc - 4)/4);
+ abfd, (long) (y * 256 + z),
+ (long) (curpos - stab_loc - 4)/4);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
memcpy (location, loc, chunk_size);
- location += chunk_size;
+ location = (bfd_byte *) location + chunk_size;
bytes_to_do -= chunk_size;
offset += chunk_size;
}
memcpy (loc, location, chunk_size);
- location += chunk_size;
+ location = (bfd_byte *) location + chunk_size;
bytes_to_do -= chunk_size;
offset += chunk_size;
}
we discover it and bail out. */
if (trie->sym.name != NULL)
{
- (*_bfd_error_handler)
- (_("%s: invalid symbol table: duplicate symbol `%s'\n"),
- bfd_get_filename (abfd), trie->sym.name);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid symbol table: duplicate symbol `%s'\n"),
+ abfd, trie->sym.name);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
sprintf_vma (vmas_main, mainvalue);
sprintf_vma (vmas_start, vma_start);
- (*_bfd_error_handler)
- (_("%s: Bad symbol definition: `Main' set to %s rather"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: Bad symbol definition: `Main' set to %s rather"
" than the start address %s\n"),
- bfd_get_filename (abfd), vmas_main, vmas_start);
+ abfd, vmas_main, vmas_start);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
There's no specific test-case. */
struct mmo_symbol sym;
- (*_bfd_error_handler)
- (_("%s: warning: symbol table too large for mmo, larger than 65535"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: warning: symbol table too large for mmo, larger than 65535"
" 32-bit words: %d. Only `Main' will be emitted.\n"),
- bfd_get_filename (abfd), trie_len);
+ abfd, trie_len);
memset (&sym, 0, sizeof (sym));
sym.sym_type = mmo_abs_sym;
/* I haven't seen this trig. It seems no use claiming this case
isn't debugged and abort if we get here. Instead emit a
diagnostic and fail "normally". */
- (*_bfd_error_handler)
- (_("%s: internal error, symbol table changed size from %d to %d"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: internal error, symbol table changed size from %d to %d"
" words\n"),
- bfd_get_filename (abfd), trie_len,
+ abfd, trie_len,
(abfd->tdata.mmo_data->byte_no + 3)/4);
bfd_set_error (bfd_error_bad_value);
return FALSE;
/* Make sure it hasn't got contents. It seems impossible to
make it carry contents, so we don't have a test-case for
this. */
- (*_bfd_error_handler)
- (_("%s: internal error, internal register section %s had"
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: internal error, internal register section %A had"
" contents\n"),
- bfd_get_filename (abfd), sec->name);
+ abfd, sec);
bfd_set_error (bfd_error_bad_value);
infop->retval = FALSE;
return;
if (sec->size == 0)
/* There must always be at least one such register. */
- (*_bfd_error_handler)
- (_("%s: no initialized registers; section length 0\n"),
- bfd_get_filename (abfd));
+ _bfd_error_handler
+ (_("%B: no initialized registers; section length 0\n"),
+ abfd);
else if (sec->vma > (256 - 32) * 8)
/* Provide better error message for the case of too many
global registers. */
- (*_bfd_error_handler)
- (_("%s: too many initialized registers; section length %ld\n"),
- bfd_get_filename (abfd),
- (long) sec->size);
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: too many initialized registers; section length %Ld"),
+ abfd, sec->size);
else
- (*_bfd_error_handler)
- (_("%s: invalid start address for initialized registers of"
- " length %ld: 0x%lx%08lx\n"),
- bfd_get_filename (abfd),
- (long) sec->size,
- (unsigned long) (sec->vma >> 32), (unsigned long) (sec->vma));
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%B: invalid start address for initialized registers of"
+ " length %Ld: %#Lx"),
+ abfd, sec->size, sec->vma);
return FALSE;
}
#define mmo_section_already_linked \
_bfd_generic_section_already_linked
#define mmo_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define mmo_bfd_define_start_stop bfd_generic_define_start_stop
/* We want to copy time of creation, otherwise we'd use
BFD_JUMP_TABLE_COPY (_bfd_generic). */