Rev 5197 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5197 | Rev 6324 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* BFD back-end for s-record objects. |
1 | /* BFD back-end for s-record objects. |
2 | Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
- | |
3 | 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011 |
- | |
4 | Free Software Foundation, Inc. |
2 | Copyright (C) 1990-2015 Free Software Foundation, Inc. |
5 | Written by Steve Chamberlain of Cygnus Support |
3 | Written by Steve Chamberlain of Cygnus Support |
Line 6... | Line 4... | ||
6 | 4 | ||
Line 7... | Line 5... | ||
7 | This file is part of BFD, the Binary File Descriptor library. |
5 | This file is part of BFD, the Binary File Descriptor library. |
Line 246... | Line 244... | ||
246 | if (! error) |
244 | if (! error) |
247 | bfd_set_error (bfd_error_file_truncated); |
245 | bfd_set_error (bfd_error_file_truncated); |
248 | } |
246 | } |
249 | else |
247 | else |
250 | { |
248 | { |
251 | char buf[10]; |
249 | char buf[40]; |
Line 252... | Line 250... | ||
252 | 250 | ||
253 | if (! ISPRINT (c)) |
251 | if (! ISPRINT (c)) |
254 | sprintf (buf, "\\%03o", (unsigned int) c); |
252 | sprintf (buf, "\\%03o", (unsigned int) c & 0xff); |
255 | else |
253 | else |
256 | { |
254 | { |
257 | buf[0] = c; |
255 | buf[0] = c; |
258 | buf[1] = '\0'; |
256 | buf[1] = '\0'; |
Line 452... | Line 450... | ||
452 | break; |
450 | break; |
Line 453... | Line 451... | ||
453 | 451 | ||
454 | case 'S': |
452 | case 'S': |
455 | { |
453 | { |
456 | file_ptr pos; |
454 | file_ptr pos; |
457 | char hdr[3]; |
455 | unsigned char hdr[3]; |
458 | unsigned int bytes; |
456 | unsigned int bytes, min_bytes; |
459 | bfd_vma address; |
457 | bfd_vma address; |
460 | bfd_byte *data; |
458 | bfd_byte *data; |
Line 461... | Line 459... | ||
461 | unsigned char check_sum; |
459 | unsigned char check_sum; |
Line 476... | Line 474... | ||
476 | srec_bad_byte (abfd, lineno, c, error); |
474 | srec_bad_byte (abfd, lineno, c, error); |
477 | goto error_return; |
475 | goto error_return; |
478 | } |
476 | } |
Line 479... | Line 477... | ||
479 | 477 | ||
- | 478 | check_sum = bytes = HEX (hdr + 1); |
|
- | 479 | min_bytes = 3; |
|
- | 480 | if (hdr[0] == '2' || hdr[0] == '8') |
|
- | 481 | min_bytes = 4; |
|
- | 482 | else if (hdr[0] == '3' || hdr[0] == '7') |
|
- | 483 | min_bytes = 5; |
|
- | 484 | if (bytes < min_bytes) |
|
- | 485 | { |
|
- | 486 | (*_bfd_error_handler) (_("%B:%d: byte count %d too small\n"), |
|
- | 487 | abfd, lineno, bytes); |
|
- | 488 | bfd_set_error (bfd_error_bad_value); |
|
- | 489 | goto error_return; |
|
- | 490 | } |
|
480 | check_sum = bytes = HEX (hdr + 1); |
491 | |
481 | if (bytes * 2 > bufsize) |
492 | if (bytes * 2 > bufsize) |
482 | { |
493 | { |
483 | if (buf != NULL) |
494 | if (buf != NULL) |
484 | free (buf); |
495 | free (buf); |
Line 1242... | Line 1253... | ||
1242 | #define srec_new_section_hook _bfd_generic_new_section_hook |
1253 | #define srec_new_section_hook _bfd_generic_new_section_hook |
1243 | #define srec_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) |
1254 | #define srec_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) |
1244 | #define srec_bfd_is_local_label_name bfd_generic_is_local_label_name |
1255 | #define srec_bfd_is_local_label_name bfd_generic_is_local_label_name |
1245 | #define srec_get_lineno _bfd_nosymbols_get_lineno |
1256 | #define srec_get_lineno _bfd_nosymbols_get_lineno |
1246 | #define srec_find_nearest_line _bfd_nosymbols_find_nearest_line |
1257 | #define srec_find_nearest_line _bfd_nosymbols_find_nearest_line |
- | 1258 | #define srec_find_line _bfd_nosymbols_find_line |
|
1247 | #define srec_find_inliner_info _bfd_nosymbols_find_inliner_info |
1259 | #define srec_find_inliner_info _bfd_nosymbols_find_inliner_info |
1248 | #define srec_make_empty_symbol _bfd_generic_make_empty_symbol |
1260 | #define srec_make_empty_symbol _bfd_generic_make_empty_symbol |
- | 1261 | #define srec_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string |
|
1249 | #define srec_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol |
1262 | #define srec_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol |
1250 | #define srec_read_minisymbols _bfd_generic_read_minisymbols |
1263 | #define srec_read_minisymbols _bfd_generic_read_minisymbols |
1251 | #define srec_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol |
1264 | #define srec_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol |
1252 | #define srec_get_section_contents_in_window _bfd_generic_get_section_contents_in_window |
1265 | #define srec_get_section_contents_in_window _bfd_generic_get_section_contents_in_window |
1253 | #define srec_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents |
1266 | #define srec_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents |
Line 1258... | Line 1271... | ||
1258 | #define srec_bfd_is_group_section bfd_generic_is_group_section |
1271 | #define srec_bfd_is_group_section bfd_generic_is_group_section |
1259 | #define srec_bfd_discard_group bfd_generic_discard_group |
1272 | #define srec_bfd_discard_group bfd_generic_discard_group |
1260 | #define srec_section_already_linked _bfd_generic_section_already_linked |
1273 | #define srec_section_already_linked _bfd_generic_section_already_linked |
1261 | #define srec_bfd_define_common_symbol bfd_generic_define_common_symbol |
1274 | #define srec_bfd_define_common_symbol bfd_generic_define_common_symbol |
1262 | #define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create |
1275 | #define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create |
1263 | #define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free |
- | |
1264 | #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols |
1276 | #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols |
1265 | #define srec_bfd_link_just_syms _bfd_generic_link_just_syms |
1277 | #define srec_bfd_link_just_syms _bfd_generic_link_just_syms |
1266 | #define srec_bfd_copy_link_hash_symbol_type \ |
1278 | #define srec_bfd_copy_link_hash_symbol_type \ |
1267 | _bfd_generic_copy_link_hash_symbol_type |
1279 | _bfd_generic_copy_link_hash_symbol_type |
1268 | #define srec_bfd_final_link _bfd_generic_final_link |
1280 | #define srec_bfd_final_link _bfd_generic_final_link |