elfhdr.h revision 330449
1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 1999 Global Technology Associates, Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 22 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $FreeBSD: stable/11/usr.sbin/kgzip/elfhdr.h 330449 2018-03-05 07:26:05Z eadler $ 29 */ 30 31#include <sys/types.h> 32#define __ELF_WORD_SIZE 32 33#include <sys/elf32.h> 34#include <sys/elf_generic.h> 35#include "kgz.h" 36 37/* Section header indices */ 38#define KGZ_SH_SYMTAB 1 39#define KGZ_SH_SHSTRTAB 2 40#define KGZ_SH_STRTAB 3 41#define KGZ_SH_DATA 4 42#define KGZ_SHNUM 5 43 44/* Section header strings */ 45#define KGZ_SHSTR_ZERO "" 46#define KGZ_SHSTR_SYMTAB ".symtab" 47#define KGZ_SHSTR_SHSTRTAB ".shstrtab" 48#define KGZ_SHSTR_STRTAB ".strtab" 49#define KGZ_SHSTR_DATA ".data" 50 51/* Section header string table */ 52struct kgz_shstrtab { 53 char zero[sizeof(KGZ_SHSTR_ZERO)]; 54 char symtab[sizeof(KGZ_SHSTR_SYMTAB)]; 55 char shstrtab[sizeof(KGZ_SHSTR_SHSTRTAB)]; 56 char strtab[sizeof(KGZ_SHSTR_STRTAB)]; 57 char data[sizeof(KGZ_SHSTR_DATA)]; 58}; 59 60/* Symbol table indices */ 61#define KGZ_ST_KGZ 1 62#define KGZ_ST_KGZ_NDATA 2 63#define KGZ_STNUM 3 64 65/* Symbol table strings */ 66#define KGZ_STR_ZERO "" 67#define KGZ_STR_KGZ "kgz" 68#define KGZ_STR_KGZ_NDATA "kgz_ndata" 69 70/* String table */ 71struct kgz_strtab { 72 char zero[sizeof(KGZ_STR_ZERO)]; 73 char kgz[sizeof(KGZ_STR_KGZ)]; 74 char kgz_ndata[sizeof(KGZ_STR_KGZ_NDATA)]; 75}; 76 77/* Relocatable header format */ 78struct kgz_elfhdr { 79 Elf32_Ehdr e; 80 Elf32_Shdr sh[KGZ_SHNUM]; 81 Elf32_Sym st[KGZ_STNUM]; 82 struct kgz_shstrtab shstrtab; 83 struct kgz_strtab strtab; 84}; 85 86extern const struct kgz_elfhdr elfhdr; 87