diff options
Diffstat (limited to 'gpxe/src/arch/i386/include/bits/elf.h')
-rw-r--r-- | gpxe/src/arch/i386/include/bits/elf.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/gpxe/src/arch/i386/include/bits/elf.h b/gpxe/src/arch/i386/include/bits/elf.h deleted file mode 100644 index dad9c7b8..00000000 --- a/gpxe/src/arch/i386/include/bits/elf.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef I386_BITS_ELF_H -#define I386_BITS_ELF_H - -#include "cpu.h" - -#ifdef CONFIG_X86_64 -/* ELF Defines for the 64bit version of the current architecture */ -#define EM_CURRENT_64 EM_X86_64 -#define EM_CURRENT_64_PRESENT ( \ - CPU_FEATURE_P(cpu_info.x86_capability, LM) && \ - CPU_FEATURE_P(cpu_info.x86_capability, PAE) && \ - CPU_FEATURE_P(cpu_info.x86_capability, PSE)) - -#define ELF_CHECK_X86_64_ARCH(x) \ - (EM_CURRENT_64_PRESENT && ((x).e_machine == EM_X86_64)) -#define __unused_i386 -#else -#define ELF_CHECK_X86_64_ARCH(x) 0 -#define __unused_i386 __unused -#endif - - -/* ELF Defines for the current architecture */ -#define EM_CURRENT EM_386 -#define ELFDATA_CURRENT ELFDATA2LSB - -#define ELF_CHECK_I386_ARCH(x) \ - (((x).e_machine == EM_386) || ((x).e_machine == EM_486)) - -#define ELF_CHECK_ARCH(x) \ - ((ELF_CHECK_I386_ARCH(x) || ELF_CHECK_X86_64_ARCH(x)) && \ - ((x).e_entry <= 0xffffffffUL)) - -#ifdef IMAGE_FREEBSD -/* - * FreeBSD has this rather strange "feature" of its design. - * At some point in its evolution, FreeBSD started to rely - * externally on private/static/debug internal symbol information. - * That is, some of the interfaces that software uses to access - * and work with the FreeBSD kernel are made available not - * via the shared library symbol information (the .DYNAMIC section) - * but rather the debug symbols. This means that any symbol, not - * just publicly defined symbols can be (and are) used by system - * tools to make the system work. (such as top, swapinfo, swapon, - * etc) - * - * Even worse, however, is the fact that standard ELF loaders do - * not know how to load the symbols since they are not within - * an ELF PT_LOAD section. The kernel needs these symbols to - * operate so the following changes/additions to the boot - * loading of EtherBoot have been made to get the kernel to load. - * All of the changes are within IMAGE_FREEBSD such that the - * extra/changed code only compiles when FREEBSD support is - * enabled. - */ - -/* - * Section header for FreeBSD (debug symbol kludge!) support - */ -typedef struct { - Elf32_Word sh_name; /* Section name (index into the - section header string table). */ - Elf32_Word sh_type; /* Section type. */ - Elf32_Word sh_flags; /* Section flags. */ - Elf32_Addr sh_addr; /* Address in memory image. */ - Elf32_Off sh_offset; /* Offset in file. */ - Elf32_Size sh_size; /* Size in bytes. */ - Elf32_Word sh_link; /* Index of a related section. */ - Elf32_Word sh_info; /* Depends on section type. */ - Elf32_Size sh_addralign; /* Alignment in bytes. */ - Elf32_Size sh_entsize; /* Size of each entry in section. */ -} Elf32_Shdr; - -/* sh_type */ -#define SHT_SYMTAB 2 /* symbol table section */ -#define SHT_STRTAB 3 /* string table section */ - -/* - * Module information subtypes (for the metadata that we need to build) - */ -#define MODINFO_END 0x0000 /* End of list */ -#define MODINFO_NAME 0x0001 /* Name of module (string) */ -#define MODINFO_TYPE 0x0002 /* Type of module (string) */ -#define MODINFO_METADATA 0x8000 /* Module-specfic */ - -#define MODINFOMD_SSYM 0x0003 /* start of symbols */ -#define MODINFOMD_ESYM 0x0004 /* end of symbols */ - -#endif /* IMAGE_FREEBSD */ - -#endif /* I386_BITS_ELF_H */ |