/* BFD back-end for Intel Hex objects.
- Copyright (C) 1995-2018 Free Software Foundation, Inc.
+ Copyright (C) 1995-2019 Free Software Foundation, Inc.
Written by Ian Lance Taylor of Cygnus Support <ian@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
}
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%d: unexpected character `%s' in Intel Hex file"),
+ (_("%pB:%d: unexpected character `%s' in Intel Hex file"),
abfd, lineno, buf);
bfd_set_error (bfd_error_bad_value);
}
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"),
+ (_("%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"),
abfd, lineno,
(- chksum) & 0xff, (unsigned int) HEX2 (buf + 2 * i));
bfd_set_error (bfd_error_bad_value);
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: bad extended address record length in Intel Hex file"),
+ (_("%pB:%u: bad extended address record length in Intel Hex file"),
abfd, lineno);
bfd_set_error (bfd_error_bad_value);
goto error_return;
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: bad extended start address length in Intel Hex file"),
+ (_("%pB:%u: bad extended start address length in Intel Hex file"),
abfd, lineno);
bfd_set_error (bfd_error_bad_value);
goto error_return;
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: bad extended linear address record length in Intel Hex file"),
+ (_("%pB:%u: bad extended linear address record length in Intel Hex file"),
abfd, lineno);
bfd_set_error (bfd_error_bad_value);
goto error_return;
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: bad extended linear start address length in Intel Hex file"),
+ (_("%pB:%u: bad extended linear start address length in Intel Hex file"),
abfd, lineno);
bfd_set_error (bfd_error_bad_value);
goto error_return;
default:
_bfd_error_handler
/* xgettext:c-format */
- (_("%B:%u: unrecognized ihex type %u in Intel Hex file"),
+ (_("%pB:%u: unrecognized ihex type %u in Intel Hex file"),
abfd, lineno, type);
bfd_set_error (bfd_error_bad_value);
goto error_return;
if (type != 0)
{
_bfd_error_handler
- (_("%B: internal error in ihex_read_section"), abfd);
+ (_("%pB: internal error in ihex_read_section"), abfd);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
if ((bfd_size_type) (p - contents) < section->size)
{
_bfd_error_handler
- (_("%B: bad section length in ihex_read_section"), abfd);
+ (_("%pB: bad section length in ihex_read_section"), abfd);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
bfd_size_type count;
where = l->where;
+
+#ifdef BFD64
+ /* IHex only supports 32-bit addresses, and we want to check
+ that 64-bit addresses are in range. This isn't quite as
+ obvious as it may seem, since some targets have 32-bit
+ addresses that are sign extended to 64 bits. So complain
+ only if addresses overflow both unsigned and signed 32-bit
+ integers. */
+ if (where > 0xffffffff
+ && where + 0x80000000 > 0xffffffff)
+ {
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("%pB 64-bit address %#" PRIx64
+ " out of range for Intel Hex file"),
+ abfd, (uint64_t) where);
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
+ where &= 0xffffffff;
+#endif
+
p = l->data;
count = l->size;
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: address %#Lx out of range for Intel Hex file"),
- abfd, where);
+ (_("%pB: address %#" PRIx64
+ " out of range for Intel Hex file"),
+ abfd, (uint64_t) where);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
#define ihex_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
#define ihex_new_section_hook _bfd_generic_new_section_hook
#define ihex_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
-#define ihex_get_symtab_upper_bound bfd_0l
-#define ihex_canonicalize_symtab ((long (*) (bfd *, asymbol **)) bfd_0l)
+#define ihex_get_symtab_upper_bound _bfd_long_bfd_0
+#define ihex_canonicalize_symtab _bfd_nosymbols_canonicalize_symtab
#define ihex_make_empty_symbol _bfd_generic_make_empty_symbol
#define ihex_print_symbol _bfd_nosymbols_print_symbol
#define ihex_get_symbol_info _bfd_nosymbols_get_symbol_info
#define ihex_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string
-#define ihex_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
+#define ihex_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
#define ihex_bfd_is_local_label_name _bfd_nosymbols_bfd_is_local_label_name
#define ihex_get_lineno _bfd_nosymbols_get_lineno
#define ihex_find_nearest_line _bfd_nosymbols_find_nearest_line
#define ihex_bfd_lookup_section_flags bfd_generic_lookup_section_flags
#define ihex_bfd_merge_sections bfd_generic_merge_sections
#define ihex_bfd_is_group_section bfd_generic_is_group_section
+#define ihex_bfd_group_name bfd_generic_group_name
#define ihex_bfd_discard_group bfd_generic_discard_group
#define ihex_section_already_linked _bfd_generic_section_already_linked
#define ihex_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define ihex_bfd_link_hide_symbol _bfd_generic_link_hide_symbol
#define ihex_bfd_define_start_stop bfd_generic_define_start_stop
#define ihex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
#define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols
_bfd_dummy_target,
},
{
- bfd_false,
+ _bfd_bool_bfd_false_error,
ihex_mkobject,
_bfd_generic_mkarchive,
- bfd_false,
+ _bfd_bool_bfd_false_error,
},
{ /* bfd_write_contents. */
- bfd_false,
+ _bfd_bool_bfd_false_error,
ihex_write_object_contents,
_bfd_write_archive_contents,
- bfd_false,
+ _bfd_bool_bfd_false_error,
},
BFD_JUMP_TABLE_GENERIC (ihex),