* external.h (GET_LINENO_LNNO): Use H_GET_32/16.
(PUT_LINENO_LNNO): Use H_PUT_32/16. * m88k.h (GET_LNSZ_SIZE, GET_LNSZ_LNNO, GET_SCN_NRELOC, GET_SCN_NLINNO): Use H_GET_32. (PUT_LNSZ_LNNO, PUT_LNSZ_SIZE, PUT_SCN_NRELOC, PUT_SCN_NLINNO): Use H_PUT_32. * ti.h: Formatting fixes. Make use of H_GET_* and H_PUT_* throughout. * xcoff.h: White space changes.
This commit is contained in:
parent
09cc7651e5
commit
44346d6912
|
@ -1,3 +1,14 @@
|
|||
2001-09-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* external.h (GET_LINENO_LNNO): Use H_GET_32/16.
|
||||
(PUT_LINENO_LNNO): Use H_PUT_32/16.
|
||||
* m88k.h (GET_LNSZ_SIZE, GET_LNSZ_LNNO, GET_SCN_NRELOC,
|
||||
GET_SCN_NLINNO): Use H_GET_32.
|
||||
(PUT_LNSZ_LNNO, PUT_LNSZ_SIZE, PUT_SCN_NRELOC, PUT_SCN_NLINNO):
|
||||
Use H_PUT_32.
|
||||
* ti.h: Formatting fixes. Make use of H_GET_* and H_PUT_* throughout.
|
||||
* xcoff.h: White space changes.
|
||||
|
||||
2001-09-05 Tom Rix <trix@redhat.com>
|
||||
|
||||
* xcoff.h : Add XCOFF_SYSCALL32 and XCOFF_SYSCALL64 hash table flags.
|
||||
|
|
|
@ -113,12 +113,12 @@ struct external_lineno
|
|||
#define LINESZ (4 + L_LNNO_SIZE)
|
||||
|
||||
#if L_LNNO_SIZE == 4
|
||||
#define GET_LINENO_LNNO(abfd, ext) bfd_h_get_32 (abfd, (bfd_byte *) (ext->l_lnno));
|
||||
#define PUT_LINENO_LNNO(abfd, val, ext) bfd_h_put_32 (abfd, val, (bfd_byte *) (ext->l_lnno));
|
||||
#define GET_LINENO_LNNO H_GET_32
|
||||
#define PUT_LINENO_LNNO H_PUT_32
|
||||
#endif
|
||||
#if L_LNNO_SIZE == 2
|
||||
#define GET_LINENO_LNNO(abfd, ext) bfd_h_get_16 (abfd, (bfd_byte *) (ext->l_lnno));
|
||||
#define PUT_LINENO_LNNO(abfd,val, ext) bfd_h_put_16 (abfd,val, (bfd_byte *) (ext->l_lnno));
|
||||
#define GET_LINENO_LNNO H_GET_16
|
||||
#define PUT_LINENO_LNNO H_PUT_16
|
||||
#endif
|
||||
|
||||
#endif /* not DO_NOT_DEFINE_LINENO */
|
||||
|
|
|
@ -158,20 +158,22 @@ union external_auxent
|
|||
} x_tv; /* info about .tv section (in auxent of symbol .tv)) */
|
||||
};
|
||||
|
||||
#define GET_FCN_LNNOPTR(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *)ext->x_sym.x_fcnary.x_fcn.x_lnnoptr)
|
||||
#define GET_FCN_ENDNDX(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx)
|
||||
#define PUT_FCN_LNNOPTR(abfd, in, ext) bfd_h_put_32(abfd, in, (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_lnnoptr)
|
||||
#define PUT_FCN_ENDNDX(abfd, in, ext) bfd_h_put_32(abfd, in, (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx)
|
||||
#define GET_LNSZ_SIZE(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
#define GET_LNSZ_LNNO(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_misc.x_lnsz.x_lnno)
|
||||
#define PUT_LNSZ_LNNO(abfd, in, ext) bfd_h_put_32(abfd, in, (bfd_byte *) ext->x_sym.x_misc.x_lnsz.x_lnno)
|
||||
#define PUT_LNSZ_SIZE(abfd, in, ext) bfd_h_put_32(abfd, in, (bfd_byte *) ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
#define GET_SCN_SCNLEN(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_scn.x_scnlen)
|
||||
#define GET_SCN_NRELOC(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_scn.x_nreloc)
|
||||
#define GET_SCN_NLINNO(abfd, ext) bfd_h_get_32(abfd, (bfd_byte *) ext->x_scn.x_nlinno)
|
||||
#define PUT_SCN_SCNLEN(abfd,in, ext) bfd_h_put_32(abfd, in, (bfd_byte *) ext->x_scn.x_scnlen)
|
||||
#define PUT_SCN_NRELOC(abfd,in, ext) bfd_h_put_32(abfd, in, (bfd_byte *)ext->x_scn.x_nreloc)
|
||||
#define PUT_SCN_NLINNO(abfd,in, ext) bfd_h_put_32(abfd,in, (bfd_byte *) ext->x_scn.x_nlinno)
|
||||
#define GET_LNSZ_SIZE(abfd, ext) \
|
||||
H_GET_32 (abfd, ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
#define GET_LNSZ_LNNO(abfd, ext) \
|
||||
H_GET_32 (abfd, ext->x_sym.x_misc.x_lnsz.x_lnno)
|
||||
#define PUT_LNSZ_LNNO(abfd, in, ext) \
|
||||
H_PUT_32 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_lnno)
|
||||
#define PUT_LNSZ_SIZE(abfd, in, ext) \
|
||||
H_PUT_32 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
#define GET_SCN_NRELOC(abfd, ext) \
|
||||
H_GET_32 (abfd, ext->x_scn.x_nreloc)
|
||||
#define GET_SCN_NLINNO(abfd, ext) \
|
||||
H_GET_32 (abfd, ext->x_scn.x_nlinno)
|
||||
#define PUT_SCN_NRELOC(abfd, in, ext) \
|
||||
H_PUT_32 (abfd, in, ext->x_scn.x_nreloc)
|
||||
#define PUT_SCN_NLINNO(abfd, in, ext) \
|
||||
H_PUT_32 (abfd,in, ext->x_scn.x_nlinno)
|
||||
|
||||
#define SYMENT struct external_syment
|
||||
#define SYMESZ 20
|
||||
|
|
|
@ -91,17 +91,23 @@ struct external_filehdr
|
|||
|
||||
/* we need to read/write an extra field in the coff file header */
|
||||
#ifndef COFF_ADJUST_FILEHDR_IN_POST
|
||||
#define COFF_ADJUST_FILEHDR_IN_POST(abfd,src,dst) \
|
||||
do { ((struct internal_filehdr *)(dst))->f_target_id = \
|
||||
bfd_h_get_16(abfd, (bfd_byte *)(((FILHDR *)(src))->f_target_id)); \
|
||||
} while(0)
|
||||
#define COFF_ADJUST_FILEHDR_IN_POST(abfd, src, dst) \
|
||||
do \
|
||||
{ \
|
||||
((struct internal_filehdr *)(dst))->f_target_id = \
|
||||
H_GET_16 (abfd, ((FILHDR *)(src))->f_target_id); \
|
||||
} \
|
||||
while (0)
|
||||
#endif
|
||||
|
||||
#ifndef COFF_ADJUST_FILEHDR_OUT_POST
|
||||
#define COFF_ADJUST_FILEHDR_OUT_POST(abfd,src,dst) \
|
||||
do { bfd_h_put_16(abfd, ((struct internal_filehdr *)(src))->f_target_id, \
|
||||
(bfd_byte *)(((FILHDR *)(dst))->f_target_id)); \
|
||||
} while(0)
|
||||
#define COFF_ADJUST_FILEHDR_OUT_POST(abfd, src, dst) \
|
||||
do \
|
||||
{ \
|
||||
H_PUT_16 (abfd, ((struct internal_filehdr *)(src))->f_target_id, \
|
||||
((FILHDR *)(dst))->f_target_id); \
|
||||
} \
|
||||
while (0)
|
||||
#endif
|
||||
|
||||
#define FILHDR struct external_filehdr
|
||||
|
@ -200,53 +206,59 @@ struct external_scnhdr {
|
|||
Assume we're dealing with the COFF2 scnhdr structure, and adjust
|
||||
accordingly
|
||||
*/
|
||||
#define GET_SCNHDR_NRELOC(ABFD,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, PTR))
|
||||
#define PUT_SCNHDR_NRELOC(ABFD,VAL,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,PTR))
|
||||
#define GET_SCNHDR_NLNNO(ABFD,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, (PTR)-2))
|
||||
#define PUT_SCNHDR_NLNNO(ABFD,VAL,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,(PTR)-2))
|
||||
#define GET_SCNHDR_FLAGS(ABFD,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, (PTR)-4))
|
||||
#define PUT_SCNHDR_FLAGS(ABFD,VAL,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,(PTR)-4))
|
||||
#define GET_SCNHDR_PAGE(ABFD,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_get_16 (ABFD,PTR) : bfd_h_get_8 (ABFD, (PTR)-7))
|
||||
#define GET_SCNHDR_NRELOC(ABFD, PTR) \
|
||||
(COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, PTR))
|
||||
#define PUT_SCNHDR_NRELOC(ABFD, VAL, PTR) \
|
||||
(COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, PTR))
|
||||
#define GET_SCNHDR_NLNNO(ABFD, PTR) \
|
||||
(COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, (PTR) -2))
|
||||
#define PUT_SCNHDR_NLNNO(ABFD, VAL, PTR) \
|
||||
(COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, (PTR) -2))
|
||||
#define GET_SCNHDR_FLAGS(ABFD, PTR) \
|
||||
(COFF2_P (ABFD) ? H_GET_32 (ABFD, PTR) : H_GET_16 (ABFD, (PTR) -4))
|
||||
#define PUT_SCNHDR_FLAGS(ABFD, VAL, PTR) \
|
||||
(COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, PTR) : H_PUT_16 (ABFD, VAL, (PTR) -4))
|
||||
#define GET_SCNHDR_PAGE(ABFD, PTR) \
|
||||
(COFF2_P (ABFD) ? H_GET_16 (ABFD, PTR) : H_GET_8 (ABFD, (PTR) -7))
|
||||
/* on output, make sure that the "reserved" field is zero */
|
||||
#define PUT_SCNHDR_PAGE(ABFD,VAL,PTR) \
|
||||
(COFF2_P(ABFD) ? bfd_h_put_16 (ABFD,VAL,PTR) : \
|
||||
bfd_h_put_8 (ABFD,VAL,(PTR)-7), bfd_h_put_8 (ABFD, 0, (PTR)-8))
|
||||
#define PUT_SCNHDR_PAGE(ABFD, VAL, PTR) \
|
||||
(COFF2_P (ABFD) \
|
||||
? H_PUT_16 (ABFD, VAL, PTR) \
|
||||
: H_PUT_8 (ABFD, VAL, (PTR) -7), H_PUT_8 (ABFD, 0, (PTR) -8))
|
||||
|
||||
/* TI COFF stores section size as number of bytes (address units, not octets),
|
||||
so adjust to be number of octets, which is what BFD expects */
|
||||
#define GET_SCNHDR_SIZE(ABFD,SZP) \
|
||||
(bfd_h_get_32(ABFD,SZP)*bfd_octets_per_byte(ABFD))
|
||||
#define PUT_SCNHDR_SIZE(ABFD,SZ,SZP) \
|
||||
bfd_h_put_32(ABFD,(SZ)/bfd_octets_per_byte(ABFD),SZP)
|
||||
#define GET_SCNHDR_SIZE(ABFD, SZP) \
|
||||
(H_GET_32 (ABFD, SZP) * bfd_octets_per_byte (ABFD))
|
||||
#define PUT_SCNHDR_SIZE(ABFD, SZ, SZP) \
|
||||
H_PUT_32 (ABFD, (SZ) / bfd_octets_per_byte (ABFD), SZP)
|
||||
|
||||
#define COFF_ADJUST_SCNHDR_IN_POST(ABFD,EXT,INT) \
|
||||
do { ((struct internal_scnhdr *)(INT))->s_page = \
|
||||
GET_SCNHDR_PAGE(ABFD,(bfd_byte *)((SCNHDR *)(EXT))->s_page); \
|
||||
} while(0)
|
||||
#define COFF_ADJUST_SCNHDR_IN_POST(ABFD, EXT, INT) \
|
||||
do \
|
||||
{ \
|
||||
((struct internal_scnhdr *)(INT))->s_page = \
|
||||
GET_SCNHDR_PAGE (ABFD, ((SCNHDR *)(EXT))->s_page); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* The line number and reloc overflow checking in coff_swap_scnhdr_out in
|
||||
coffswap.h doesn't use PUT_X for s_nlnno and s_nreloc.
|
||||
Due to different sized v0/v1/v2 section headers, we have to re-write these
|
||||
fields.
|
||||
*/
|
||||
#define COFF_ADJUST_SCNHDR_OUT_POST(ABFD,INT,EXT) \
|
||||
do { \
|
||||
PUT_SCNHDR_NLNNO(ABFD,((struct internal_scnhdr *)(INT))->s_nlnno,\
|
||||
(bfd_byte *)((SCNHDR *)(EXT))->s_nlnno); \
|
||||
PUT_SCNHDR_NRELOC(ABFD,((struct internal_scnhdr *)(INT))->s_nreloc,\
|
||||
(bfd_byte *)((SCNHDR *)(EXT))->s_nreloc); \
|
||||
PUT_SCNHDR_FLAGS(ABFD,((struct internal_scnhdr *)(INT))->s_flags, \
|
||||
(bfd_byte *)((SCNHDR *)(EXT))->s_flags); \
|
||||
PUT_SCNHDR_PAGE(ABFD,((struct internal_scnhdr *)(INT))->s_page, \
|
||||
(bfd_byte *)((SCNHDR *)(EXT))->s_page); \
|
||||
} while(0)
|
||||
#define COFF_ADJUST_SCNHDR_OUT_POST(ABFD, INT, EXT) \
|
||||
do \
|
||||
{ \
|
||||
PUT_SCNHDR_NLNNO (ABFD, ((struct internal_scnhdr *)(INT))->s_nlnno, \
|
||||
((SCNHDR *)(EXT))->s_nlnno); \
|
||||
PUT_SCNHDR_NRELOC (ABFD, ((struct internal_scnhdr *)(INT))->s_nreloc,\
|
||||
((SCNHDR *)(EXT))->s_nreloc); \
|
||||
PUT_SCNHDR_FLAGS (ABFD, ((struct internal_scnhdr *)(INT))->s_flags, \
|
||||
((SCNHDR *)(EXT))->s_flags); \
|
||||
PUT_SCNHDR_PAGE (ABFD, ((struct internal_scnhdr *)(INT))->s_page, \
|
||||
((SCNHDR *)(EXT))->s_page); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Page macros
|
||||
|
||||
|
@ -386,40 +398,45 @@ union external_auxent {
|
|||
#define AUXESZ 18
|
||||
|
||||
/* section lengths are in target bytes (not host bytes) */
|
||||
#define GET_SCN_SCNLEN(ABFD,EXT) \
|
||||
(bfd_h_get_32(ABFD,(bfd_byte *)(EXT)->x_scn.x_scnlen)*bfd_octets_per_byte(ABFD))
|
||||
#define PUT_SCN_SCNLEN(ABFD,INT,EXT) \
|
||||
bfd_h_put_32(ABFD,(INT)/bfd_octets_per_byte(ABFD),\
|
||||
(bfd_byte *)(EXT)->x_scn.x_scnlen)
|
||||
#define GET_SCN_SCNLEN(ABFD, EXT) \
|
||||
(H_GET_32 (ABFD, (EXT)->x_scn.x_scnlen) * bfd_octets_per_byte (ABFD))
|
||||
#define PUT_SCN_SCNLEN(ABFD, INT, EXT) \
|
||||
H_PUT_32 (ABFD, (INT) / bfd_octets_per_byte (ABFD), (EXT)->x_scn.x_scnlen)
|
||||
|
||||
/* lnsz size is in bits in COFF file, in bytes in BFD */
|
||||
#define GET_LNSZ_SIZE(abfd, ext) \
|
||||
(bfd_h_get_16(abfd, (bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_size) / \
|
||||
(class != C_FIELD ? 8 : 1))
|
||||
(H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_size) / (class != C_FIELD ? 8 : 1))
|
||||
|
||||
#define PUT_LNSZ_SIZE(abfd, in, ext) \
|
||||
bfd_h_put_16(abfd, ((class != C_FIELD) ? (in)*8 : (in)), \
|
||||
(bfd_byte*) ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
H_PUT_16 (abfd, ((class != C_FIELD) ? (in) * 8 : (in)), \
|
||||
ext->x_sym.x_misc.x_lnsz.x_size)
|
||||
|
||||
/* TI COFF stores offsets for MOS and MOU in bits; BFD expects bytes */
|
||||
#define COFF_ADJUST_SYM_IN_POST(ABFD,EXT,INT) \
|
||||
do { struct internal_syment *dst = (struct internal_syment *)(INT); \
|
||||
if (dst->n_sclass == C_MOS || dst->n_sclass == C_MOU) dst->n_value /= 8; \
|
||||
} while (0)
|
||||
#define COFF_ADJUST_SYM_IN_POST(ABFD, EXT, INT) \
|
||||
do \
|
||||
{ \
|
||||
struct internal_syment *dst = (struct internal_syment *)(INT); \
|
||||
if (dst->n_sclass == C_MOS || dst->n_sclass == C_MOU) \
|
||||
dst->n_value /= 8; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define COFF_ADJUST_SYM_OUT_POST(ABFD,INT,EXT) \
|
||||
do { struct internal_syment *src = (struct internal_syment *)(INT); \
|
||||
SYMENT *dst = (SYMENT *)(EXT); \
|
||||
if(src->n_sclass == C_MOU || src->n_sclass == C_MOS) \
|
||||
bfd_h_put_32(abfd,src->n_value * 8,(bfd_byte *)dst->e_value); \
|
||||
} while (0)
|
||||
#define COFF_ADJUST_SYM_OUT_POST(ABFD, INT, EXT) \
|
||||
do \
|
||||
{ \
|
||||
struct internal_syment *src = (struct internal_syment *)(INT); \
|
||||
SYMENT *dst = (SYMENT *)(EXT); \
|
||||
if (src->n_sclass == C_MOU || src->n_sclass == C_MOS) \
|
||||
H_PUT_32 (abfd, src->n_value * 8, dst->e_value); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Detect section-relative absolute symbols so they get flagged with a sym
|
||||
index of -1.
|
||||
*/
|
||||
#define SECTION_RELATIVE_ABSOLUTE_SYMBOL_P(RELOC,SECT) \
|
||||
((*(RELOC)->sym_ptr_ptr)->section->output_section == (SECT) \
|
||||
&& (RELOC)->howto->name[0] == 'A')
|
||||
#define SECTION_RELATIVE_ABSOLUTE_SYMBOL_P(RELOC, SECT) \
|
||||
((*(RELOC)->sym_ptr_ptr)->section->output_section == (SECT) \
|
||||
&& (RELOC)->howto->name[0] == 'A')
|
||||
|
||||
/********************** RELOCATION DIRECTIVES **********************/
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* Internal format of XCOFF object file data structures for BFD.
|
||||
|
||||
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
@ -425,7 +426,7 @@ struct xcoff_loader_info
|
|||
|
||||
/* In case we're on a 32-bit machine, construct a 64-bit "-1" value
|
||||
from smaller values. Start with zero, widen, *then* decrement. */
|
||||
#define MINUS_ONE (((bfd_vma)0) - 1)
|
||||
#define MINUS_ONE (((bfd_vma) 0) - 1)
|
||||
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue