⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elf.h

📁 linux下从网卡远程启动
💻 H
字号:
#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 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -