From 2dbc8e9c1e6cdf4cbbd2a8409388f525231a2496 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 15 Jul 1999 01:34:30 +0000 Subject: [PATCH] 1999-06-21 Philip Blundell * arm.h (F_SOFTFLOAT): Define. --- include/coff/ChangeLog | 4 ++ include/coff/arm.h | 86 ++++++++++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 29 deletions(-) diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog index b0b9a5859..c8e67f16f 100644 --- a/include/coff/ChangeLog +++ b/include/coff/ChangeLog @@ -1,3 +1,7 @@ +1999-06-21 Philip Blundell + + * arm.h (F_SOFTFLOAT): Define. + 1999-07-05 Nick Clifton * arm.h (F_ARM_5): Define. diff --git a/include/coff/arm.h b/include/coff/arm.h index f9d0c8d6e..b7a00139e 100644 --- a/include/coff/arm.h +++ b/include/coff/arm.h @@ -1,10 +1,28 @@ -/*** coff information for the ARM */ +/* ARM COFF support for BFD. + Copyright (C) 1998, 1999 Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define COFFARM 1 /********************** FILE HEADER **********************/ -struct external_filehdr { +struct external_filehdr +{ char f_magic[2]; /* magic number */ char f_nscns[2]; /* number of sections */ char f_timdat[4]; /* time & date stamp */ @@ -26,6 +44,7 @@ struct external_filehdr { * F_AR32WR file has byte ordering of an AR32WR machine (e.g. vax) * F_APCS_26 file uses 26 bit ARM Procedure Calling Standard * F_APCS_SET the F_APCS_26, F_APCS_FLOAT and F_PIC bits have been initialised + * F_SOFTFLOAT code does not use floating point instructions */ #define F_RELFLG (0x0001) @@ -40,6 +59,7 @@ struct external_filehdr { #define F_AR32WR (0x0100) #define F_APCS_26 (0x0400) #define F_APCS_SET (0x0800) +#define F_SOFTFLOAT (0x2000) /* Bits stored in flags field of the internal_f structure */ @@ -86,8 +106,6 @@ typedef struct char entry[4]; /* entry pt. */ char text_start[4]; /* base of text used for this file */ char data_start[4]; /* base of data used for this file */ - - } AOUTHDR; @@ -109,9 +127,8 @@ AOUTHDR; #define NT_DEF_COMMIT 0x1000 /********************** SECTION HEADER **********************/ - - -struct external_scnhdr { +struct external_scnhdr +{ char s_name[8]; /* section name */ char s_paddr[4]; /* physical address, aliased s_nlib */ char s_vaddr[4]; /* virtual address */ @@ -146,8 +163,10 @@ struct external_scnhdr { * grouping will have l_lnno = 0 and in place of physical address will be the * symbol table index of the function name. */ -struct external_lineno { - union { +struct external_lineno +{ + union + { char l_symndx[4]; /* function name symbol index, iff l_lnno == 0*/ char l_paddr[4]; /* (physical) address of line number */ } l_addr; @@ -167,9 +186,11 @@ struct external_lineno { struct external_syment { - union { + union + { char e_name[E_SYMNMLEN]; - struct { + struct + { char e_zeroes[4]; char e_offset[4]; } e; @@ -186,37 +207,47 @@ struct external_syment #define N_BTSHFT (4) #define N_TSHIFT (2) -union external_auxent { - struct { +union external_auxent +{ + struct + { char x_tagndx[4]; /* str, un, or enum tag indx */ - union { - struct { + union + { + struct + { char x_lnno[2]; /* declaration line number */ char x_size[2]; /* str/union/array size */ } x_lnsz; char x_fsize[4]; /* size of function */ } x_misc; - union { - struct { /* if ISFCN, tag, or .bb */ + union + { + struct /* if ISFCN, tag, or .bb */ + { char x_lnnoptr[4]; /* ptr to fcn line # */ char x_endndx[4]; /* entry ndx past block end */ } x_fcn; - struct { /* if ISARY, up to 4 dimen. */ + struct /* if ISARY, up to 4 dimen. */ + { char x_dimen[E_DIMNUM][2]; } x_ary; } x_fcnary; char x_tvndx[2]; /* tv index */ } x_sym; - union { + union + { char x_fname[E_FILNMLEN]; - struct { + struct + { char x_zeroes[4]; char x_offset[4]; } x_n; } x_file; - struct { + struct + { char x_scnlen[4]; /* section length */ char x_nreloc[2]; /* # relocation entries */ char x_nlinno[2]; /* # line numbers */ @@ -225,7 +256,8 @@ union external_auxent { char x_comdat[1]; /* COMDAT selection number */ } x_scn; - struct { + struct + { char x_tvfill[4]; /* tv fill value */ char x_tvlen[2]; /* length of .tv */ char x_tvran[2][2]; /* tv range */ @@ -239,15 +271,11 @@ union external_auxent { #define AUXENT union external_auxent #define AUXESZ 18 - -# define _ETEXT "etext" - +#define _ETEXT "etext" /********************** RELOCATION DIRECTIVES **********************/ - - - -struct external_reloc { +struct external_reloc +{ char r_vaddr[4]; char r_symndx[4]; char r_type[2];