180708Sjake/* 282895Sjake * Copyright (c) 1999 Global Technology Associates, Inc. 380708Sjake * All rights reserved. 480708Sjake * 580708Sjake * Redistribution and use in source and binary forms, with or without 680708Sjake * modification, are permitted provided that the following conditions 780708Sjake * are met: 880708Sjake * 1. Redistributions of source code must retain the above copyright 980708Sjake * notice, this list of conditions and the following disclaimer. 1080708Sjake * 2. Redistributions in binary form must reproduce the above copyright 1180708Sjake * notice, this list of conditions and the following disclaimer in the 1280708Sjake * documentation and/or other materials provided with the distribution. 1380708Sjake * 1480708Sjake * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND 1581334Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1680708Sjake * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1780708Sjake * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 1881334Sobrien * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 1980708Sjake * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 2080708Sjake * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2180708Sjake * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2280708Sjake * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2380708Sjake * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2480708Sjake * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2580708Sjake * 2680708Sjake * $FreeBSD$ 2782895Sjake */ 2880708Sjake 2980708Sjake#include <sys/types.h> 3080708Sjake#define __ELF_WORD_SIZE 32 3180709Sjake#include <sys/elf32.h> 3280709Sjake#include <sys/elf_generic.h> 3380709Sjake#include "kgz.h" 3480709Sjake 3580709Sjake/* Section header indices */ 36225890Smarius#define KGZ_SH_SYMTAB 1 37225890Smarius#define KGZ_SH_SHSTRTAB 2 38225890Smarius#define KGZ_SH_STRTAB 3 39225890Smarius#define KGZ_SH_DATA 4 4088617Sjake#define KGZ_SHNUM 5 4188617Sjake 4288617Sjake/* Section header strings */ 4388617Sjake#define KGZ_SHSTR_ZERO "" 4488617Sjake#define KGZ_SHSTR_SYMTAB ".symtab" 4588617Sjake#define KGZ_SHSTR_SHSTRTAB ".shstrtab" 4688617Sjake#define KGZ_SHSTR_STRTAB ".strtab" 4780708Sjake#define KGZ_SHSTR_DATA ".data" 4880709Sjake 4980709Sjake/* Section header string table */ 5080709Sjakestruct kgz_shstrtab { 5180709Sjake char zero[sizeof(KGZ_SHSTR_ZERO)]; 5280709Sjake char symtab[sizeof(KGZ_SHSTR_SYMTAB)]; 5380709Sjake char shstrtab[sizeof(KGZ_SHSTR_SHSTRTAB)]; 5480709Sjake char strtab[sizeof(KGZ_SHSTR_STRTAB)]; 5580709Sjake char data[sizeof(KGZ_SHSTR_DATA)]; 5680709Sjake}; 5780709Sjake 5880709Sjake/* Symbol table indices */ 5980709Sjake#define KGZ_ST_KGZ 1 6080709Sjake#define KGZ_ST_KGZ_NDATA 2 6180709Sjake#define KGZ_STNUM 3 6280709Sjake 6380709Sjake/* Symbol table strings */ 6480709Sjake#define KGZ_STR_ZERO "" 6580709Sjake#define KGZ_STR_KGZ "kgz" 6680709Sjake#define KGZ_STR_KGZ_NDATA "kgz_ndata" 6780709Sjake 6880709Sjake/* String table */ 6980709Sjakestruct kgz_strtab { 7080709Sjake char zero[sizeof(KGZ_STR_ZERO)]; 7180709Sjake char kgz[sizeof(KGZ_STR_KGZ)]; 7280709Sjake char kgz_ndata[sizeof(KGZ_STR_KGZ_NDATA)]; 7380709Sjake}; 7480709Sjake 75108153Sjake/* Relocatable header format */ 7680709Sjakestruct kgz_elfhdr { 77225889Smarius Elf32_Ehdr e; 78225889Smarius Elf32_Shdr sh[KGZ_SHNUM]; 79225889Smarius Elf32_Sym st[KGZ_STNUM]; 80225889Smarius struct kgz_shstrtab shstrtab; 81228222Smarius struct kgz_strtab strtab; 82225889Smarius}; 83225889Smarius 84225889Smariusextern const struct kgz_elfhdr elfhdr; 8580709Sjake