⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file_formats.h

📁 一个用在mips体系结构中的操作系统
💻 H
字号:
/* * Copyright (C) 1996-1998 by the Board of Trustees *    of Leland Stanford Junior University. *  * This file is part of the SimOS distribution.  * See LICENSE file for terms of the license.  * *//***************************************************************** * Structures needed to load and interpret an SGI kernel. * * $Author: bosch $ * $Date: 1998/02/10 00:28:24 $ *****************************************************************/#ifndef _FILE_FORMATS_H#define _FILE_FORMATS_H#ifdef sgi#define __ELF_H__   /* Prevent the system's elf.h from being included */#define __LIBELF_H__#define __SYS_ELFTYPES_H__#endif#include "simtypes.h"typedef struct filehdr {   uint16  f_magic;        /* magic number */   uint16  f_nscns;        /* number of sections */   int32   f_timdat;       /* time & date stamp */   int32   f_symptr;       /* file pointer to symbolic header */   int32   f_nsyms;        /* sizeof(symbolic hdr) */   uint16  f_opthdr;       /* sizeof(optional hdr) */   uint16  f_flags;        /* flags */} FILHDR;typedef struct scnhdr {   char    s_name[8];      /* section name */   int32   s_paddr;        /* physical address, aliased s_nlib */   int32   s_vaddr;        /* virtual address */   int32   s_size;         /* section size */   int32   s_scnptr;       /* file ptr to raw data for section */   int32   s_relptr;       /* file ptr to relocation */   int32   s_lnnoptr;      /* file ptr to gp histogram */   uint16  s_nreloc;       /* number of relocation entries */   uint16  s_nlnno;        /* number of gp histogram entries */   int32            s_flags;        /* flags */} SCNHDR;typedef struct aouthdr {   int16   magic;          /* see above                            */   int16   vstamp;         /* version stamp                        */   int32   tsize;          /* text size in bytes, padded to DW bdry*/   int32   dsize;          /* initialized data "  "                */   int32   bsize;          /* uninitialized data "   "             */   int32   entry;          /* entry pt.                            */   int32   text_start;     /* base of text used for this file      */   int32   data_start;     /* base of data used for this file      */   int32   bss_start;      /* base of bss used for this file       */   int32   gprmask;        /* general purpose register mask        */   int32   cprmask[4];     /* co-processor register masks          */   int32   gp_value;       /* the gp value used for this object    */} AOUTHDR;/*      ELF header */typedef __uint32_t      Elf32_Addr;typedef unsigned short  Elf32_Half;typedef __uint32_t      Elf32_Off;typedef __int32_t       Elf32_Sword;typedef __uint32_t      Elf32_Word;typedef unsigned char   Elf32_Byte;     typedef unsigned short  Elf32_Section;  /* 64 bit data types */typedef __uint64_t      Elf64_Addr;typedef unsigned short  Elf64_Half;typedef __uint64_t      Elf64_Off;typedef __int32_t       Elf64_Sword;typedef __int64_t       Elf64_Sxword;typedef __uint32_t      Elf64_Word;typedef __uint64_t      Elf64_Xword;typedef unsigned char   Elf64_Byte;     /* unsigned tiny integer */typedef unsigned short  Elf64_Section;  /* section index (unsigned) */#define EI_NIDENT       16typedef struct {        unsigned char   e_ident[EI_NIDENT];     /* ident bytes */        Elf32_Half      e_type;                 /* file type */        Elf32_Half      e_machine;              /* target machine */        Elf32_Word      e_version;              /* file version */        Elf32_Addr      e_entry;                /* start address */        Elf32_Off       e_phoff;                /* phdr file offset */        Elf32_Off       e_shoff;                /* shdr file offset */        Elf32_Word      e_flags;                /* file flags */        Elf32_Half      e_ehsize;               /* sizeof ehdr */        Elf32_Half      e_phentsize;            /* sizeof phdr */        Elf32_Half      e_phnum;                /* number phdrs */        Elf32_Half      e_shentsize;            /* sizeof shdr */        Elf32_Half      e_shnum;                /* number shdrs */        Elf32_Half      e_shstrndx;             /* shdr string index */} Elf32_Ehdr;typedef struct {	unsigned char	e_ident[EI_NIDENT];	/* ident bytes */	Elf64_Half	e_type;			/* file type */	Elf64_Half	e_machine;		/* target machine */	Elf64_Word	e_version;		/* file version */	Elf64_Addr	e_entry;		/* start address */	Elf64_Off	e_phoff;		/* phdr file offset */	Elf64_Off	e_shoff;		/* shdr file offset */	Elf64_Word	e_flags;		/* file flags */	Elf64_Half	e_ehsize;		/* sizeof ehdr */	Elf64_Half	e_phentsize;		/* sizeof phdr */	Elf64_Half	e_phnum;		/* number phdrs */	Elf64_Half	e_shentsize;		/* sizeof shdr */	Elf64_Half	e_shnum;		/* number shdrs */	Elf64_Half	e_shstrndx;		/* shdr string index */} Elf64_Ehdr;#define EI_MAG0         0               /* e_ident[] indexes */#define EI_MAG1         1#define EI_MAG2         2#define EI_MAG3         3#define EI_CLASS        4#define EI_DATA         5#define EI_VERSION      6#define EI_PAD          7#define ELFMAG0         0x7f            /* EI_MAG */#define ELFMAG1         'E'#define ELFMAG2         'L'#define ELFMAG3         'F'#define ELFMAG          "\177ELF"#define SELFMAG         4#define ELFCLASSNONE    0               /* EI_CLASS */#define ELFCLASS32      1#define ELFCLASS64      2#define ELFCLASSNUM     3typedef struct {        Elf32_Word      sh_name;        /* section name */        Elf32_Word      sh_type;        /* SHT_... */        Elf32_Word      sh_flags;       /* SHF_... */        Elf32_Addr      sh_addr;        /* virtual address */        Elf32_Off       sh_offset;      /* file offset */        Elf32_Word      sh_size;        /* section size */        Elf32_Word      sh_link;        /* misc info */        Elf32_Word      sh_info;        /* misc info */        Elf32_Word      sh_addralign;   /* memory alignment */        Elf32_Word      sh_entsize;     /* entry size if table */} Elf32_Shdr;typedef struct {	Elf64_Word	sh_name;	/* section name */	Elf64_Word	sh_type;	/* SHT_... */	Elf64_Xword	sh_flags;	/* SHF_... */	Elf64_Addr	sh_addr;	/* virtual address */	Elf64_Off	sh_offset;	/* file offset */	Elf64_Xword	sh_size;	/* section size */	Elf64_Word	sh_link;	/* misc info */	Elf64_Word	sh_info;	/* misc info */	Elf64_Xword	sh_addralign;	/* memory alignment */	Elf64_Xword	sh_entsize;	/* entry size if table */} Elf64_Shdr;#define OMAGIC  0407/* Taken from /usr/include/filehdr.h */#define  MIPSEBMAGIC    0x0160#define  MIPSEBMAGIC_2  0x0163#define  MIPSEBMAGIC_3  0x0140#define IS_MIPSEBMAGIC(x) ((x) == MIPSEBMAGIC || (x) == MIPSEBMAGIC_2 || (x) == MIPSEBMAGIC_3)#define ISCOFF(x) IS_MIPSEBMAGIC(x)#define ELFMAG0         0x7f            /* EI_MAG */#define ELFMAG1         'E'#define ELFMAG2         'L'#define ELFMAG3         'F'#define ELFMAG          "\177ELF"#define SELFMAG         4#define IS_ELF(ehdr)    ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \                        (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \                        (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \                        (ehdr).e_ident[EI_MAG3] == ELFMAG3)#endif /* _FILE_FORMATS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -