Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373579
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1767
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-24 16:18
个人简介

为啥不能追求自己的爱好一辈子呢

文章分类

全部博文(80)

文章存档

2017年(1)

2015年(2)

2014年(18)

2013年(59)

分类: LINUX

2014-01-10 18:13:58

前言

    今天开一个开源的库他打开了proc/[pid]/auxv文件,我在想auxu有什么用处呢,我就调查了下。

知识

     在linux下面,elf文件分为很多部分,粗略的分为,elf header , section header , program header,
    具体的section 以及program section。 其中elf header只要保存了elf相关的信息,例如elf文件的magic,
  文件是32位还是64位,支持的硬件,section header或者program header的位置大小等等
   section header只要保存section的信息,例如名字,位置,以及其他的有关section的信息,相当与section的指针
    section 保存程序的二进制,动态链接表,以及debug或者comment的信息。
    program header主要保存program section的信息,例如位置,类型,各个段需要加载到内存的位置等等

   而auxv就是保存一些类似的信息放到auxv文件中。是相当与键值对的形式保存到程序内存的栈里面。
 
    main函数其实有三个参数,第三个参数char* envp[],会包含这个参数。


   可以通过设置LD_SHOW_AUXV。执行

   

点击(此处)折叠或打开

  1. $  LD_SHOW_AUXV=1 /bin/true
结果如:

点击(此处)折叠或打开

  1. AT_SYSINFO_EHDR: 0x7fff33d53000
  2. AT_HWCAP: bfebfbff
  3. AT_PAGESZ: 4096
  4. AT_CLKTCK: 100
  5. AT_PHDR: 0x400040
  6. AT_PHENT: 56
  7. AT_PHNUM: 9
  8. AT_BASE: 0x7f612dc6a000
  9. AT_FLAGS: 0x0
  10. AT_ENTRY: 0x401134
  11. AT_UID: 1001
  12. AT_EUID: 1001
  13. AT_GID: 1001
  14. AT_EGID: 1001
  15. AT_SECURE: 0
  16. AT_RANDOM: 0x7fff33c58a49
  17. AT_EXECFN: /bin/true
  18. AT_PLATFORM: x86_64





  
阅读(4532) | 评论(0) | 转发(0) |
0

上一篇:mysql 两表不同

下一篇:c++ 右移

给主人留下些什么吧!~~