aboutsummaryrefslogtreecommitdiffstats
path: root/ortho/mcode/coff.ads
diff options
context:
space:
mode:
Diffstat (limited to 'ortho/mcode/coff.ads')
-rw-r--r--ortho/mcode/coff.ads208
1 files changed, 0 insertions, 208 deletions
diff --git a/ortho/mcode/coff.ads b/ortho/mcode/coff.ads
deleted file mode 100644
index 6ef9cdde9..000000000
--- a/ortho/mcode/coff.ads
+++ /dev/null
@@ -1,208 +0,0 @@
--- COFF definitions.
--- Copyright (C) 2006 Tristan Gingold
---
--- GHDL 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, or (at your option) any later
--- version.
---
--- GHDL 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 GCC; see the file COPYING. If not, write to the Free
--- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--- 02111-1307, USA.
-with Interfaces; use Interfaces;
-with System; use System;
-
-package Coff is
- type Filehdr is record
- F_Magic : Unsigned_16; -- Magic number.
- F_Nscns : Unsigned_16; -- Number of sections.
- F_Timdat : Unsigned_32; -- Time and date stamp.
- F_Symptr : Unsigned_32; -- File pointer to symtab.
- F_Nsyms : Unsigned_32; -- Number of symtab entries.
- F_Opthdr : Unsigned_16; -- Size of optionnal header.
- F_Flags : Unsigned_16; -- Flags;
- end record;
-
- -- Size of Filehdr.
- Filehdr_Size : constant Natural := Filehdr'Size / Storage_Unit;
-
- -- Magic numbers.
- I386magic : constant Unsigned_16 := 16#014c#;
-
- -- Flags of file header.
- -- Relocation info stripped from file.
- F_Relflg : constant Unsigned_16 := 16#0001#;
-
- -- File is executable (no unresolved symbols).
- F_Exec : constant Unsigned_16 := 16#0002#;
-
- -- Line numbers stripped from file.
- F_Lnno : constant Unsigned_16 := 16#0004#;
-
- -- Local symbols stripped from file.
- F_Lsyms : constant Unsigned_16 := 16#0008#;
-
- type Scnhdr is record
- S_Name : String (1 .. 8); -- Section name.
- S_Paddr : Unsigned_32; -- Physical address.
- S_Vaddr : Unsigned_32; -- Virtual address.
- S_Size : Unsigned_32; -- Section size.
- S_Scnptr : Unsigned_32; -- File pointer to raw section data.
- S_Relptr : Unsigned_32; -- File pointer to relocation data.
- S_Lnnoptr : Unsigned_32; -- File pointer to line number data.
- S_Nreloc : Unsigned_16; -- Number of relocation entries.
- S_Nlnno : Unsigned_16; -- Number of line number entries.
- S_Flags : Unsigned_32; -- Flags.
- end record;
- Scnhdr_Size : constant Natural := Scnhdr'Size / Storage_Unit;
-
- -- section contains text only.
- STYP_TEXT : constant Unsigned_32 := 16#0020#;
- -- section contains data only.
- STYP_DATA : constant Unsigned_32 := 16#0040#;
- -- section contains bss only.
- STYP_BSS : constant Unsigned_32 := 16#0080#;
-
- type Strent_Type is record
- E_Zeroes : Unsigned_32;
- E_Offset : Unsigned_32;
- end record;
-
- type Sym_Name (Inline : Boolean := True) is record
- case Inline is
- when True =>
- E_Name : String (1 .. 8);
- when False =>
- E : Strent_Type;
- end case;
- end record;
- pragma Unchecked_Union (Sym_Name);
- for Sym_Name'Size use 64;
-
- type Syment is record
- E : Sym_Name; -- Name of the symbol
- E_Value : Unsigned_32; -- Value
- E_Scnum : Unsigned_16; -- Section
- E_Type : Unsigned_16;
- E_Sclass : Unsigned_8;
- E_Numaux : Unsigned_8;
- end record;
- Symesz : constant Natural := 18;
- for Syment'Size use Symesz * Storage_Unit;
-
- -- An undefined (extern) symbol.
- N_UNDEF : constant Unsigned_16 := 16#00_00#;
- -- An absolute symbol (e_value is a constant, not an address).
- N_ABS : constant Unsigned_16 := 16#Ff_Ff#;
- -- A debugging symbol.
- N_DEBUG : constant Unsigned_16 := 16#Ff_Fe#;
-
- C_NULL : constant Unsigned_8 := 0;
- C_AUTO : constant Unsigned_8 := 1;
- C_EXT : constant Unsigned_8 := 2;
- C_STAT : constant Unsigned_8 := 3;
- C_REG : constant Unsigned_8 := 4;
- C_EXTDEF : constant Unsigned_8 := 5;
- C_LABEL : constant Unsigned_8 := 6;
- C_ULABEL : constant Unsigned_8 := 7;
- C_MOS : constant Unsigned_8 := 8;
- C_ARG : constant Unsigned_8 := 9;
- C_STRTAG : constant Unsigned_8 := 10;
- C_MOU : constant Unsigned_8 := 11;
- C_UNTAG : constant Unsigned_8 := 12;
- C_TPDEF : constant Unsigned_8 := 13;
- C_USTATIC : constant Unsigned_8 := 14;
- C_ENTAG : constant Unsigned_8 := 15;
- C_MOE : constant Unsigned_8 := 16;
- C_REGPARM : constant Unsigned_8 := 17;
- C_FIELD : constant Unsigned_8 := 18;
- C_AUTOARG : constant Unsigned_8 := 19;
- C_LASTENT : constant Unsigned_8 := 20;
- C_BLOCK : constant Unsigned_8 := 100;
- C_FCN : constant Unsigned_8 := 101;
- C_EOS : constant Unsigned_8 := 102;
- C_FILE : constant Unsigned_8 := 103;
- C_LINE : constant Unsigned_8 := 104;
- C_ALIAS : constant Unsigned_8 := 105;
- C_HIDDEN : constant Unsigned_8 := 106;
- C_EFCN : constant Unsigned_8 := 255;
-
- -- Textual description of sclass.
- type Const_String_Acc is access constant String;
- type Sclass_Desc_Type is record
- Name : Const_String_Acc;
- Meaning : Const_String_Acc;
- end record;
- type Sclass_Desc_Array_Type is array (Unsigned_8) of Sclass_Desc_Type;
- Sclass_Desc : constant Sclass_Desc_Array_Type;
-
- type Auxent_File (Inline : Boolean := True) is record
- case Inline is
- when True =>
- X_Fname : String (1 .. 14);
- when False =>
- X_N : Strent_Type;
- end case;
- end record;
- pragma Unchecked_Union (Auxent_File);
-
- type Auxent_Scn is record
- X_Scnlen : Unsigned_32;
- X_Nreloc : Unsigned_16;
- X_Nlinno : Unsigned_16;
- end record;
-
- -- Relocation.
- type Reloc is record
- R_Vaddr : Unsigned_32;
- R_Symndx : Unsigned_32;
- R_Type : Unsigned_16;
- end record;
- Relsz : constant Natural := Reloc'Size / Storage_Unit;
-
- Reloc_Rel32 : constant Unsigned_16 := 20;
- Reloc_Addr32 : constant Unsigned_16 := 6;
-
-private
- subtype S is String;
- Sclass_Desc : constant Sclass_Desc_Array_Type :=
- (C_NULL => (new S'("C_NULL"), new S'("No entry")),
- C_AUTO => (new S'("C_AUTO"), new S'("Automatic variable")),
- C_EXT => (new S'("C_EXT"), new S'("External/public symbol")),
- C_STAT => (new S'("C_STAT"), new S'("static (private) symbol")),
- C_REG => (new S'("C_REG"), new S'("register variable")),
- C_EXTDEF => (new S'("C_EXTDEF"), new S'("External definition")),
- C_LABEL => (new S'("C_LABEL"), new S'("label")),
- C_ULABEL => (new S'("C_ULABEL"), new S'("undefined label")),
- C_MOS => (new S'("C_MOS"), new S'("member of structure")),
- C_ARG => (new S'("C_ARG"), new S'("function argument")),
- C_STRTAG => (new S'("C_STRTAG"), new S'("structure tag")),
- C_MOU => (new S'("C_MOU"), new S'("member of union")),
- C_UNTAG => (new S'("C_UNTAG"), new S'("union tag")),
- C_TPDEF => (new S'("C_TPDEF"), new S'("type definition")),
- C_USTATIC => (new S'("C_USTATIC"), new S'("undefined static")),
- C_ENTAG => (new S'("C_ENTAG"), new S'("enumaration tag")),
- C_MOE => (new S'("C_MOE"), new S'("member of enumeration")),
- C_REGPARM => (new S'("C_REGPARM"), new S'("register parameter")),
- C_FIELD => (new S'("C_FIELD"), new S'("bit field")),
- C_AUTOARG => (new S'("C_AUTOARG"), new S'("auto argument")),
- C_LASTENT => (new S'("C_LASTENT"), new S'("dummy entry (end of block)")),
- C_BLOCK => (new S'("C_BLOCK"), new S'("beginning or end of block")),
- C_FCN => (new S'("C_FCN"), new S'("beginning or end of function")),
- C_EOS => (new S'("C_EOS"), new S'("end of structure")),
- C_FILE => (new S'("C_FILE"), new S'("file name")),
- C_LINE => (new S'("C_LINE"),
- new S'("line number, reformatted as symbol")),
- C_ALIAS => (new S'("C_ALIAS"), new S'("duplicate tag")),
- C_HIDDEN => (new S'("C_HIDDEN"),
- new S'("ext symbol in dmert public lib")),
- C_EFCN => (new S'("C_EFCN"), new S'("physical end of function")),
- others => (null, null));
-
-end Coff;