Annotation of qemu/linux-user/flat.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (C) 2002-2003  David McCullough <[email protected]>
                      3:  * Copyright (C) 1998       Kenneth Albanowski <[email protected]>
                      4:  *                          The Silver Hammer Group, Ltd.
                      5:  *
                      6:  * This file provides the definitions and structures needed to
                      7:  * support uClinux flat-format executables.
                      8:  */
                      9: 
                     10: #define        FLAT_VERSION                    0x00000004L
                     11: 
                     12: #ifdef CONFIG_BINFMT_SHARED_FLAT
                     13: #define        MAX_SHARED_LIBS                 (4)
                     14: #else
                     15: #define        MAX_SHARED_LIBS                 (1)
                     16: #endif
                     17: 
                     18: /*
                     19:  * To make everything easier to port and manage cross platform
                     20:  * development,  all fields are in network byte order.
                     21:  */
                     22: 
                     23: struct flat_hdr {
                     24:        char magic[4];
                     25:        unsigned long rev;          /* version (as above) */
                     26:        unsigned long entry;        /* Offset of first executable instruction
                     27:                                       with text segment from beginning of file */
                     28:        unsigned long data_start;   /* Offset of data segment from beginning of
                     29:                                       file */
                     30:        unsigned long data_end;     /* Offset of end of data segment
                     31:                                       from beginning of file */
                     32:        unsigned long bss_end;      /* Offset of end of bss segment from beginning
                     33:                                       of file */
                     34: 
                     35:        /* (It is assumed that data_end through bss_end forms the bss segment.) */
                     36: 
                     37:        unsigned long stack_size;   /* Size of stack, in bytes */
                     38:        unsigned long reloc_start;  /* Offset of relocation records from
                     39:                                       beginning of file */
                     40:        unsigned long reloc_count;  /* Number of relocation records */
                     41:        unsigned long flags;       
                     42:        unsigned long build_date;   /* When the program/library was built */
                     43:        unsigned long filler[5];    /* Reservered, set to zero */
                     44: };
                     45: 
                     46: #define FLAT_FLAG_RAM    0x0001 /* load program entirely into RAM */
                     47: #define FLAT_FLAG_GOTPIC 0x0002 /* program is PIC with GOT */
                     48: #define FLAT_FLAG_GZIP   0x0004 /* all but the header is compressed */
                     49: #define FLAT_FLAG_GZDATA 0x0008 /* only data/relocs are compressed (for XIP) */
                     50: #define FLAT_FLAG_KTRACE 0x0010 /* output useful kernel trace for debugging */
                     51: 
                     52: 
                     53: /*
                     54:  * While it would be nice to keep this header clean,  users of older
                     55:  * tools still need this support in the kernel.  So this section is
                     56:  * purely for compatibility with old tool chains.
                     57:  *
                     58:  * DO NOT make changes or enhancements to the old format please,  just work
                     59:  *        with the format above,  except to fix bugs with old format support.
                     60:  */
                     61: 
                     62: #define        OLD_FLAT_VERSION                        0x00000002L
                     63: #define OLD_FLAT_RELOC_TYPE_TEXT       0
                     64: #define OLD_FLAT_RELOC_TYPE_DATA       1
                     65: #define OLD_FLAT_RELOC_TYPE_BSS                2
                     66: 
                     67: #      define OLD_FLAT_FLAG_RAM    0x1 /* load program entirely into RAM */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.