diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 10:39:24 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 10:39:24 +0000 |
commit | c9328c850e70436131e06a34f73c14cc230c18f9 (patch) | |
tree | 564c8be172778428383f3dd51aae889a6a073f15 /sys/arch/pica/include/elf.h | |
parent | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (diff) |
initial import of pica stuff (a few theo modifications already in here)
Diffstat (limited to 'sys/arch/pica/include/elf.h')
-rw-r--r-- | sys/arch/pica/include/elf.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/sys/arch/pica/include/elf.h b/sys/arch/pica/include/elf.h new file mode 100644 index 00000000000..5cb8b03421d --- /dev/null +++ b/sys/arch/pica/include/elf.h @@ -0,0 +1,137 @@ +/* $NetBSD: elf.h,v 1.2 1995/03/28 18:19:14 jtc Exp $ */ + +/* + * Copyright (c) 1994 Ted Lemon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#ifndef __MACHINE_ELF_H__ +#define __MACHINE_ELF_H__ + +/* ELF executable header... */ +struct ehdr { + char elf_magic [4]; /* Elf magic number... */ + unsigned long magic [3]; /* Magic number... */ + unsigned short type; /* Object file type... */ + unsigned short machine; /* Machine ID... */ + unsigned long version; /* File format version... */ + unsigned long entry; /* Entry point... */ + unsigned long phoff; /* Program header table offset... */ + unsigned long shoff; /* Section header table offset... */ + unsigned long flags; /* Processor-specific flags... */ + unsigned short ehsize; /* Elf header size in bytes... */ + unsigned short phsize; /* Program header size... */ + unsigned short phcount; /* Program header count... */ + unsigned short shsize; /* Section header size... */ + unsigned short shcount; /* Section header count... */ + unsigned short shstrndx; /* Section header string table index... */ +}; + +/* Program header... */ +struct phdr { + unsigned long type; /* Segment type... */ + unsigned long offset; /* File offset... */ + unsigned long vaddr; /* Virtual address... */ + unsigned long paddr; /* Physical address... */ + unsigned long filesz; /* Size of segment in file... */ + unsigned long memsz; /* Size of segment in memory... */ + unsigned long flags; /* Segment flags... */ + unsigned long align; /* Alighment, file and memory... */ +}; + +/* Section header... */ +struct shdr { + unsigned long name; /* Offset into string table of section name */ + unsigned long type; /* Type of section... */ + unsigned long flags; /* Section flags... */ + unsigned long addr; /* Section virtual address at execution... */ + unsigned long offset; /* Section file offset... */ + unsigned long size; /* Section size... */ + unsigned long link; /* Link to another section... */ + unsigned long info; /* Additional section info... */ + unsigned long align; /* Section alignment... */ + unsigned long esize; /* Entry size if section holds table... */ +}; + +/* Symbol table entry... */ +struct sym { + unsigned long name; /* Index into strtab of symbol name. */ + unsigned long value; /* Section offset, virt addr or common align. */ + unsigned long size; /* Size of object referenced. */ + unsigned type : 4; /* Symbol type (e.g., function, data)... */ + unsigned binding : 4; /* Symbol binding (e.g., global, local)... */ + unsigned char other; /* Unused. */ + unsigned short shndx; /* Section containing symbol. */ +}; + +/* Values for program header type field */ + +#define PT_NULL 0 /* Program header table entry unused */ +#define PT_LOAD 1 /* Loadable program segment */ +#define PT_DYNAMIC 2 /* Dynamic linking information */ +#define PT_INTERP 3 /* Program interpreter */ +#define PT_NOTE 4 /* Auxiliary information */ +#define PT_SHLIB 5 /* Reserved, unspecified semantics */ +#define PT_PHDR 6 /* Entry for header table itself */ +#define PT_LOPROC 0x70000000 /* Processor-specific */ +#define PT_HIPROC 0x7FFFFFFF /* Processor-specific */ +#define PT_MIPS_REGINFO PT_LOPROC /* Mips reginfo section... */ + +/* Program segment permissions, in program header flags field */ + +#define PF_X (1 << 0) /* Segment is executable */ +#define PF_W (1 << 1) /* Segment is writable */ +#define PF_R (1 << 2) /* Segment is readable */ +#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */ + +/* Reserved section indices... */ +#define SHN_UNDEF 0 +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_MIPS_ACOMMON 0xfff0 + +/* Symbol bindings... */ +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 + +/* Symbol types... */ +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 + +#define ELF_HDR_SIZE (sizeof (struct ehdr)) +#ifdef _KERNEL +int pmax_elf_makecmds __P((struct proc *, struct exec_package *)); +#endif /* _KERNEL */ +#endif /* __MACHINE_ELF_H__ */ |