71 lines
1.9 KiB
C
71 lines
1.9 KiB
C
/*
|
|
* Human68k .x file structure definitions
|
|
*
|
|
* written by Yasha (ITOH Yasufumi)
|
|
* public domain
|
|
*
|
|
* $NetBSD: hux.h,v 1.3 1999/03/16 16:30:21 minoura Exp $
|
|
*/
|
|
/*
|
|
* Human68k ".x" executable format
|
|
*
|
|
* ----------------------------
|
|
* | file header (64 bytes) |
|
|
* |--------------------------|
|
|
* | text |
|
|
* |--------------------------|
|
|
* | data |
|
|
* |--------------------------|
|
|
* | relocation table |
|
|
* |--------------------------|
|
|
* | symbol table |
|
|
* |--------------------------|
|
|
* | debugging information |
|
|
* ----------------------------
|
|
*
|
|
* text and data sections are loaded contiguous
|
|
*/
|
|
|
|
/* file header */
|
|
|
|
#define HUXMAGIC 0x4855 /* "HU" */
|
|
|
|
struct huxhdr {
|
|
be_uint16_t x_magic; /* HUXMAGIC */
|
|
u_int8_t x_reserved1; /* 0 */
|
|
u_int8_t x_loadmode; /* 0: normal, 1: minimal memory,
|
|
2: high address */
|
|
be_uint32_t x_base; /* base address (normally 0) */
|
|
be_uint32_t x_entry; /* execution entry */
|
|
be_uint32_t x_text; /* size of text section */
|
|
be_uint32_t x_data; /* size of data section */
|
|
be_uint32_t x_bss; /* size of bss */
|
|
be_uint32_t x_rsize; /* size of relocation table */
|
|
be_uint32_t x_syms; /* size of symbol info */
|
|
be_uint32_t x_db_line; /* size of debugging info (line #) */
|
|
be_uint32_t x_db_syms; /* size of debugging info (symbol) */
|
|
be_uint32_t x_db_str; /* size of debugging info (string) */
|
|
be_uint32_t x_reserved2[4]; /* 0 */
|
|
be_uint32_t x_bindlist; /* bind list offset */
|
|
};
|
|
|
|
/*
|
|
* relocation information
|
|
*/
|
|
|
|
/* short format */
|
|
struct relinf_s {
|
|
be_uint16_t locoff_s; /* offset */
|
|
};
|
|
|
|
/* long format */
|
|
#define HUXLRELMAGIC 0x0001
|
|
struct relinf_l {
|
|
be_uint16_t lrelmag; /* HUXLRELMAGIC */
|
|
be_uint16_t locoff_l[2]; /* this would be be_uint32_t
|
|
* if there were no alignment problems
|
|
*/
|
|
};
|
|
|
|
#define HUX_MINLREL 0x10000 /* minimal value for long format */
|