elfhdr.h revision 48905
148905Srnordier/*
248905Srnordier * Copyright (c) 1999 Global Technology Associates, Inc.
348905Srnordier * All rights reserved.
448905Srnordier *
548905Srnordier * Redistribution and use in source and binary forms, with or without
648905Srnordier * modification, are permitted provided that the following conditions
748905Srnordier * are met:
848905Srnordier * 1. Redistributions of source code must retain the above copyright
948905Srnordier *    notice, this list of conditions and the following disclaimer.
1048905Srnordier * 2. Redistributions in binary form must reproduce the above copyright
1148905Srnordier *    notice, this list of conditions and the following disclaimer in the
1248905Srnordier *    documentation and/or other materials provided with the distribution.
1348905Srnordier *
1448905Srnordier * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND
1548905Srnordier * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1648905Srnordier * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1748905Srnordier * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
1848905Srnordier * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
1948905Srnordier * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
2048905Srnordier * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2148905Srnordier * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2248905Srnordier * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2348905Srnordier * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2448905Srnordier * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2548905Srnordier *
2648905Srnordier *	$Id:$
2748905Srnordier */
2848905Srnordier
2948905Srnordier#include <elf.h>
3048905Srnordier#include "kgz.h"
3148905Srnordier
3248905Srnordier/* Section header indices */
3348905Srnordier#define KGZ_SH_SYMTAB		1
3448905Srnordier#define KGZ_SH_SHSTRTAB 	2
3548905Srnordier#define KGZ_SH_STRTAB		3
3648905Srnordier#define KGZ_SH_DATA		4
3748905Srnordier#define KGZ_SHNUM		5
3848905Srnordier
3948905Srnordier/* Section header strings */
4048905Srnordier#define KGZ_SHSTR_ZERO		""
4148905Srnordier#define KGZ_SHSTR_SYMTAB	".symtab"
4248905Srnordier#define KGZ_SHSTR_SHSTRTAB	".shstrtab"
4348905Srnordier#define KGZ_SHSTR_STRTAB	".strtab"
4448905Srnordier#define KGZ_SHSTR_DATA		".data"
4548905Srnordier
4648905Srnordier/* Section header string table */
4748905Srnordierstruct kgz_shstrtab {
4848905Srnordier    char zero[sizeof(KGZ_SHSTR_ZERO)];
4948905Srnordier    char symtab[sizeof(KGZ_SHSTR_SYMTAB)];
5048905Srnordier    char shstrtab[sizeof(KGZ_SHSTR_SHSTRTAB)];
5148905Srnordier    char strtab[sizeof(KGZ_SHSTR_STRTAB)];
5248905Srnordier    char data[sizeof(KGZ_SHSTR_DATA)];
5348905Srnordier};
5448905Srnordier
5548905Srnordier/* Symbol table indices */
5648905Srnordier#define KGZ_ST_KGZ		1
5748905Srnordier#define KGZ_ST_KGZ_NDATA	2
5848905Srnordier#define KGZ_STNUM		3
5948905Srnordier
6048905Srnordier/* Symbol table strings */
6148905Srnordier#define KGZ_STR_ZERO		""
6248905Srnordier#define KGZ_STR_KGZ		"kgz"
6348905Srnordier#define KGZ_STR_KGZ_NDATA	"kgz_ndata"
6448905Srnordier
6548905Srnordier/* String table */
6648905Srnordierstruct kgz_strtab {
6748905Srnordier    char zero[sizeof(KGZ_STR_ZERO)];
6848905Srnordier    char kgz[sizeof(KGZ_STR_KGZ)];
6948905Srnordier    char kgz_ndata[sizeof(KGZ_STR_KGZ_NDATA)];
7048905Srnordier};
7148905Srnordier
7248905Srnordier/* Relocatable header format */
7348905Srnordierstruct kgz_elfhdr {
7448905Srnordier    Elf32_Ehdr e;
7548905Srnordier    Elf32_Shdr sh[KGZ_SHNUM];
7648905Srnordier    Elf32_Sym st[KGZ_STNUM];
7748905Srnordier    struct kgz_shstrtab shstrtab;
7848905Srnordier    struct kgz_strtab strtab;
7948905Srnordier};
8048905Srnordier
8148905Srnordierextern const struct kgz_elfhdr elfhdr;
82