X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Ftekhex.c;h=b1ffe75e0731ce5dc86527bc2aea848d4f3da2f2;hb=75cc718903a22a68fc0db87f5976e868822ff4e5;hp=03b41f2d04f23a1169a6945b4c8a626cd04f4304;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/tekhex.c b/bfd/tekhex.c index 03b41f2d04..b1ffe75e07 100644 --- a/bfd/tekhex.c +++ b/bfd/tekhex.c @@ -1,6 +1,6 @@ /* BFD backend for Extended Tektronix Hex Format objects. - Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. - + Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 1999 + Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . This file is part of BFD, the Binary File Descriptor library. @@ -100,13 +100,15 @@ static char sum_block[256]; (d)[0] = digs[((x)>>4)&0xf]; #define ISHEX(x) hex_p(x) +static void tekhex_init PARAMS ((void)); +static bfd_vma getvalue PARAMS ((char **)); static void tekhex_print_symbol PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); static void tekhex_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static asymbol *tekhex_make_empty_symbol PARAMS ((bfd *)); static int tekhex_sizeof_headers PARAMS ((bfd *, boolean)); static boolean tekhex_write_object_contents PARAMS ((bfd *)); -static void out PARAMS ((bfd *, char, char *, char *)); +static void out PARAMS ((bfd *, int, char *, char *)); static void writesym PARAMS ((char **, CONST char *)); static void writevalue PARAMS ((char **, bfd_vma)); static boolean tekhex_set_section_contents @@ -121,8 +123,8 @@ static const bfd_target *tekhex_object_p PARAMS ((bfd *)); static boolean tekhex_mkobject PARAMS ((bfd *)); static long tekhex_get_symtab_upper_bound PARAMS ((bfd *)); static long tekhex_get_symtab PARAMS ((bfd *, asymbol **)); -static void pass_over PARAMS ((bfd *, void (*)(bfd*, char, char *))); -static void first_phase PARAMS ((bfd *, char, char *)); +static void pass_over PARAMS ((bfd *, void (*)(bfd*, int, char *))); +static void first_phase PARAMS ((bfd *, int, char *)); static void insert_byte PARAMS ((bfd *, int, bfd_vma)); static struct data_struct *find_chunk PARAMS ((bfd *, bfd_vma)); static unsigned int getsym PARAMS ((char *, char **)); @@ -391,7 +393,7 @@ insert_byte (abfd, value, addr) static void first_phase (abfd, type, src) bfd *abfd; - char type; + int type; char *src; { asection *section = bfd_abs_section_ptr; @@ -482,7 +484,7 @@ first_phase (abfd, type, src) static void pass_over (abfd, func) bfd *abfd; - void (*func) PARAMS ((bfd *, char, char *)); + void (*func) PARAMS ((bfd *, int, char *)); { unsigned int chars_on_line; boolean eof = false; @@ -598,7 +600,7 @@ move_section_contents (abfd, section, locationp, offset, count, get) bfd *abfd; asection *section; PTR locationp; - file_ptr offset; + file_ptr offset ATTRIBUTE_UNUSED; bfd_size_type count; boolean get; { @@ -776,7 +778,7 @@ writesym (dst, sym) static void out (abfd, type, start, end) bfd *abfd; - char type; + int type; char *start; char *end; { @@ -816,6 +818,8 @@ tekhex_write_object_contents (abfd) asection *s; struct data_struct *d; + tekhex_init (); + bytes_written = 0; /* And the raw data */ @@ -867,50 +871,53 @@ tekhex_write_object_contents (abfd) } /* And the symbols */ - for (p = abfd->outsymbols; *p; p++) + if (abfd->outsymbols) { - int section_code = bfd_decode_symclass (*p); + for (p = abfd->outsymbols; *p; p++) + { + int section_code = bfd_decode_symclass (*p); - if (section_code != '?') - { /* do not include debug symbols */ - asymbol *s = *p; - char *dst = buffer; + if (section_code != '?') + { /* do not include debug symbols */ + asymbol *s = *p; + char *dst = buffer; - writesym (&dst, s->section->name); + writesym (&dst, s->section->name); - switch (section_code) - { - case 'A': - *dst++ = '2'; - break; - case 'a': - *dst++ = '6'; - break; - case 'D': - case 'B': - case 'O': - *dst++ = '4'; - break; - case 'd': - case 'b': - case 'o': - *dst++ = '8'; - break; - case 'T': - *dst++ = '3'; - break; - case 't': - *dst++ = '7'; - break; - case 'C': - case 'U': - bfd_set_error (bfd_error_wrong_format); - return false; - } + switch (section_code) + { + case 'A': + *dst++ = '2'; + break; + case 'a': + *dst++ = '6'; + break; + case 'D': + case 'B': + case 'O': + *dst++ = '4'; + break; + case 'd': + case 'b': + case 'o': + *dst++ = '8'; + break; + case 'T': + *dst++ = '3'; + break; + case 't': + *dst++ = '7'; + break; + case 'C': + case 'U': + bfd_set_error (bfd_error_wrong_format); + return false; + } - writesym (&dst, s->name); - writevalue (&dst, s->value + s->section->vma); - out (abfd, '3', buffer, dst); + writesym (&dst, s->name); + writevalue (&dst, s->value + s->section->vma); + out (abfd, '3', buffer, dst); + } } } @@ -922,8 +929,8 @@ tekhex_write_object_contents (abfd) static int tekhex_sizeof_headers (abfd, exec) - bfd *abfd; - boolean exec; + bfd *abfd ATTRIBUTE_UNUSED; + boolean exec ATTRIBUTE_UNUSED; { return 0; @@ -945,7 +952,7 @@ tekhex_make_empty_symbol (abfd) static void tekhex_get_symbol_info (ignore_abfd, symbol, ret) - bfd *ignore_abfd; + bfd *ignore_abfd ATTRIBUTE_UNUSED; asymbol *symbol; symbol_info *ret; { @@ -954,7 +961,7 @@ tekhex_get_symbol_info (ignore_abfd, symbol, ret) static void tekhex_print_symbol (ignore_abfd, filep, symbol, how) - bfd *ignore_abfd; + bfd *ignore_abfd ATTRIBUTE_UNUSED; PTR filep; asymbol *symbol; bfd_print_symbol_type how; @@ -986,7 +993,7 @@ tekhex_print_symbol (ignore_abfd, filep, symbol, how) #define tekhex_bfd_free_cached_info _bfd_generic_bfd_free_cached_info #define tekhex_new_section_hook _bfd_generic_new_section_hook -#define tekhex_bfd_is_local_label bfd_generic_is_local_label +#define tekhex_bfd_is_local_label_name bfd_generic_is_local_label_name #define tekhex_get_lineno _bfd_nosymbols_get_lineno #define tekhex_find_nearest_line _bfd_nosymbols_find_nearest_line #define tekhex_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol @@ -996,6 +1003,7 @@ tekhex_print_symbol (ignore_abfd, filep, symbol, how) #define tekhex_bfd_get_relocated_section_contents \ bfd_generic_get_relocated_section_contents #define tekhex_bfd_relax_section bfd_generic_relax_section +#define tekhex_bfd_gc_sections bfd_generic_gc_sections #define tekhex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define tekhex_bfd_final_link _bfd_generic_final_link @@ -1054,5 +1062,7 @@ const bfd_target tekhex_vec = BFD_JUMP_TABLE_LINK (tekhex), BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + NULL, + (PTR) 0 };