制作网页网站费用属于资本性支出吗,屏边县住房和城乡建设局网站,wordpress 全站搜索,wordpress 图集功能程序头表与段表相互独立#xff0c;由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系#xff0c;一般只有可执行文件包含。
1. segment和section
segment: 程序头表项描述的对象称为segment#xff0c;即elf文件加载后的数据块#xff1b; 它提供…程序头表与段表相互独立由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系一般只有可执行文件包含。
1. segment和section
segment: 程序头表项描述的对象称为segment即elf文件加载后的数据块 它提供给加载器loader使用loader需要知道rwe属性 可执行文件可以没有section但一定要有segment。
section: section描述加载前的数据块给链接器linker使用。 linker主要关心.text, .rel.text, .data, .rodata等需要重定位。
2. segment描述数据结构
typedef struct
{Elf32_Word p_type; /* Segment type */Elf32_Off p_offset; /* Segment file offset */Elf32_Addr p_vaddr; /* Segment virtual address */Elf32_Addr p_paddr; /* Segment physical address */Elf32_Word p_filesz; /* Segment size in file */Elf32_Word p_memsz; /* Segment size in memory */Elf32_Word p_flags; /* Segment flags */Elf32_Word p_align; /* Segment alignment */
} Elf32_Phdr;2.1 field p_type
/* Legal values for p_type (segment type). */
#define PT_NULL 0 /* Program header table entry unused */
#define PT_LOAD 1 /* Loadable program segment */
#define PT_DYNAMIC 2 /* Dynamic linking information */
#define PT_INTERP 3 /* Program interpreter */
#define PT_NOTE 4 /* Auxiliary information */
#define PT_SHLIB 5 /* Reserved */
#define PT_PHDR 6 /* Entry for header table itself */
#define PT_TLS 7 /* Thread-local storage segment */
#define PT_NUM 8 /* Number of defined types */一个可执行文件至少有一个PT_LOAD类型的段如text, data并根据p_align对齐。
2.2 Other Fields
p_offset, segment文件偏移p_vaddr, segment虚拟地址p_paddr, segment物理地址。因为现代os都使用了分页机制所以不用关心readelf输出结果等于虚拟地址p_filesz, segment文件大小;p_memsz, segment内存大小;p_align, segmenet内存对齐大小LOAD段值为0x1000;p_flags, segment权限属性
#define PF_X (1 0) /* Segment is executable */
#define PF_W (1 1) /* Segment is writable */
#define PF_R (1 2) /* Segment is readable */
2.3 section与program的关系 3. link脚本与Program Program的个数由link脚本中的MEMORY定义决定。