Ignore:
Timestamp:
Aug 16, 2003, 6:59:22 PM (22 years ago)
Author:
bird
Message:

binutils v2.14 - offical sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/binutils/bfd/ihex.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* BFD back-end for Intel Hex objects.
    2    Copyright 1995, 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
     2   Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002
     3   Free Software Foundation, Inc.
    34   Written by Ian Lance Taylor of Cygnus Support <ian@cygnus.com>.
    45
    5 This file is part of BFD, the Binary File Descriptor library.
    6 
    7 This program is free software; you can redistribute it and/or modify
    8 it under the terms of the GNU General Public License as published by
    9 the Free Software Foundation; either version 2 of the License, or
    10 (at your option) any later version.
    11 
    12 This program is distributed in the hope that it will be useful,
    13 but WITHOUT ANY WARRANTY; without even the implied warranty of
    14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15 GNU General Public License for more details.
    16 
    17 You should have received a copy of the GNU General Public License
    18 along with this program; if not, write to the Free Software
    19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
     6   This file is part of BFD, the Binary File Descriptor library.
     7
     8   This program is free software; you can redistribute it and/or modify
     9   it under the terms of the GNU General Public License as published by
     10   the Free Software Foundation; either version 2 of the License, or
     11   (at your option) any later version.
     12
     13   This program is distributed in the hope that it will be useful,
     14   but WITHOUT ANY WARRANTY; without even the implied warranty of
     15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16   GNU General Public License for more details.
     17
     18   You should have received a copy of the GNU General Public License
     19   along with this program; if not, write to the Free Software
     20   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
    2021
    2122/* This is what Intel Hex files look like:
     
    123124#include "libbfd.h"
    124125#include "libiberty.h"
    125 
    126 #include <ctype.h>
    127 
    128 static void ihex_init PARAMS ((void));
    129 static boolean ihex_mkobject PARAMS ((bfd *));
    130 static INLINE int ihex_get_byte PARAMS ((bfd *, boolean *));
    131 static void ihex_bad_byte PARAMS ((bfd *, unsigned int, int, boolean));
    132 static boolean ihex_scan PARAMS ((bfd *));
    133 static const bfd_target *ihex_object_p PARAMS ((bfd *));
    134 static boolean ihex_read_section PARAMS ((bfd *, asection *, bfd_byte *));
    135 static boolean ihex_get_section_contents
     126#include "safe-ctype.h"
     127
     128static void ihex_init
     129  PARAMS ((void));
     130static bfd_boolean ihex_mkobject
     131  PARAMS ((bfd *));
     132static INLINE int ihex_get_byte
     133  PARAMS ((bfd *, bfd_boolean *));
     134static void ihex_bad_byte
     135  PARAMS ((bfd *, unsigned int, int, bfd_boolean));
     136static bfd_boolean ihex_scan
     137  PARAMS ((bfd *));
     138static const bfd_target *ihex_object_p
     139  PARAMS ((bfd *));
     140static bfd_boolean ihex_read_section
     141  PARAMS ((bfd *, asection *, bfd_byte *));
     142static bfd_boolean ihex_get_section_contents
    136143  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
    137 static boolean ihex_set_section_contents
     144static bfd_boolean ihex_set_section_contents
    138145  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
    139 static boolean ihex_write_record
    140   PARAMS ((bfd *, bfd_size_type, bfd_vma, unsigned int, bfd_byte *));
    141 static boolean ihex_write_object_contents PARAMS ((bfd *));
    142 static asymbol *ihex_make_empty_symbol PARAMS ((bfd *));
    143 static boolean ihex_set_arch_mach
     146static bfd_boolean ihex_write_record
     147  PARAMS ((bfd *, size_t, unsigned int, unsigned int, bfd_byte *));
     148static bfd_boolean ihex_write_object_contents
     149  PARAMS ((bfd *));
     150static bfd_boolean ihex_set_arch_mach
    144151  PARAMS ((bfd *, enum bfd_architecture, unsigned long));
    145 static int ihex_sizeof_headers PARAMS ((bfd *, boolean));
     152static int ihex_sizeof_headers
     153  PARAMS ((bfd *, bfd_boolean));
    146154
    147155/* The number of bytes we put on one line during output.  */
     
    149157#define CHUNK 16
    150158
    151 /* Macros for converting between hex and binary. */
    152 
    153 #define NIBBLE(x) (hex_value (x))
     159/* Macros for converting between hex and binary.  */
     160
     161#define NIBBLE(x)    (hex_value (x))
    154162#define HEX2(buffer) ((NIBBLE ((buffer)[0]) << 4) + NIBBLE ((buffer)[1]))
    155163#define HEX4(buffer) ((HEX2 (buffer) << 8) + HEX2 ((buffer) + 2))
    156 #define ISHEX(x) (hex_p (x))
     164#define ISHEX(x)     (hex_p (x))
    157165
    158166/* When we write out an ihex value, the values can not be output as
     
    180188ihex_init ()
    181189{
    182   static boolean inited;
     190  static bfd_boolean inited;
    183191
    184192  if (! inited)
    185193    {
    186       inited = true;
     194      inited = TRUE;
    187195      hex_init ();
    188196    }
     
    191199/* Create an ihex object.  */
    192200
    193 static boolean
     201static bfd_boolean
    194202ihex_mkobject (abfd)
    195203     bfd *abfd;
    196204{
    197   if (abfd->tdata.ihex_data == NULL)
    198     {
    199       struct ihex_data_struct *tdata;
    200 
    201       tdata = ((struct ihex_data_struct *)
    202                bfd_alloc (abfd, sizeof (struct ihex_data_struct)));
    203       if (tdata == NULL)
    204         return false;
    205       abfd->tdata.ihex_data = tdata;
    206       tdata->head = NULL;
    207       tdata->tail = NULL;
    208     }
    209 
    210   return true;
     205  struct ihex_data_struct *tdata;
     206  bfd_size_type amt = sizeof (struct ihex_data_struct);
     207
     208  tdata = (struct ihex_data_struct *) bfd_alloc (abfd, amt);
     209  if (tdata == NULL)
     210    return FALSE;
     211
     212  abfd->tdata.ihex_data = tdata;
     213  tdata->head = NULL;
     214  tdata->tail = NULL;
     215  return TRUE;
    211216}
    212217
     
    217222ihex_get_byte (abfd, errorptr)
    218223     bfd *abfd;
    219      boolean *errorptr;
     224     bfd_boolean *errorptr;
    220225{
    221226  bfd_byte c;
    222227
    223   if (bfd_read (&c, 1, 1, abfd) != 1)
     228  if (bfd_bread (&c, (bfd_size_type) 1, abfd) != 1)
    224229    {
    225230      if (bfd_get_error () != bfd_error_file_truncated)
    226         *errorptr = true;
     231        *errorptr = TRUE;
    227232      return EOF;
    228233    }
     
    238243     unsigned int lineno;
    239244     int c;
    240      boolean error;
     245     bfd_boolean error;
    241246{
    242247  if (c == EOF)
     
    249254      char buf[10];
    250255
    251       if (! isprint (c))
     256      if (! ISPRINT (c))
    252257        sprintf (buf, "\\%03o", (unsigned int) c);
    253258      else
     
    258263      (*_bfd_error_handler)
    259264        (_("%s:%d: unexpected character `%s' in Intel Hex file\n"),
    260          bfd_get_filename (abfd), lineno, buf);
     265         bfd_archive_filename (abfd), lineno, buf);
    261266      bfd_set_error (bfd_error_bad_value);
    262267    }
     
    266271   section for each contiguous set of bytes.  */
    267272
    268 static boolean
     273static bfd_boolean
    269274ihex_scan (abfd)
    270275     bfd *abfd;
     
    273278  bfd_vma extbase;
    274279  asection *sec;
    275   int lineno;
    276   boolean error;
     280  unsigned int lineno;
     281  bfd_boolean error;
    277282  bfd_byte *buf = NULL;
    278283  size_t bufsize;
     
    288293  sec = NULL;
    289294  lineno = 1;
    290   error = false;
     295  error = FALSE;
    291296  bufsize = 0;
     297
    292298  while ((c = ihex_get_byte (abfd, &error)) != EOF)
    293299    {
     
    316322
    317323          /* This is a data record.  */
    318 
    319324          pos = bfd_tell (abfd) - 1;
    320325
    321326          /* Read the header bytes.  */
    322 
    323           if (bfd_read (hdr, 1, 8, abfd) != 8)
     327          if (bfd_bread (hdr, (bfd_size_type) 8, abfd) != 8)
    324328            goto error_return;
    325329
     
    338342
    339343          /* Read the data bytes.  */
    340 
    341344          chars = len * 2 + 2;
    342345          if (chars >= bufsize)
    343346            {
    344               buf = (bfd_byte *) bfd_realloc (buf, chars);
     347              buf = (bfd_byte *) bfd_realloc (buf, (bfd_size_type) chars);
    345348              if (buf == NULL)
    346349                goto error_return;
     
    348351            }
    349352
    350           if (bfd_read (buf, 1, chars, abfd) != chars)
     353          if (bfd_bread (buf, (bfd_size_type) chars, abfd) != chars)
    351354            goto error_return;
    352355
     
    367370            {
    368371              (*_bfd_error_handler)
    369                 (_("%s:%d: bad checksum in Intel Hex file (expected %u, found %u)"),
    370                  bfd_get_filename (abfd), lineno,
     372                (_("%s:%u: bad checksum in Intel Hex file (expected %u, found %u)"),
     373                 bfd_archive_filename (abfd), lineno,
    371374                 (- chksum) & 0xff, (unsigned int) HEX2 (buf + 2 * i));
    372375              bfd_set_error (bfd_error_bad_value);
     
    389392                  char secbuf[20];
    390393                  char *secname;
     394                  bfd_size_type amt;
    391395
    392396                  sprintf (secbuf, ".sec%d", bfd_count_sections (abfd) + 1);
    393                   secname = (char *) bfd_alloc (abfd, strlen (secbuf) + 1);
     397                  amt = strlen (secbuf) + 1;
     398                  secname = (char *) bfd_alloc (abfd, amt);
    394399                  if (secname == NULL)
    395400                    goto error_return;
     
    412417              if (buf != NULL)
    413418                free (buf);
    414               return true;
     419              return TRUE;
    415420
    416421            case 2:
     
    419424                {
    420425                  (*_bfd_error_handler)
    421                     (_("%s:%d: bad extended address record length in Intel Hex file"),
    422                      bfd_get_filename (abfd), lineno);
     426                    (_("%s:%u: bad extended address record length in Intel Hex file"),
     427                     bfd_archive_filename (abfd), lineno);
    423428                  bfd_set_error (bfd_error_bad_value);
    424429                  goto error_return;
     
    436441                {
    437442                  (*_bfd_error_handler)
    438                     (_("%s:%d: bad extended start address length in Intel Hex file"),
    439                      bfd_get_filename (abfd), lineno);
     443                    (_("%s:%u: bad extended start address length in Intel Hex file"),
     444                     bfd_archive_filename (abfd), lineno);
    440445                  bfd_set_error (bfd_error_bad_value);
    441446                  goto error_return;
     
    453458                {
    454459                  (*_bfd_error_handler)
    455                     (_("%s:%d: bad extended linear address record length in Intel Hex file"),
    456                      bfd_get_filename (abfd), lineno);
     460                    (_("%s:%u: bad extended linear address record length in Intel Hex file"),
     461                     bfd_archive_filename (abfd), lineno);
    457462                  bfd_set_error (bfd_error_bad_value);
    458463                  goto error_return;
     
    470475                {
    471476                  (*_bfd_error_handler)
    472                     (_("%s:%d: bad extended linear start address length in Intel Hex file"),
    473                      bfd_get_filename (abfd), lineno);
     477                    (_("%s:%u: bad extended linear start address length in Intel Hex file"),
     478                     bfd_archive_filename (abfd), lineno);
    474479                  bfd_set_error (bfd_error_bad_value);
    475480                  goto error_return;
     
    487492            default:
    488493              (*_bfd_error_handler)
    489                 (_("%s:%d: unrecognized ihex type %u in Intel Hex file\n"),
    490                  bfd_get_filename (abfd), lineno, type);
     494                (_("%s:%u: unrecognized ihex type %u in Intel Hex file\n"),
     495                 bfd_archive_filename (abfd), lineno, type);
    491496              bfd_set_error (bfd_error_bad_value);
    492497              goto error_return;
     
    501506    free (buf);
    502507
    503   return true;
     508  return TRUE;
    504509
    505510 error_return:
    506511  if (buf != NULL)
    507512    free (buf);
    508   return false;
     513  return FALSE;
    509514}
    510515
     
    515520     bfd *abfd;
    516521{
     522  PTR tdata_save;
    517523  bfd_byte b[9];
    518524  unsigned int i;
     
    523529  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
    524530    return NULL;
    525   if (bfd_read (b, 1, 9, abfd) != 9)
     531  if (bfd_bread (b, (bfd_size_type) 9, abfd) != 9)
    526532    {
    527533      if (bfd_get_error () == bfd_error_file_truncated)
     
    553559
    554560  /* OK, it looks like it really is an Intel Hex file.  */
    555 
    556   if (! ihex_mkobject (abfd)
    557       || ! ihex_scan (abfd))
    558     return NULL;
     561  tdata_save = abfd->tdata.any;
     562  if (! ihex_mkobject (abfd) || ! ihex_scan (abfd))
     563    {
     564      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
     565        bfd_release (abfd, abfd->tdata.any);
     566      abfd->tdata.any = tdata_save;
     567      return NULL;
     568    }
    559569
    560570  return abfd->xvec;
     
    563573/* Read the contents of a section in an Intel Hex file.  */
    564574
    565 static boolean
     575static bfd_boolean
    566576ihex_read_section (abfd, section, contents)
    567577     bfd *abfd;
     
    573583  bfd_byte *buf = NULL;
    574584  size_t bufsize;
    575   boolean error;
     585  bfd_boolean error;
    576586
    577587  if (bfd_seek (abfd, section->filepos, SEEK_SET) != 0)
     
    580590  p = contents;
    581591  bufsize = 0;
    582   error = false;
     592  error = FALSE;
    583593  while ((c = ihex_get_byte (abfd, &error)) != EOF)
    584594    {
     
    596606      BFD_ASSERT (c == ':');
    597607
    598       if (bfd_read (hdr, 1, 8, abfd) != 8)
     608      if (bfd_bread (hdr, (bfd_size_type) 8, abfd) != 8)
    599609        goto error_return;
    600610
     
    608618          (*_bfd_error_handler)
    609619            (_("%s: internal error in ihex_read_section"),
    610              bfd_get_filename (abfd));
     620             bfd_archive_filename (abfd));
    611621          bfd_set_error (bfd_error_bad_value);
    612622          goto error_return;
     
    615625      if (len * 2 > bufsize)
    616626        {
    617           buf = (bfd_byte *) bfd_realloc (buf, len * 2);
     627          buf = (bfd_byte *) bfd_realloc (buf, (bfd_size_type) len * 2);
    618628          if (buf == NULL)
    619629            goto error_return;
     
    621631        }
    622632
    623       if (bfd_read (buf, 1, len * 2, abfd) != len * 2)
     633      if (bfd_bread (buf, (bfd_size_type) len * 2, abfd) != len * 2)
    624634        goto error_return;
    625635
     
    631641          if (buf != NULL)
    632642            free (buf);
    633           return true;
     643          return TRUE;
    634644        }
    635645
    636646      /* Skip the checksum.  */
    637       if (bfd_read (buf, 1, 2, abfd) != 2)
     647      if (bfd_bread (buf, (bfd_size_type) 2, abfd) != 2)
    638648        goto error_return;
    639649    }
     
    643653      (*_bfd_error_handler)
    644654        (_("%s: bad section length in ihex_read_section"),
    645          bfd_get_filename (abfd));
     655         bfd_archive_filename (abfd));
    646656      bfd_set_error (bfd_error_bad_value);
    647657      goto error_return;
     
    651661    free (buf);
    652662
    653   return true;
     663  return TRUE;
    654664
    655665 error_return:
    656666  if (buf != NULL)
    657667    free (buf);
    658   return false;
     668  return FALSE;
    659669}
    660670
    661671/* Get the contents of a section in an Intel Hex file.  */
    662672
    663 static boolean
     673static bfd_boolean
    664674ihex_get_section_contents (abfd, section, location, offset, count)
    665675     bfd *abfd;
     
    673683      section->used_by_bfd = bfd_alloc (abfd, section->_raw_size);
    674684      if (section->used_by_bfd == NULL)
    675         return false;
     685        return FALSE;
    676686      if (! ihex_read_section (abfd, section, section->used_by_bfd))
    677         return false;
     687        return FALSE;
    678688    }
    679689
     
    681691          (size_t) count);
    682692
    683   return true;
     693  return TRUE;
    684694}
    685695
    686696/* Set the contents of a section in an Intel Hex file.  */
    687697
    688 static boolean
     698static bfd_boolean
    689699ihex_set_section_contents (abfd, section, location, offset, count)
    690700     bfd *abfd;
     
    697707  bfd_byte *data;
    698708  struct ihex_data_struct *tdata;
     709  bfd_size_type amt;
    699710
    700711  if (count == 0
    701712      || (section->flags & SEC_ALLOC) == 0
    702713      || (section->flags & SEC_LOAD) == 0)
    703     return true;
    704 
    705   n = ((struct ihex_data_list *)
    706        bfd_alloc (abfd, sizeof (struct ihex_data_list)));
     714    return TRUE;
     715
     716  amt = sizeof (struct ihex_data_list);
     717  n = (struct ihex_data_list *) bfd_alloc (abfd, amt);
    707718  if (n == NULL)
    708     return false;
     719    return FALSE;
    709720
    710721  data = (bfd_byte *) bfd_alloc (abfd, count);
    711722  if (data == NULL)
    712     return false;
     723    return FALSE;
    713724  memcpy (data, location, (size_t) count);
    714725
     
    741752    }
    742753
    743   return true;
     754  return TRUE;
    744755}
    745756
    746757/* Write a record out to an Intel Hex file.  */
    747758
    748 static boolean
     759static bfd_boolean
    749760ihex_write_record (abfd, count, addr, type, data)
    750761     bfd *abfd;
    751      bfd_size_type count;
    752      bfd_vma addr;
     762     size_t count;
     763     unsigned int addr;
    753764     unsigned int type;
    754765     bfd_byte *data;
     
    759770  unsigned int chksum;
    760771  unsigned int i;
     772  size_t total;
    761773
    762774#define TOHEX(buf, v) \
     
    781793  p[3] = '\n';
    782794
    783   if (bfd_write (buf, 1, 9 + count * 2 + 4, abfd) != 9 + count * 2 + 4)
    784     return false;
    785 
    786   return true;
     795  total = 9 + count * 2 + 4;
     796  if (bfd_bwrite (buf, (bfd_size_type) total, abfd) != total)
     797    return FALSE;
     798
     799  return TRUE;
    787800}
    788801
    789802/* Write out an Intel Hex file.  */
    790803
    791 static boolean
     804static bfd_boolean
    792805ihex_write_object_contents (abfd)
    793806     bfd *abfd;
     
    810823      while (count > 0)
    811824        {
    812           bfd_size_type now;
     825          size_t now;
     826          unsigned int rec_addr;
    813827
    814828          now = count;
    815           if (now > CHUNK)
     829          if (count > CHUNK)
    816830            now = CHUNK;
    817831
     
    830844                  addr[1] = (bfd_byte)(segbase >> 4) & 0xff;
    831845                  if (! ihex_write_record (abfd, 2, 0, 2, addr))
    832                     return false;
     846                    return FALSE;
    833847                }
    834848              else
     
    845859                      addr[1] = 0;
    846860                      if (! ihex_write_record (abfd, 2, 0, 2, addr))
    847                         return false;
     861                        return FALSE;
    848862                      segbase = 0;
    849863                    }
     
    856870                      sprintf_vma (buf, where);
    857871                      (*_bfd_error_handler)
    858                         (_("%s: address 0x%s out of range for Intex Hex file"),
     872                        (_("%s: address 0x%s out of range for Intel Hex file"),
    859873                         bfd_get_filename (abfd), buf);
    860874                      bfd_set_error (bfd_error_bad_value);
    861                       return false;
     875                      return FALSE;
    862876                    }
    863877                  addr[0] = (bfd_byte)(extbase >> 24) & 0xff;
    864878                  addr[1] = (bfd_byte)(extbase >> 16) & 0xff;
    865879                  if (! ihex_write_record (abfd, 2, 0, 4, addr))
    866                     return false;
     880                    return FALSE;
    867881                }
    868882            }
    869883
    870           if (! ihex_write_record (abfd, now, where - (extbase + segbase),
    871                                    0, p))
    872             return false;
     884          rec_addr = where - (extbase + segbase);
     885
     886          /* Output records shouldn't cross 64K boundaries.  */
     887          if (rec_addr + now > 0xffff)
     888            now = 0x10000 - rec_addr;
     889
     890          if (! ihex_write_record (abfd, now, rec_addr, 0, p))
     891            return FALSE;
    873892
    874893          where += now;
     
    892911          startbuf[3] = (bfd_byte)start & 0xff;
    893912          if (! ihex_write_record (abfd, 4, 0, 3, startbuf))
    894             return false;
     913            return FALSE;
    895914        }
    896915      else
     
    901920          startbuf[3] = (bfd_byte)start & 0xff;
    902921          if (! ihex_write_record (abfd, 4, 0, 5, startbuf))
    903             return false;
     922            return FALSE;
    904923        }
    905924    }
    906925
    907926  if (! ihex_write_record (abfd, 0, 0, 1, NULL))
    908     return false;
    909 
    910   return true;
    911 }
    912 
    913 /* Make an empty symbol.  This is required only because
    914    bfd_make_section_anyway wants to create a symbol for the section.  */
    915 
    916 static asymbol *
    917 ihex_make_empty_symbol (abfd)
    918      bfd *abfd;
    919 {
    920   asymbol *new;
    921 
    922   new = (asymbol *) bfd_zalloc (abfd, sizeof (asymbol));
    923   if (new != NULL)
    924     new->the_bfd = abfd;
    925   return new;
     927    return FALSE;
     928
     929  return TRUE;
    926930}
    927931
     
    929933   irrelevant, so we ignore errors about unknown architectures.  */
    930934
    931 static boolean
     935static bfd_boolean
    932936ihex_set_arch_mach (abfd, arch, mach)
    933937     bfd *abfd;
     
    938942    {
    939943      if (arch != bfd_arch_unknown)
    940         return false;
    941     }
    942   return true;
     944        return FALSE;
     945    }
     946  return TRUE;
    943947}
    944948
     
    949953ihex_sizeof_headers (abfd, exec)
    950954     bfd *abfd ATTRIBUTE_UNUSED;
    951      boolean exec ATTRIBUTE_UNUSED;
     955     bfd_boolean exec ATTRIBUTE_UNUSED;
    952956{
    953957  return 0;
     
    965969#define ihex_get_symtab \
    966970  ((long (*) PARAMS ((bfd *, asymbol **))) bfd_0l)
     971#define ihex_make_empty_symbol _bfd_generic_make_empty_symbol
    967972#define ihex_print_symbol _bfd_nosymbols_print_symbol
    968973#define ihex_get_symbol_info _bfd_nosymbols_get_symbol_info
     
    984989#define ihex_bfd_relax_section bfd_generic_relax_section
    985990#define ihex_bfd_gc_sections bfd_generic_gc_sections
     991#define ihex_bfd_merge_sections bfd_generic_merge_sections
     992#define ihex_bfd_discard_group bfd_generic_discard_group
    986993#define ihex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
     994#define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
    987995#define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols
     996#define ihex_bfd_link_just_syms _bfd_generic_link_just_syms
    988997#define ihex_bfd_final_link _bfd_generic_final_link
    989998#define ihex_bfd_link_split_section _bfd_generic_link_split_section
     
    10391048
    10401049  NULL,
    1041  
     1050
    10421051  (PTR) 0
    10431052};
Note: See TracChangeset for help on using the changeset viewer.