Subversion Repositories Kolibri OS

Rev

Rev 5197 | Show entire file | Ignore 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