1*150a6952SToomas Soome /* 2*150a6952SToomas Soome * Copyright (c) 1998 Robert Nordier 3*150a6952SToomas Soome * All rights reserved. 4*150a6952SToomas Soome * 5*150a6952SToomas Soome * Redistribution and use in source and binary forms, with or without 6*150a6952SToomas Soome * modification, are permitted provided that the following conditions 7*150a6952SToomas Soome * are met: 8*150a6952SToomas Soome * 1. Redistributions of source code must retain the above copyright 9*150a6952SToomas Soome * notice, this list of conditions and the following disclaimer. 10*150a6952SToomas Soome * 2. Redistributions in binary form must reproduce the above copyright 11*150a6952SToomas Soome * notice, this list of conditions and the following disclaimer in the 12*150a6952SToomas Soome * documentation and/or other materials provided with the distribution. 13*150a6952SToomas Soome * 14*150a6952SToomas Soome * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND 15*150a6952SToomas Soome * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*150a6952SToomas Soome * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17*150a6952SToomas Soome * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 18*150a6952SToomas Soome * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 19*150a6952SToomas Soome * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 20*150a6952SToomas Soome * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 21*150a6952SToomas Soome * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22*150a6952SToomas Soome * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 23*150a6952SToomas Soome * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 24*150a6952SToomas Soome * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25*150a6952SToomas Soome * 26*150a6952SToomas Soome * $FreeBSD$ 27*150a6952SToomas Soome */ 28*150a6952SToomas Soome 29*150a6952SToomas Soome #include <sys/elf.h> 30*150a6952SToomas Soome 31*150a6952SToomas Soome /* e_ident */ 32*150a6952SToomas Soome #define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \ 33*150a6952SToomas Soome (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \ 34*150a6952SToomas Soome (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \ 35*150a6952SToomas Soome (ehdr).e_ident[EI_MAG3] == ELFMAG3) 36*150a6952SToomas Soome 37*150a6952SToomas Soome struct elfh { 38*150a6952SToomas Soome Elf32_Ehdr e; /* ELF header */ 39*150a6952SToomas Soome Elf32_Phdr p[2]; /* program header */ 40*150a6952SToomas Soome Elf32_Shdr sh[4]; /* section header */ 41*150a6952SToomas Soome char shstrtab[28]; /* section header string table */ 42*150a6952SToomas Soome }; 43*150a6952SToomas Soome 44*150a6952SToomas Soome extern const struct elfh elfhdr; /* ELF header template */ 45