| 函数逻辑报告 | 
| Source Code: fs\binfmt_elf.c | Create Date:2022-07-29 11:02:57 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:create_elf_tables
函数原型:static int create_elf_tables(struct linux_binprm *bprm, struct elf64_hdr *exec, unsigned long load_addr, unsigned long interp_load_addr)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct linux_binprm * | bprm | |
| struct elf64_hdr * | exec | |
| unsigned long | load_addr | |
| unsigned long | interp_load_addr | 
| 170 | elf_addr_t | 
| 170 | sp | 
| 171 | elf_addr_t | 
| 171 | u_platform | 
| 172 | elf_addr_t | 
| 172 | u_base_platform | 
| 173 | elf_addr_t | 
| 173 | u_rand_bytes | 
| 174 | k_platform等于ELF_PLATFORM | 
| 178 | elf_addr_t乘elf_info | 
| 179 | ei_index等于0 | 
| 180 | cred等于current_cred - Access the current task's subjective credentials* Access the subjective credentials of the current task. RCU-safe,* since nobody else can modify it.() | 
| 189 | p等于arch_align_stack(p) | 
| 197 | u_platform = NULL | 
| 198 | 如果k_platform则 | 
| 201 | u_platform等于STACK_ALLOC(p, len) | 
| 202 | 如果__copy_to_user(u_platform, k_platform, len)则返回:负EFAULT | 
| 210 | u_base_platform = NULL | 
| 211 | 如果k_base_platform则 | 
| 214 | u_base_platform等于STACK_ALLOC(p, len) | 
| 215 | 如果__copy_to_user(u_base_platform, k_base_platform, len)则返回:负EFAULT | 
| 222 | get_random_bytes(k_rand_bytes, k_rand_bytes的长度) | 
| 223 | u_rand_bytes等于STACK_ALLOC(p, k_rand_bytes的长度) | 
| 225 | 如果__copy_to_user(u_rand_bytes, k_rand_bytes, k_rand_bytes的长度)则返回:负EFAULT | 
| 229 | elf_info等于saved_auxv | 
| 244 | ARCH_DLINFO | 
| 247 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (system page size , ELF_EXEC_PAGESIZE) | 
| 248 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (quency at which times() increments , CLOCKS_PER_SEC) | 
| 249 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (program headers for program , load_addr + Program header table file offset ) | 
| 250 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (size of program header entry , elf_phdr的长度) | 
| 251 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (umber of program headers , e_phnum) | 
| 252 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (ase address of interpreter , interp_load_addr) | 
| 254 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (ry point of program , Entry point virtual address ) | 
| 259 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (secure mode boolean , secureexec) | 
| 260 | update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes (address of 16 random bytes , (elf_addr_t)(unsignedlong)u_rand_bytes) | 
| 265 | 如果k_platform则 | 
| 269 | 如果k_base_platform则 | 
| 273 | 如果interp_flags按位与BINPRM_FLAGS_EXECFD则 | 
| 282 | ei_index加等于2 | 
| 287 | p等于STACK_ROUND(sp, items) | 
| 314 | 如果__put_user - Write a simple value into user space, with less checking((elf_addr_t)p, sp++)则返回:负EFAULT | 
| 329 | 如果__put_user - Write a simple value into user space, with less checking((elf_addr_t)p, sp++)则返回:负EFAULT | 
| 341 | 如果copy_to_user(sp, elf_info, ei_index * elf_addr_t的长度)则返回:负EFAULT | 
| 343 | 返回:0 | 
| 名称 | 描述 | 
|---|---|
| load_elf_binary | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |