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/ecoffswap.h

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* Generic ECOFF swapping routines, for BFD.
    2    Copyright 1992, 1993, 1994, 1995, 1996, 2000, 2001
     2   Copyright 1992, 1993, 1994, 1995, 1996, 2000, 2001, 2002
    33   Free Software Foundation, Inc.
    44   Written by Cygnus Support.
    55
    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.  */
     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.  */
    2121
    2222/* NOTE: This is a header file, but it contains executable routines.
     
    4646
    4747#ifdef ECOFF_32
    48 #define ecoff_get_off bfd_h_get_32
    49 #define ecoff_put_off bfd_h_put_32
     48#define ECOFF_GET_OFF H_GET_32
     49#define ECOFF_PUT_OFF H_PUT_32
    5050#endif
    5151#ifdef ECOFF_64
    52 #define ecoff_get_off bfd_h_get_64
    53 #define ecoff_put_off bfd_h_put_64
     52#define ECOFF_GET_OFF H_GET_64
     53#define ECOFF_PUT_OFF H_PUT_64
    5454#endif
    5555#ifdef ECOFF_SIGNED_32
    56 #define ecoff_get_off bfd_h_get_signed_32
    57 #define ecoff_put_off bfd_h_put_signed_32
     56#define ECOFF_GET_OFF H_GET_S32
     57#define ECOFF_PUT_OFF H_PUT_S32
    5858#endif
    5959#ifdef ECOFF_SIGNED_64
    60 #define ecoff_get_off bfd_h_get_signed_64
    61 #define ecoff_put_off bfd_h_put_signed_64
     60#define ECOFF_GET_OFF H_GET_S64
     61#define ECOFF_PUT_OFF H_PUT_S64
    6262#endif
    6363
     
    105105  *ext = *(struct hdr_ext *) ext_copy;
    106106
    107   intern->magic         = bfd_h_get_signed_16 (abfd, (bfd_byte *)ext->h_magic);
    108   intern->vstamp        = bfd_h_get_signed_16 (abfd, (bfd_byte *)ext->h_vstamp);
    109   intern->ilineMax      = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_ilineMax);
    110   intern->cbLine        = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbLine);
    111   intern->cbLineOffset  = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbLineOffset);
    112   intern->idnMax        = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_idnMax);
    113   intern->cbDnOffset    = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbDnOffset);
    114   intern->ipdMax        = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_ipdMax);
    115   intern->cbPdOffset    = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbPdOffset);
    116   intern->isymMax       = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_isymMax);
    117   intern->cbSymOffset   = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbSymOffset);
    118   intern->ioptMax       = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_ioptMax);
    119   intern->cbOptOffset   = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbOptOffset);
    120   intern->iauxMax       = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_iauxMax);
    121   intern->cbAuxOffset   = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbAuxOffset);
    122   intern->issMax        = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_issMax);
    123   intern->cbSsOffset    = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbSsOffset);
    124   intern->issExtMax     = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_issExtMax);
    125   intern->cbSsExtOffset = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbSsExtOffset);
    126   intern->ifdMax        = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_ifdMax);
    127   intern->cbFdOffset    = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbFdOffset);
    128   intern->crfd          = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_crfd);
    129   intern->cbRfdOffset   = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbRfdOffset);
    130   intern->iextMax       = bfd_h_get_32 (abfd, (bfd_byte *)ext->h_iextMax);
    131   intern->cbExtOffset   = ecoff_get_off (abfd, (bfd_byte *)ext->h_cbExtOffset);
     107  intern->magic         = H_GET_S16     (abfd, ext->h_magic);
     108  intern->vstamp        = H_GET_S16     (abfd, ext->h_vstamp);
     109  intern->ilineMax      = H_GET_32      (abfd, ext->h_ilineMax);
     110  intern->cbLine        = ECOFF_GET_OFF (abfd, ext->h_cbLine);
     111  intern->cbLineOffset  = ECOFF_GET_OFF (abfd, ext->h_cbLineOffset);
     112  intern->idnMax        = H_GET_32      (abfd, ext->h_idnMax);
     113  intern->cbDnOffset    = ECOFF_GET_OFF (abfd, ext->h_cbDnOffset);
     114  intern->ipdMax        = H_GET_32      (abfd, ext->h_ipdMax);
     115  intern->cbPdOffset    = ECOFF_GET_OFF (abfd, ext->h_cbPdOffset);
     116  intern->isymMax       = H_GET_32      (abfd, ext->h_isymMax);
     117  intern->cbSymOffset   = ECOFF_GET_OFF (abfd, ext->h_cbSymOffset);
     118  intern->ioptMax       = H_GET_32      (abfd, ext->h_ioptMax);
     119  intern->cbOptOffset   = ECOFF_GET_OFF (abfd, ext->h_cbOptOffset);
     120  intern->iauxMax       = H_GET_32      (abfd, ext->h_iauxMax);
     121  intern->cbAuxOffset   = ECOFF_GET_OFF (abfd, ext->h_cbAuxOffset);
     122  intern->issMax        = H_GET_32      (abfd, ext->h_issMax);
     123  intern->cbSsOffset    = ECOFF_GET_OFF (abfd, ext->h_cbSsOffset);
     124  intern->issExtMax     = H_GET_32      (abfd, ext->h_issExtMax);
     125  intern->cbSsExtOffset = ECOFF_GET_OFF (abfd, ext->h_cbSsExtOffset);
     126  intern->ifdMax        = H_GET_32      (abfd, ext->h_ifdMax);
     127  intern->cbFdOffset    = ECOFF_GET_OFF (abfd, ext->h_cbFdOffset);
     128  intern->crfd          = H_GET_32      (abfd, ext->h_crfd);
     129  intern->cbRfdOffset   = ECOFF_GET_OFF (abfd, ext->h_cbRfdOffset);
     130  intern->iextMax       = H_GET_32      (abfd, ext->h_iextMax);
     131  intern->cbExtOffset   = ECOFF_GET_OFF (abfd, ext->h_cbExtOffset);
    132132
    133133#ifdef TEST
     
    150150  *intern = *intern_copy;
    151151
    152   bfd_h_put_signed_16 (abfd, intern->magic, (bfd_byte *)ext->h_magic);
    153   bfd_h_put_signed_16 (abfd, intern->vstamp, (bfd_byte *)ext->h_vstamp);
    154   bfd_h_put_32 (abfd, intern->ilineMax, (bfd_byte *)ext->h_ilineMax);
    155   ecoff_put_off (abfd, intern->cbLine, (bfd_byte *)ext->h_cbLine);
    156   ecoff_put_off (abfd, intern->cbLineOffset, (bfd_byte *)ext->h_cbLineOffset);
    157   bfd_h_put_32 (abfd, intern->idnMax, (bfd_byte *)ext->h_idnMax);
    158   ecoff_put_off (abfd, intern->cbDnOffset, (bfd_byte *)ext->h_cbDnOffset);
    159   bfd_h_put_32 (abfd, intern->ipdMax, (bfd_byte *)ext->h_ipdMax);
    160   ecoff_put_off (abfd, intern->cbPdOffset, (bfd_byte *)ext->h_cbPdOffset);
    161   bfd_h_put_32 (abfd, intern->isymMax, (bfd_byte *)ext->h_isymMax);
    162   ecoff_put_off (abfd, intern->cbSymOffset, (bfd_byte *)ext->h_cbSymOffset);
    163   bfd_h_put_32 (abfd, intern->ioptMax, (bfd_byte *)ext->h_ioptMax);
    164   ecoff_put_off (abfd, intern->cbOptOffset, (bfd_byte *)ext->h_cbOptOffset);
    165   bfd_h_put_32 (abfd, intern->iauxMax, (bfd_byte *)ext->h_iauxMax);
    166   ecoff_put_off (abfd, intern->cbAuxOffset, (bfd_byte *)ext->h_cbAuxOffset);
    167   bfd_h_put_32 (abfd, intern->issMax, (bfd_byte *)ext->h_issMax);
    168   ecoff_put_off (abfd, intern->cbSsOffset, (bfd_byte *)ext->h_cbSsOffset);
    169   bfd_h_put_32 (abfd, intern->issExtMax, (bfd_byte *)ext->h_issExtMax);
    170   ecoff_put_off (abfd, intern->cbSsExtOffset, (bfd_byte *)ext->h_cbSsExtOffset);
    171   bfd_h_put_32 (abfd, intern->ifdMax, (bfd_byte *)ext->h_ifdMax);
    172   ecoff_put_off (abfd, intern->cbFdOffset, (bfd_byte *)ext->h_cbFdOffset);
    173   bfd_h_put_32 (abfd, intern->crfd, (bfd_byte *)ext->h_crfd);
    174   ecoff_put_off (abfd, intern->cbRfdOffset, (bfd_byte *)ext->h_cbRfdOffset);
    175   bfd_h_put_32 (abfd, intern->iextMax, (bfd_byte *)ext->h_iextMax);
    176   ecoff_put_off (abfd, intern->cbExtOffset, (bfd_byte *)ext->h_cbExtOffset);
    177 
    178 #ifdef TEST
    179   if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
     152  H_PUT_S16     (abfd, intern->magic,         ext->h_magic);
     153  H_PUT_S16     (abfd, intern->vstamp,        ext->h_vstamp);
     154  H_PUT_32      (abfd, intern->ilineMax,      ext->h_ilineMax);
     155  ECOFF_PUT_OFF (abfd, intern->cbLine,        ext->h_cbLine);
     156  ECOFF_PUT_OFF (abfd, intern->cbLineOffset,  ext->h_cbLineOffset);
     157  H_PUT_32      (abfd, intern->idnMax,        ext->h_idnMax);
     158  ECOFF_PUT_OFF (abfd, intern->cbDnOffset,    ext->h_cbDnOffset);
     159  H_PUT_32      (abfd, intern->ipdMax,        ext->h_ipdMax);
     160  ECOFF_PUT_OFF (abfd, intern->cbPdOffset,    ext->h_cbPdOffset);
     161  H_PUT_32      (abfd, intern->isymMax,       ext->h_isymMax);
     162  ECOFF_PUT_OFF (abfd, intern->cbSymOffset,   ext->h_cbSymOffset);
     163  H_PUT_32      (abfd, intern->ioptMax,       ext->h_ioptMax);
     164  ECOFF_PUT_OFF (abfd, intern->cbOptOffset,   ext->h_cbOptOffset);
     165  H_PUT_32      (abfd, intern->iauxMax,       ext->h_iauxMax);
     166  ECOFF_PUT_OFF (abfd, intern->cbAuxOffset,   ext->h_cbAuxOffset);
     167  H_PUT_32      (abfd, intern->issMax,        ext->h_issMax);
     168  ECOFF_PUT_OFF (abfd, intern->cbSsOffset,    ext->h_cbSsOffset);
     169  H_PUT_32      (abfd, intern->issExtMax,     ext->h_issExtMax);
     170  ECOFF_PUT_OFF (abfd, intern->cbSsExtOffset, ext->h_cbSsExtOffset);
     171  H_PUT_32      (abfd, intern->ifdMax,        ext->h_ifdMax);
     172  ECOFF_PUT_OFF (abfd, intern->cbFdOffset,    ext->h_cbFdOffset);
     173  H_PUT_32      (abfd, intern->crfd,          ext->h_crfd);
     174  ECOFF_PUT_OFF (abfd, intern->cbRfdOffset,   ext->h_cbRfdOffset);
     175  H_PUT_32      (abfd, intern->iextMax,       ext->h_iextMax);
     176  ECOFF_PUT_OFF (abfd, intern->cbExtOffset,   ext->h_cbExtOffset);
     177
     178#ifdef TEST
     179  if (memcmp ((char *) ext, (char *) intern, sizeof (*intern)) != 0)
    180180    abort ();
    181181#endif
     
    194194  *ext = *(struct fdr_ext *) ext_copy;
    195195
    196   intern->adr           = ecoff_get_off (abfd, (bfd_byte *)ext->f_adr);
    197   intern->rss           = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_rss);
     196  intern->adr           = ECOFF_GET_OFF (abfd, ext->f_adr);
     197  intern->rss           = H_GET_32 (abfd, ext->f_rss);
    198198#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    199199  if (intern->rss == (signed long) 0xffffffff)
    200200    intern->rss = -1;
    201201#endif
    202   intern->issBase       = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_issBase);
    203   intern->cbSs          = ecoff_get_off (abfd, (bfd_byte *)ext->f_cbSs);
    204   intern->isymBase      = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_isymBase);
    205   intern->csym          = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_csym);
    206   intern->ilineBase     = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_ilineBase);
    207   intern->cline         = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_cline);
    208   intern->ioptBase      = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_ioptBase);
    209   intern->copt          = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_copt);
     202  intern->issBase       = H_GET_32 (abfd, ext->f_issBase);
     203  intern->cbSs          = ECOFF_GET_OFF (abfd, ext->f_cbSs);
     204  intern->isymBase      = H_GET_32 (abfd, ext->f_isymBase);
     205  intern->csym          = H_GET_32 (abfd, ext->f_csym);
     206  intern->ilineBase     = H_GET_32 (abfd, ext->f_ilineBase);
     207  intern->cline         = H_GET_32 (abfd, ext->f_cline);
     208  intern->ioptBase      = H_GET_32 (abfd, ext->f_ioptBase);
     209  intern->copt          = H_GET_32 (abfd, ext->f_copt);
    210210#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
    211   intern->ipdFirst      = bfd_h_get_16 (abfd, (bfd_byte *)ext->f_ipdFirst);
    212   intern->cpd           = bfd_h_get_16 (abfd, (bfd_byte *)ext->f_cpd);
    213 #endif
    214 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    215   intern->ipdFirst      = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_ipdFirst);
    216   intern->cpd           = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_cpd);
    217 #endif
    218   intern->iauxBase      = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_iauxBase);
    219   intern->caux          = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_caux);
    220   intern->rfdBase       = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_rfdBase);
    221   intern->crfd          = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_crfd);
    222 
    223   /* now the fun stuff...  */
    224   if (bfd_header_big_endian (abfd)) {
    225     intern->lang        = (ext->f_bits1[0] & FDR_BITS1_LANG_BIG)
    226                                         >> FDR_BITS1_LANG_SH_BIG;
    227     intern->fMerge      = 0 != (ext->f_bits1[0] & FDR_BITS1_FMERGE_BIG);
    228     intern->fReadin     = 0 != (ext->f_bits1[0] & FDR_BITS1_FREADIN_BIG);
    229     intern->fBigendian  = 0 != (ext->f_bits1[0] & FDR_BITS1_FBIGENDIAN_BIG);
    230     intern->glevel      = (ext->f_bits2[0] & FDR_BITS2_GLEVEL_BIG)
    231                                         >> FDR_BITS2_GLEVEL_SH_BIG;
    232   } else {
    233     intern->lang        = (ext->f_bits1[0] & FDR_BITS1_LANG_LITTLE)
    234                                         >> FDR_BITS1_LANG_SH_LITTLE;
    235     intern->fMerge      = 0 != (ext->f_bits1[0] & FDR_BITS1_FMERGE_LITTLE);
    236     intern->fReadin     = 0 != (ext->f_bits1[0] & FDR_BITS1_FREADIN_LITTLE);
    237     intern->fBigendian  = 0 != (ext->f_bits1[0] & FDR_BITS1_FBIGENDIAN_LITTLE);
    238     intern->glevel      = (ext->f_bits2[0] & FDR_BITS2_GLEVEL_LITTLE)
    239                                         >> FDR_BITS2_GLEVEL_SH_LITTLE;
    240   }
     211  intern->ipdFirst      = H_GET_16 (abfd, ext->f_ipdFirst);
     212  intern->cpd           = H_GET_16 (abfd, ext->f_cpd);
     213#endif
     214#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     215  intern->ipdFirst      = H_GET_32 (abfd, ext->f_ipdFirst);
     216  intern->cpd           = H_GET_32 (abfd, ext->f_cpd);
     217#endif
     218  intern->iauxBase      = H_GET_32 (abfd, ext->f_iauxBase);
     219  intern->caux          = H_GET_32 (abfd, ext->f_caux);
     220  intern->rfdBase       = H_GET_32 (abfd, ext->f_rfdBase);
     221  intern->crfd          = H_GET_32 (abfd, ext->f_crfd);
     222
     223  /* Now the fun stuff...  */
     224  if (bfd_header_big_endian (abfd))
     225    {
     226      intern->lang       = ((ext->f_bits1[0] & FDR_BITS1_LANG_BIG)
     227                            >> FDR_BITS1_LANG_SH_BIG);
     228      intern->fMerge     = 0 != (ext->f_bits1[0] & FDR_BITS1_FMERGE_BIG);
     229      intern->fReadin    = 0 != (ext->f_bits1[0] & FDR_BITS1_FREADIN_BIG);
     230      intern->fBigendian = 0 != (ext->f_bits1[0] & FDR_BITS1_FBIGENDIAN_BIG);
     231      intern->glevel     = ((ext->f_bits2[0] & FDR_BITS2_GLEVEL_BIG)
     232                            >> FDR_BITS2_GLEVEL_SH_BIG);
     233    }
     234  else
     235    {
     236      intern->lang       = ((ext->f_bits1[0] & FDR_BITS1_LANG_LITTLE)
     237                            >> FDR_BITS1_LANG_SH_LITTLE);
     238      intern->fMerge     = 0 != (ext->f_bits1[0] & FDR_BITS1_FMERGE_LITTLE);
     239      intern->fReadin    = 0 != (ext->f_bits1[0] & FDR_BITS1_FREADIN_LITTLE);
     240      intern->fBigendian = 0 != (ext->f_bits1[0] & FDR_BITS1_FBIGENDIAN_LITTLE);
     241      intern->glevel     = ((ext->f_bits2[0] & FDR_BITS2_GLEVEL_LITTLE)
     242                            >> FDR_BITS2_GLEVEL_SH_LITTLE);
     243    }
    241244  intern->reserved = 0;
    242245
    243   intern->cbLineOffset  = ecoff_get_off (abfd, (bfd_byte *)ext->f_cbLineOffset);
    244   intern->cbLine        = ecoff_get_off (abfd, (bfd_byte *)ext->f_cbLine);
     246  intern->cbLineOffset  = ECOFF_GET_OFF (abfd, ext->f_cbLineOffset);
     247  intern->cbLine        = ECOFF_GET_OFF (abfd, ext->f_cbLine);
    245248
    246249#ifdef TEST
     
    261264  FDR intern[1];
    262265
    263   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    264 
    265   ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->f_adr);
    266   bfd_h_put_32 (abfd, intern->rss, (bfd_byte *)ext->f_rss);
    267   bfd_h_put_32 (abfd, intern->issBase, (bfd_byte *)ext->f_issBase);
    268   ecoff_put_off (abfd, intern->cbSs, (bfd_byte *)ext->f_cbSs);
    269   bfd_h_put_32 (abfd, intern->isymBase, (bfd_byte *)ext->f_isymBase);
    270   bfd_h_put_32 (abfd, intern->csym, (bfd_byte *)ext->f_csym);
    271   bfd_h_put_32 (abfd, intern->ilineBase, (bfd_byte *)ext->f_ilineBase);
    272   bfd_h_put_32 (abfd, intern->cline, (bfd_byte *)ext->f_cline);
    273   bfd_h_put_32 (abfd, intern->ioptBase, (bfd_byte *)ext->f_ioptBase);
    274   bfd_h_put_32 (abfd, intern->copt, (bfd_byte *)ext->f_copt);
     266  /* Make it reasonable to do in-place.  */
     267  *intern = *intern_copy;
     268
     269  ECOFF_PUT_OFF (abfd, intern->adr,       ext->f_adr);
     270  H_PUT_32      (abfd, intern->rss,       ext->f_rss);
     271  H_PUT_32      (abfd, intern->issBase,   ext->f_issBase);
     272  ECOFF_PUT_OFF (abfd, intern->cbSs,      ext->f_cbSs);
     273  H_PUT_32      (abfd, intern->isymBase,  ext->f_isymBase);
     274  H_PUT_32      (abfd, intern->csym,      ext->f_csym);
     275  H_PUT_32      (abfd, intern->ilineBase, ext->f_ilineBase);
     276  H_PUT_32      (abfd, intern->cline,     ext->f_cline);
     277  H_PUT_32      (abfd, intern->ioptBase,  ext->f_ioptBase);
     278  H_PUT_32      (abfd, intern->copt,      ext->f_copt);
    275279#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
    276   bfd_h_put_16 (abfd, intern->ipdFirst, (bfd_byte *)ext->f_ipdFirst);
    277   bfd_h_put_16 (abfd, intern->cpd, (bfd_byte *)ext->f_cpd);
    278 #endif
    279 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    280   bfd_h_put_32 (abfd, intern->ipdFirst, (bfd_byte *)ext->f_ipdFirst);
    281   bfd_h_put_32 (abfd, intern->cpd, (bfd_byte *)ext->f_cpd);
    282 #endif
    283   bfd_h_put_32 (abfd, intern->iauxBase, (bfd_byte *)ext->f_iauxBase);
    284   bfd_h_put_32 (abfd, intern->caux, (bfd_byte *)ext->f_caux);
    285   bfd_h_put_32 (abfd, intern->rfdBase, (bfd_byte *)ext->f_rfdBase);
    286   bfd_h_put_32 (abfd, intern->crfd, (bfd_byte *)ext->f_crfd);
    287 
    288   /* now the fun stuff...  */
    289   if (bfd_header_big_endian (abfd)) {
    290     ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_BIG)
    291                         & FDR_BITS1_LANG_BIG)
    292                        | (intern->fMerge ? FDR_BITS1_FMERGE_BIG : 0)
    293                        | (intern->fReadin ? FDR_BITS1_FREADIN_BIG : 0)
    294                        | (intern->fBigendian ? FDR_BITS1_FBIGENDIAN_BIG : 0));
    295     ext->f_bits2[0] = ((intern->glevel << FDR_BITS2_GLEVEL_SH_BIG)
    296                        & FDR_BITS2_GLEVEL_BIG);
    297     ext->f_bits2[1] = 0;
    298     ext->f_bits2[2] = 0;
    299   } else {
    300     ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_LITTLE)
    301                         & FDR_BITS1_LANG_LITTLE)
    302                        | (intern->fMerge ? FDR_BITS1_FMERGE_LITTLE : 0)
    303                        | (intern->fReadin ? FDR_BITS1_FREADIN_LITTLE : 0)
    304                        | (intern->fBigendian ? FDR_BITS1_FBIGENDIAN_LITTLE : 0));
    305     ext->f_bits2[0] = ((intern->glevel << FDR_BITS2_GLEVEL_SH_LITTLE)
    306                        & FDR_BITS2_GLEVEL_LITTLE);
    307     ext->f_bits2[1] = 0;
    308     ext->f_bits2[2] = 0;
    309   }
    310 
    311   ecoff_put_off (abfd, intern->cbLineOffset, (bfd_byte *)ext->f_cbLineOffset);
    312   ecoff_put_off (abfd, intern->cbLine, (bfd_byte *)ext->f_cbLine);
     280  H_PUT_16      (abfd, intern->ipdFirst,  ext->f_ipdFirst);
     281  H_PUT_16      (abfd, intern->cpd,       ext->f_cpd);
     282#endif
     283#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     284  H_PUT_32      (abfd, intern->ipdFirst,  ext->f_ipdFirst);
     285  H_PUT_32      (abfd, intern->cpd,       ext->f_cpd);
     286#endif
     287  H_PUT_32      (abfd, intern->iauxBase,  ext->f_iauxBase);
     288  H_PUT_32      (abfd, intern->caux,      ext->f_caux);
     289  H_PUT_32      (abfd, intern->rfdBase,   ext->f_rfdBase);
     290  H_PUT_32      (abfd, intern->crfd,      ext->f_crfd);
     291
     292  /* Now the fun stuff...  */
     293  if (bfd_header_big_endian (abfd))
     294    {
     295      ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_BIG)
     296                          & FDR_BITS1_LANG_BIG)
     297                         | (intern->fMerge ? FDR_BITS1_FMERGE_BIG : 0)
     298                         | (intern->fReadin ? FDR_BITS1_FREADIN_BIG : 0)
     299                         | (intern->fBigendian ? FDR_BITS1_FBIGENDIAN_BIG : 0));
     300      ext->f_bits2[0] = ((intern->glevel << FDR_BITS2_GLEVEL_SH_BIG)
     301                         & FDR_BITS2_GLEVEL_BIG);
     302      ext->f_bits2[1] = 0;
     303      ext->f_bits2[2] = 0;
     304    }
     305  else
     306    {
     307      ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_LITTLE)
     308                          & FDR_BITS1_LANG_LITTLE)
     309                         | (intern->fMerge ? FDR_BITS1_FMERGE_LITTLE : 0)
     310                         | (intern->fReadin ? FDR_BITS1_FREADIN_LITTLE : 0)
     311                         | (intern->fBigendian ? FDR_BITS1_FBIGENDIAN_LITTLE : 0));
     312      ext->f_bits2[0] = ((intern->glevel << FDR_BITS2_GLEVEL_SH_LITTLE)
     313                         & FDR_BITS2_GLEVEL_LITTLE);
     314      ext->f_bits2[1] = 0;
     315      ext->f_bits2[2] = 0;
     316    }
     317
     318  ECOFF_PUT_OFF (abfd, intern->cbLineOffset, ext->f_cbLineOffset);
     319  ECOFF_PUT_OFF (abfd, intern->cbLine, ext->f_cbLine);
    313320
    314321#ifdef TEST
     
    334341  memset ((PTR) intern, 0, sizeof (*intern));
    335342
    336   intern->adr           = ecoff_get_off (abfd, (bfd_byte *)ext->p_adr);
    337   intern->isym          = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_isym);
    338   intern->iline         = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_iline);
    339   intern->regmask       = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_regmask);
    340   intern->regoffset     = bfd_h_get_signed_32 (abfd,
    341                                                (bfd_byte *)ext->p_regoffset);
    342   intern->iopt          = bfd_h_get_signed_32 (abfd, (bfd_byte *)ext->p_iopt);
    343   intern->fregmask      = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_fregmask);
    344   intern->fregoffset    = bfd_h_get_signed_32 (abfd,
    345                                                (bfd_byte *)ext->p_fregoffset);
    346   intern->frameoffset   = bfd_h_get_signed_32 (abfd,
    347                                                (bfd_byte *)ext->p_frameoffset);
    348   intern->framereg      = bfd_h_get_16 (abfd, (bfd_byte *)ext->p_framereg);
    349   intern->pcreg         = bfd_h_get_16 (abfd, (bfd_byte *)ext->p_pcreg);
    350   intern->lnLow         = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_lnLow);
    351   intern->lnHigh        = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_lnHigh);
    352   intern->cbLineOffset  = ecoff_get_off (abfd, (bfd_byte *)ext->p_cbLineOffset);
    353 
    354 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    355   intern->gp_prologue = bfd_h_get_8 (abfd, (bfd_byte *) ext->p_gp_prologue);
     343  intern->adr           = ECOFF_GET_OFF (abfd, ext->p_adr);
     344  intern->isym          = H_GET_32 (abfd, ext->p_isym);
     345  intern->iline         = H_GET_32 (abfd, ext->p_iline);
     346  intern->regmask       = H_GET_32 (abfd, ext->p_regmask);
     347  intern->regoffset     = H_GET_S32 (abfd, ext->p_regoffset);
     348  intern->iopt          = H_GET_S32 (abfd, ext->p_iopt);
     349  intern->fregmask      = H_GET_32 (abfd, ext->p_fregmask);
     350  intern->fregoffset    = H_GET_S32 (abfd, ext->p_fregoffset);
     351  intern->frameoffset   = H_GET_S32 (abfd, ext->p_frameoffset);
     352  intern->framereg      = H_GET_16 (abfd, ext->p_framereg);
     353  intern->pcreg         = H_GET_16 (abfd, ext->p_pcreg);
     354  intern->lnLow         = H_GET_32 (abfd, ext->p_lnLow);
     355  intern->lnHigh        = H_GET_32 (abfd, ext->p_lnHigh);
     356  intern->cbLineOffset  = ECOFF_GET_OFF (abfd, ext->p_cbLineOffset);
     357
     358#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     359  if (intern->isym == (signed long) 0xffffffff)
     360    intern->isym = -1;
     361  if (intern->iline == (signed long) 0xffffffff)
     362    intern->iline = -1;
     363
     364  intern->gp_prologue = H_GET_8 (abfd, ext->p_gp_prologue);
    356365  if (bfd_header_big_endian (abfd))
    357366    {
     
    374383                             << PDR_BITS2_RESERVED_SH_LEFT_LITTLE));
    375384    }
    376   intern->localoff = bfd_h_get_8 (abfd, (bfd_byte *) ext->p_localoff);
     385  intern->localoff = H_GET_8 (abfd, ext->p_localoff);
    377386#endif
    378387
     
    394403  PDR intern[1];
    395404
    396   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    397 
    398   ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->p_adr);
    399   bfd_h_put_32 (abfd, intern->isym, (bfd_byte *)ext->p_isym);
    400   bfd_h_put_32 (abfd, intern->iline, (bfd_byte *)ext->p_iline);
    401   bfd_h_put_32 (abfd, intern->regmask, (bfd_byte *)ext->p_regmask);
    402   bfd_h_put_32 (abfd, intern->regoffset, (bfd_byte *)ext->p_regoffset);
    403   bfd_h_put_32 (abfd, intern->iopt, (bfd_byte *)ext->p_iopt);
    404   bfd_h_put_32 (abfd, intern->fregmask, (bfd_byte *)ext->p_fregmask);
    405   bfd_h_put_32 (abfd, intern->fregoffset, (bfd_byte *)ext->p_fregoffset);
    406   bfd_h_put_32 (abfd, intern->frameoffset, (bfd_byte *)ext->p_frameoffset);
    407   bfd_h_put_16 (abfd, intern->framereg, (bfd_byte *)ext->p_framereg);
    408   bfd_h_put_16 (abfd, intern->pcreg, (bfd_byte *)ext->p_pcreg);
    409   bfd_h_put_32 (abfd, intern->lnLow, (bfd_byte *)ext->p_lnLow);
    410   bfd_h_put_32 (abfd, intern->lnHigh, (bfd_byte *)ext->p_lnHigh);
    411   ecoff_put_off (abfd, intern->cbLineOffset, (bfd_byte *)ext->p_cbLineOffset);
    412 
    413 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    414   bfd_h_put_8 (abfd, intern->gp_prologue, (bfd_byte *) ext->p_gp_prologue);
     405  /* Make it reasonable to do in-place.  */
     406  *intern = *intern_copy;
     407
     408  ECOFF_PUT_OFF (abfd, intern->adr,          ext->p_adr);
     409  H_PUT_32      (abfd, intern->isym,         ext->p_isym);
     410  H_PUT_32      (abfd, intern->iline,        ext->p_iline);
     411  H_PUT_32      (abfd, intern->regmask,      ext->p_regmask);
     412  H_PUT_32      (abfd, intern->regoffset,    ext->p_regoffset);
     413  H_PUT_32      (abfd, intern->iopt,         ext->p_iopt);
     414  H_PUT_32      (abfd, intern->fregmask,     ext->p_fregmask);
     415  H_PUT_32      (abfd, intern->fregoffset,   ext->p_fregoffset);
     416  H_PUT_32      (abfd, intern->frameoffset,  ext->p_frameoffset);
     417  H_PUT_16      (abfd, intern->framereg,     ext->p_framereg);
     418  H_PUT_16      (abfd, intern->pcreg,        ext->p_pcreg);
     419  H_PUT_32      (abfd, intern->lnLow,        ext->p_lnLow);
     420  H_PUT_32      (abfd, intern->lnHigh,       ext->p_lnHigh);
     421  ECOFF_PUT_OFF (abfd, intern->cbLineOffset, ext->p_cbLineOffset);
     422
     423#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     424  H_PUT_8       (abfd, intern->gp_prologue,  ext->p_gp_prologue);
     425
    415426  if (bfd_header_big_endian (abfd))
    416427    {
     
    435446                         & PDR_BITS2_RESERVED_LITTLE);
    436447    }
    437   bfd_h_put_8 (abfd, intern->localoff, (bfd_byte *) ext->p_localoff);
     448  H_PUT_8 (abfd, intern->localoff, ext->p_localoff);
    438449#endif
    439450
     
    459470  *ext = *(struct pdr_ext *) ext_copy;
    460471
    461   intern->adr           = ecoff_get_off (abfd, (bfd_byte *)ext->p_adr);
    462   intern->isym          = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_isym);
    463   intern->iline         = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_iline);
    464   intern->regmask       = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_regmask);
    465   intern->regoffset     = bfd_h_get_signed_32 (abfd,
    466                                                (bfd_byte *)ext->p_regoffset);
    467   intern->iopt          = bfd_h_get_signed_32 (abfd, (bfd_byte *)ext->p_iopt);
    468   intern->fregmask      = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_fregmask);
    469   intern->fregoffset    = bfd_h_get_signed_32 (abfd,
    470                                                (bfd_byte *)ext->p_fregoffset);
    471   intern->frameoffset   = bfd_h_get_signed_32 (abfd,
    472                                                (bfd_byte *)ext->p_frameoffset);
    473   intern->framereg      = bfd_h_get_16 (abfd, (bfd_byte *)ext->p_framereg);
    474   intern->pcreg         = bfd_h_get_16 (abfd, (bfd_byte *)ext->p_pcreg);
    475   intern->lnLow         = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_lnLow);
    476   intern->lnHigh        = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_lnHigh);
    477   intern->cbLineOffset  = ecoff_get_off (abfd, (bfd_byte *)ext->p_cbLineOffset);
     472  intern->adr           = ECOFF_GET_OFF (abfd, ext->p_adr);
     473  intern->isym          = H_GET_32 (abfd, ext->p_isym);
     474  intern->iline         = H_GET_32 (abfd, ext->p_iline);
     475  intern->regmask       = H_GET_32 (abfd, ext->p_regmask);
     476  intern->regoffset     = H_GET_S32 (abfd, ext->p_regoffset);
     477  intern->iopt          = H_GET_S32 (abfd, ext->p_iopt);
     478  intern->fregmask      = H_GET_32 (abfd, ext->p_fregmask);
     479  intern->fregoffset    = H_GET_S32 (abfd, ext->p_fregoffset);
     480  intern->frameoffset   = H_GET_S32 (abfd, ext->p_frameoffset);
     481  intern->framereg      = H_GET_16 (abfd, ext->p_framereg);
     482  intern->pcreg         = H_GET_16 (abfd, ext->p_pcreg);
     483  intern->lnLow         = H_GET_32 (abfd, ext->p_lnLow);
     484  intern->lnHigh        = H_GET_32 (abfd, ext->p_lnHigh);
     485  intern->cbLineOffset  = ECOFF_GET_OFF (abfd, ext->p_cbLineOffset);
    478486
    479487#ifdef TEST
     
    494502  PDR intern[1];
    495503
    496   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    497 
    498   ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->p_adr);
    499   bfd_h_put_32 (abfd, intern->isym, (bfd_byte *)ext->p_isym);
    500   bfd_h_put_32 (abfd, intern->iline, (bfd_byte *)ext->p_iline);
    501   bfd_h_put_32 (abfd, intern->regmask, (bfd_byte *)ext->p_regmask);
    502   bfd_h_put_32 (abfd, intern->regoffset, (bfd_byte *)ext->p_regoffset);
    503   bfd_h_put_32 (abfd, intern->iopt, (bfd_byte *)ext->p_iopt);
    504   bfd_h_put_32 (abfd, intern->fregmask, (bfd_byte *)ext->p_fregmask);
    505   bfd_h_put_32 (abfd, intern->fregoffset, (bfd_byte *)ext->p_fregoffset);
    506   bfd_h_put_32 (abfd, intern->frameoffset, (bfd_byte *)ext->p_frameoffset);
    507   bfd_h_put_16 (abfd, intern->framereg, (bfd_byte *)ext->p_framereg);
    508   bfd_h_put_16 (abfd, intern->pcreg, (bfd_byte *)ext->p_pcreg);
    509   bfd_h_put_32 (abfd, intern->lnLow, (bfd_byte *)ext->p_lnLow);
    510   bfd_h_put_32 (abfd, intern->lnHigh, (bfd_byte *)ext->p_lnHigh);
    511   ecoff_put_off (abfd, intern->cbLineOffset, (bfd_byte *)ext->p_cbLineOffset);
     504  /* Make it reasonable to do in-place.  */
     505  *intern = *intern_copy;
     506
     507  ECOFF_PUT_OFF (abfd, intern->adr,          ext->p_adr);
     508  H_PUT_32      (abfd, intern->isym,         ext->p_isym);
     509  H_PUT_32      (abfd, intern->iline,        ext->p_iline);
     510  H_PUT_32      (abfd, intern->regmask,      ext->p_regmask);
     511  H_PUT_32      (abfd, intern->regoffset,    ext->p_regoffset);
     512  H_PUT_32      (abfd, intern->iopt,         ext->p_iopt);
     513  H_PUT_32      (abfd, intern->fregmask,     ext->p_fregmask);
     514  H_PUT_32      (abfd, intern->fregoffset,   ext->p_fregoffset);
     515  H_PUT_32      (abfd, intern->frameoffset,  ext->p_frameoffset);
     516  H_PUT_16      (abfd, intern->framereg,     ext->p_framereg);
     517  H_PUT_16      (abfd, intern->pcreg,        ext->p_pcreg);
     518  H_PUT_32      (abfd, intern->lnLow,        ext->p_lnLow);
     519  H_PUT_32      (abfd, intern->lnHigh,       ext->p_lnHigh);
     520  ECOFF_PUT_OFF (abfd, intern->cbLineOffset, ext->p_cbLineOffset);
    512521
    513522#ifdef TEST
     
    530539  *ext = *(struct sym_ext *) ext_copy;
    531540
    532   intern->iss           = bfd_h_get_32 (abfd, (bfd_byte *)ext->s_iss);
    533   intern->value         = ecoff_get_off (abfd, (bfd_byte *)ext->s_value);
    534 
    535   /* now the fun stuff...  */
    536   if (bfd_header_big_endian (abfd)) {
    537     intern->st          =  (ext->s_bits1[0] & SYM_BITS1_ST_BIG)
    538                                            >> SYM_BITS1_ST_SH_BIG;
    539     intern->sc          = ((ext->s_bits1[0] & SYM_BITS1_SC_BIG)
    540                                            << SYM_BITS1_SC_SH_LEFT_BIG)
    541                         | ((ext->s_bits2[0] & SYM_BITS2_SC_BIG)
    542                                            >> SYM_BITS2_SC_SH_BIG);
    543     intern->reserved    = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_BIG);
    544     intern->index       = ((ext->s_bits2[0] & SYM_BITS2_INDEX_BIG)
    545                                            << SYM_BITS2_INDEX_SH_LEFT_BIG)
    546                         | (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_BIG)
    547                         | (ext->s_bits4[0] << SYM_BITS4_INDEX_SH_LEFT_BIG);
    548   } else {
    549     intern->st          =  (ext->s_bits1[0] & SYM_BITS1_ST_LITTLE)
    550                                            >> SYM_BITS1_ST_SH_LITTLE;
    551     intern->sc          = ((ext->s_bits1[0] & SYM_BITS1_SC_LITTLE)
    552                                            >> SYM_BITS1_SC_SH_LITTLE)
    553                         | ((ext->s_bits2[0] & SYM_BITS2_SC_LITTLE)
    554                                            << SYM_BITS2_SC_SH_LEFT_LITTLE);
    555     intern->reserved    = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_LITTLE);
    556     intern->index       = ((ext->s_bits2[0] & SYM_BITS2_INDEX_LITTLE)
    557                                            >> SYM_BITS2_INDEX_SH_LITTLE)
    558                         | (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_LITTLE)
    559                         | ((unsigned int) ext->s_bits4[0]
    560                            << SYM_BITS4_INDEX_SH_LEFT_LITTLE);
    561   }
     541  intern->iss           = H_GET_32 (abfd, ext->s_iss);
     542  intern->value         = ECOFF_GET_OFF (abfd, ext->s_value);
     543
     544#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     545  if (intern->iss == (signed long) 0xffffffff)
     546    intern->iss = -1;
     547#endif 
     548
     549  /* Now the fun stuff...  */
     550  if (bfd_header_big_endian (abfd))
     551    {
     552      intern->st          =  (ext->s_bits1[0] & SYM_BITS1_ST_BIG)
     553                                             >> SYM_BITS1_ST_SH_BIG;
     554      intern->sc          = ((ext->s_bits1[0] & SYM_BITS1_SC_BIG)
     555                                             << SYM_BITS1_SC_SH_LEFT_BIG)
     556                          | ((ext->s_bits2[0] & SYM_BITS2_SC_BIG)
     557                                             >> SYM_BITS2_SC_SH_BIG);
     558      intern->reserved    = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_BIG);
     559      intern->index       = ((ext->s_bits2[0] & SYM_BITS2_INDEX_BIG)
     560                                             << SYM_BITS2_INDEX_SH_LEFT_BIG)
     561                          | (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_BIG)
     562                          | (ext->s_bits4[0] << SYM_BITS4_INDEX_SH_LEFT_BIG);
     563    }
     564  else
     565    {
     566      intern->st          =  (ext->s_bits1[0] & SYM_BITS1_ST_LITTLE)
     567                                             >> SYM_BITS1_ST_SH_LITTLE;
     568      intern->sc          = ((ext->s_bits1[0] & SYM_BITS1_SC_LITTLE)
     569                                             >> SYM_BITS1_SC_SH_LITTLE)
     570                          | ((ext->s_bits2[0] & SYM_BITS2_SC_LITTLE)
     571                                             << SYM_BITS2_SC_SH_LEFT_LITTLE);
     572      intern->reserved    = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_LITTLE);
     573      intern->index       = ((ext->s_bits2[0] & SYM_BITS2_INDEX_LITTLE)
     574                                             >> SYM_BITS2_INDEX_SH_LITTLE)
     575                          | (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_LITTLE)
     576                          | ((unsigned int) ext->s_bits4[0]
     577                             << SYM_BITS4_INDEX_SH_LEFT_LITTLE);
     578    }
    562579
    563580#ifdef TEST
     
    578595  SYMR intern[1];
    579596
    580   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    581 
    582   bfd_h_put_32 (abfd, intern->iss, (bfd_byte *)ext->s_iss);
    583   ecoff_put_off (abfd, intern->value, (bfd_byte *)ext->s_value);
    584 
    585   /* now the fun stuff...  */
    586   if (bfd_header_big_endian (abfd)) {
    587     ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)
    588                         & SYM_BITS1_ST_BIG)
    589                        | ((intern->sc >> SYM_BITS1_SC_SH_LEFT_BIG)
    590                           & SYM_BITS1_SC_BIG));
    591     ext->s_bits2[0] = (((intern->sc << SYM_BITS2_SC_SH_BIG)
    592                         & SYM_BITS2_SC_BIG)
    593                        | (intern->reserved ? SYM_BITS2_RESERVED_BIG : 0)
    594                        | ((intern->index >> SYM_BITS2_INDEX_SH_LEFT_BIG)
    595                           & SYM_BITS2_INDEX_BIG));
    596     ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_BIG) & 0xff;
    597     ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_BIG) & 0xff;
    598   } else {
    599     ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_LITTLE)
    600                         & SYM_BITS1_ST_LITTLE)
    601                        | ((intern->sc << SYM_BITS1_SC_SH_LITTLE)
    602                           & SYM_BITS1_SC_LITTLE));
    603     ext->s_bits2[0] = (((intern->sc >> SYM_BITS2_SC_SH_LEFT_LITTLE)
    604                         & SYM_BITS2_SC_LITTLE)
    605                        | (intern->reserved ? SYM_BITS2_RESERVED_LITTLE : 0)
    606                        | ((intern->index << SYM_BITS2_INDEX_SH_LITTLE)
    607                           & SYM_BITS2_INDEX_LITTLE));
    608     ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_LITTLE) & 0xff;
    609     ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_LITTLE) & 0xff;
    610   }
     597  /* Make it reasonable to do in-place.  */
     598  *intern = *intern_copy;
     599
     600  H_PUT_32 (abfd, intern->iss, ext->s_iss);
     601  ECOFF_PUT_OFF (abfd, intern->value, ext->s_value);
     602
     603  /* Now the fun stuff...  */
     604  if (bfd_header_big_endian (abfd))
     605    {
     606      ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)
     607                          & SYM_BITS1_ST_BIG)
     608                         | ((intern->sc >> SYM_BITS1_SC_SH_LEFT_BIG)
     609                            & SYM_BITS1_SC_BIG));
     610      ext->s_bits2[0] = (((intern->sc << SYM_BITS2_SC_SH_BIG)
     611                          & SYM_BITS2_SC_BIG)
     612                         | (intern->reserved ? SYM_BITS2_RESERVED_BIG : 0)
     613                         | ((intern->index >> SYM_BITS2_INDEX_SH_LEFT_BIG)
     614                            & SYM_BITS2_INDEX_BIG));
     615      ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_BIG) & 0xff;
     616      ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_BIG) & 0xff;
     617    }
     618  else
     619    {
     620      ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_LITTLE)
     621                          & SYM_BITS1_ST_LITTLE)
     622                         | ((intern->sc << SYM_BITS1_SC_SH_LITTLE)
     623                            & SYM_BITS1_SC_LITTLE));
     624      ext->s_bits2[0] = (((intern->sc >> SYM_BITS2_SC_SH_LEFT_LITTLE)
     625                          & SYM_BITS2_SC_LITTLE)
     626                         | (intern->reserved ? SYM_BITS2_RESERVED_LITTLE : 0)
     627                         | ((intern->index << SYM_BITS2_INDEX_SH_LITTLE)
     628                            & SYM_BITS2_INDEX_LITTLE));
     629      ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_LITTLE) & 0xff;
     630      ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_LITTLE) & 0xff;
     631    }
    611632
    612633#ifdef TEST
     
    628649  *ext = *(struct ext_ext *) ext_copy;
    629650
    630   /* now the fun stuff...  */
    631   if (bfd_header_big_endian (abfd)) {
    632     intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);
    633     intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);
    634     intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_BIG);
    635   } else {
    636     intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_LITTLE);
    637     intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_LITTLE);
    638     intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_LITTLE);
    639   }
     651  /* Now the fun stuff...  */
     652  if (bfd_header_big_endian (abfd))
     653    {
     654      intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);
     655      intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);
     656      intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_BIG);
     657    }
     658  else
     659    {
     660      intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_LITTLE);
     661      intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_LITTLE);
     662      intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_LITTLE);
     663    }
    640664  intern->reserved = 0;
    641665
    642666#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
    643   intern->ifd           = bfd_h_get_signed_16 (abfd, (bfd_byte *)ext->es_ifd);
    644 #endif
    645 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    646   intern->ifd           = bfd_h_get_signed_32 (abfd, (bfd_byte *)ext->es_ifd);
     667  intern->ifd = H_GET_S16 (abfd, ext->es_ifd);
     668#endif
     669#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     670  intern->ifd = H_GET_S32 (abfd, ext->es_ifd);
    647671#endif
    648672
     
    666690  EXTR intern[1];
    667691
    668   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    669 
    670   /* now the fun stuff...  */
    671   if (bfd_header_big_endian (abfd)) {
    672     ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)
    673                         | (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)
    674                         | (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));
    675     ext->es_bits2[0] = 0;
    676 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    677     ext->es_bits2[1] = 0;
    678     ext->es_bits2[2] = 0;
    679 #endif
    680   } else {
    681     ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_LITTLE : 0)
    682                         | (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)
    683                         | (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));
    684     ext->es_bits2[0] = 0;
    685 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    686     ext->es_bits2[1] = 0;
    687     ext->es_bits2[2] = 0;
    688 #endif
    689   }
     692  /* Make it reasonable to do in-place.  */
     693  *intern = *intern_copy;
     694
     695  /* Now the fun stuff...  */
     696  if (bfd_header_big_endian (abfd))
     697    {
     698      ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)
     699                          | (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)
     700                          | (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));
     701      ext->es_bits2[0] = 0;
     702#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     703      ext->es_bits2[1] = 0;
     704      ext->es_bits2[2] = 0;
     705#endif
     706    }
     707  else
     708    {
     709      ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_LITTLE : 0)
     710                          | (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)
     711                          | (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));
     712      ext->es_bits2[0] = 0;
     713#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     714      ext->es_bits2[1] = 0;
     715      ext->es_bits2[2] = 0;
     716#endif
     717    }
    690718
    691719#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
    692   bfd_h_put_signed_16 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);
    693 #endif
    694 #if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
    695   bfd_h_put_signed_32 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);
     720  H_PUT_S16 (abfd, intern->ifd, ext->es_ifd);
     721#endif
     722#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
     723  H_PUT_S32 (abfd, intern->ifd, ext->es_ifd);
    696724#endif
    697725
     
    714742  struct rfd_ext *ext = (struct rfd_ext *) ext_ptr;
    715743
    716   *intern = bfd_h_get_32 (abfd, (bfd_byte *)ext->rfd);
     744  *intern = H_GET_32 (abfd, ext->rfd);
    717745
    718746#ifdef TEST
     
    732760  struct rfd_ext *ext = (struct rfd_ext *) ext_ptr;
    733761
    734   bfd_h_put_32 (abfd, *intern, (bfd_byte *)ext->rfd);
     762  H_PUT_32 (abfd, *intern, ext->rfd);
    735763
    736764#ifdef TEST
     
    773801                           &ext->o_rndx, &intern->rndx);
    774802
    775   intern->offset = bfd_h_get_32 (abfd, (bfd_byte *) ext->o_offset);
     803  intern->offset = H_GET_32 (abfd, ext->o_offset);
    776804
    777805#ifdef TEST
     
    792820  OPTR intern[1];
    793821
    794   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
     822  /* Make it reasonable to do in-place.  */
     823  *intern = *intern_copy;
    795824
    796825  if (bfd_header_big_endian (abfd))
     
    812841                            &intern->rndx, &ext->o_rndx);
    813842
    814   bfd_h_put_32 (abfd, intern->value, (bfd_byte *) ext->o_offset);
     843  H_PUT_32 (abfd, intern->value, ext->o_offset);
    815844
    816845#ifdef TEST
     
    832861  *ext = *(struct dnr_ext *) ext_copy;
    833862
    834   intern->rfd = bfd_h_get_32 (abfd, (bfd_byte *) ext->d_rfd);
    835   intern->index = bfd_h_get_32 (abfd, (bfd_byte *) ext->d_index);
     863  intern->rfd = H_GET_32 (abfd, ext->d_rfd);
     864  intern->index = H_GET_32 (abfd, ext->d_index);
    836865
    837866#ifdef TEST
     
    852881  DNR intern[1];
    853882
    854   *intern = *intern_copy;       /* Make it reasonable to do in-place.  */
    855 
    856   bfd_h_put_32 (abfd, intern->rfd, (bfd_byte *) ext->d_rfd);
    857   bfd_h_put_32 (abfd, intern->index, (bfd_byte *) ext->d_index);
    858 
    859 #ifdef TEST
    860   if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
    861     abort ();
    862 #endif
    863 }
     883  /* Make it reasonable to do in-place.  */
     884  *intern = *intern_copy;
     885
     886  H_PUT_32 (abfd, intern->rfd, ext->d_rfd);
     887  H_PUT_32 (abfd, intern->index, ext->d_index);
     888
     889#ifdef TEST
     890  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
     891    abort ();
     892#endif
     893}
Note: See TracChangeset for help on using the changeset viewer.