diff options
author | cvs2svn <> | 2000-04-04 18:32:33 +0400 |
---|---|---|
committer | cvs2svn <> | 2000-04-04 18:32:33 +0400 |
commit | 69b6206fef6dd986a554334b6519b0543cab4f5e (patch) | |
tree | 1092995ccf9aad86f4c3e43be94406c03d02a5cd /include/coff/arm.h | |
parent | 929ce68fe67a171b2e3ff506450ca893ed6532b3 (diff) |
This commit was manufactured by cvs2svn to create branch 'binutils-
2_10-branch'.
Sprout from cygnus 2000-02-22 16:18:13 UTC Ian Lance Taylor <iant@google.com> 'import libiberty from egcs'
Cherrypick from master 2000-03-30 02:19:55 UTC Jason Merrill <jason@redhat.com> ' * configure.in: -linux-gnu*, not -linux-gnu.':
ChangeLog
Makefile.in
config.guess
config.sub
config/ChangeLog
config/mh-i370pic
config/mt-aix43
config/mt-i370pic
config/mt-wince
configure
configure.in
include/ChangeLog
include/ansidecl.h
include/aout/ChangeLog
include/aout/aout64.h
include/bfdlink.h
include/coff/ChangeLog
include/coff/arm.h
include/coff/internal.h
include/coff/mcore.h
include/coff/mipspe.h
include/coff/pe.h
include/coff/sh.h
include/dis-asm.h
include/elf/ChangeLog
include/elf/arm-oabi.h
include/elf/arm.h
include/elf/avr.h
include/elf/common.h
include/elf/dwarf.h
include/elf/dwarf2.h
include/elf/hppa.h
include/elf/i370.h
include/elf/i386.h
include/elf/i960.h
include/elf/m32r.h
include/elf/m68k.h
include/elf/mcore.h
include/elf/mips.h
include/elf/mn10300.h
include/elf/pj.h
include/elf/reloc-macros.h
include/elf/sh.h
include/elf/sparc.h
include/hashtab.h
include/hp-symtab.h
include/opcode/ChangeLog
include/opcode/alpha.h
include/opcode/cgen.h
include/opcode/d10v.h
include/opcode/d30v.h
include/opcode/hppa.h
include/opcode/i370.h
include/opcode/i386.h
include/opcode/m68k.h
include/opcode/mips.h
include/opcode/mn10300.h
include/opcode/pj.h
include/opcode/ppc.h
include/partition.h
include/remote-sim.h
include/sim-d10v.h
ltconfig
ltmain.sh
mkdep
texinfo/texinfo.tex
Cherrypick from master 2000-04-04 14:32:32 UTC Alan Modra <modra@gmail.com> 'Move translated part of bug report string back into .c files so':
include/bin-bugs.h
Delete:
config/mh-aix43
configure.bat
include/wait.h
makeall.bat
Diffstat (limited to 'include/coff/arm.h')
-rw-r--r-- | include/coff/arm.h | 125 |
1 files changed, 85 insertions, 40 deletions
diff --git a/include/coff/arm.h b/include/coff/arm.h index dd578b1a7..7ca93299a 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_SOFT_FLOAT code does not use floating point instructions */ #define F_RELFLG (0x0001) @@ -40,20 +59,22 @@ struct external_filehdr { #define F_AR32WR (0x0100) #define F_APCS_26 (0x0400) #define F_APCS_SET (0x0800) +#define F_SOFT_FLOAT (0x2000) /* Bits stored in flags field of the internal_f structure */ #define F_INTERWORK (0x0010) -#define F_PIC_INT (0x0020) #define F_APCS_FLOAT (0x0040) -#define F_ARM_ARCHITECTURE_MASK (0x0c00) -#define F_ARM_2 (0x0000) -#define F_ARM_2a (0x0000) -#define F_ARM_3 (0x0400) -#define F_ARM_3M (0x0400) -#define F_ARM_4 (0x0800) -#define F_ARM_4T (0x0c00) -#define F_APCS26 (0x4000) +#define F_PIC (0x0080) +#define F_APCS26 (0x1000) +#define F_ARM_ARCHITECTURE_MASK (0x4000+0x0800+0x0400) +#define F_ARM_2 (0x0400) +#define F_ARM_2a (0x0800) +#define F_ARM_3 (0x0c00) +#define F_ARM_3M (0x4000) +#define F_ARM_4 (0x4400) +#define F_ARM_4T (0x4800) +#define F_ARM_5 (0x4c00) /* * ARMMAGIC ought to encoded the procesor type, @@ -64,10 +85,16 @@ struct external_filehdr { * XXX - NC 5/6/97 */ -#define ARMMAGIC 0xa00 /* I just made this up */ +#define ARMMAGIC 0xa00 /* I just made this up */ #define ARMBADMAG(x) (((x).f_magic != ARMMAGIC)) +#define ARMPEMAGIC 0x1c0 +#define THUMBPEMAGIC 0x1c2 + +#undef ARMBADMAG +#define ARMBADMAG(x) (((x).f_magic != ARMMAGIC) && ((x).f_magic != ARMPEMAGIC) && ((x).f_magic != THUMBPEMAGIC)) + #define FILHDR struct external_filehdr #define FILHSZ 20 @@ -85,8 +112,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; @@ -108,9 +133,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 */ @@ -145,8 +169,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; @@ -166,9 +192,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; @@ -185,37 +213,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 */ @@ -224,13 +262,12 @@ 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 */ } x_tv; /* info about .tv section (in auxent of symbol .tv)) */ - - }; #define SYMENT struct external_syment @@ -238,21 +275,29 @@ union external_auxent { #define AUXENT union external_auxent #define AUXESZ 18 - -# define _ETEXT "etext" - +#define _ETEXT "etext" /********************** RELOCATION DIRECTIVES **********************/ +#ifdef ARM_WINCE +struct external_reloc +{ + char r_vaddr[4]; + char r_symndx[4]; + char r_type[2]; +}; +#define RELOC struct external_reloc +#define RELSZ 10 - -struct external_reloc { +#else +struct external_reloc +{ char r_vaddr[4]; char r_symndx[4]; char r_type[2]; char r_offset[4]; }; - #define RELOC struct external_reloc #define RELSZ 14 +#endif |