zoukankan      html  css  js  c++  java
  • [原]BFD obj统一库

    链结器使用BFD库访问obj和achive文件. 这些库允许链结器使用同样的例程操作不同的obj文件格式. 不同的obj文件格式, 可以通过简单的建立一个BFD备份端并添加到库中即可支持. 为了保存运行时内存, 链结器和相关工具通常只支持子集. objdump -i列出配置支持文件格式.

    信息丢失:
    对齐信息会在a.out中丢失;
    COFF段名: COFF可能包含许多段, 每个都有名字. 如果目标格式没有这么多区域, 或者区域没有名字, 链结器就不能简单的处理. 你可以通过描述期望的映射关系来规避这个问题.

    BFD 标准目标文件格式:
    最大的潜在的丢失信息发生在源文件格式提供了最少的交集, 在标准格式之间和目的格式之间的信息. 一个简单的描述有助于确定信息损失:
    _files_
     信息存储在预处理文件中. 机器体系结构, 格式类型的特殊实现, 需要分页位, 写保护位.
    _sections_
    每个输入文件的区域包含区域名字, 区域在目标文件中的原始地址, 大小, 对齐, 各种标志, 指向其他BFD结构的指针.
    _symbols_
    每个符号包含指向目标文件的信息指针, 名字, 值, 标志. 当BFD后台读取符号表时, 重定向所有的符号, 使他们相对于所在的区域基地址. 这样作保证了每个符号指向包含其的区域. 每个符号好有一个可变的隐藏数据. 因为符号指向原始文件, 符号的私有数据类型是可访问的.

    正常的全局和简单的局部符号可以在输出中维护, 因此输出文件会保持符号指向函数, 和全局静态, 通用值. 一些符号信息不值得保持. 符号中有一个字的类型信息, 因此如果格式支持符号类型信息, 在符号和类型足够简单满足一个字长, 信息将被保留.

    _relocation level_
    每个BFD重定位记录包含一个指向符号的指针, 数据偏移, 数据所在区域, 重定位类型描述符指针.
    _line numbers_




    作者:liyonghelpme 发表于2010/6/10 18:52:00 原文链接
    阅读:202 评论:0 查看评论
  • 相关阅读:
    Linux centos 6.4安装
    vm虚拟机安装,配置与使用
    Linux简介
    360兼容视图
    补丁patch 漏洞 bug或glitch
    迫不得已! ! 仅仅针对IE浏览器的样式,尤其是IE8及以下
    JS延时器 定时器 暂停器 中断器
    CSS动态定位
    一个标准的AJAX请求
    ajax的两个重要参数contentType 和dataType
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273552.html
Copyright © 2011-2022 走看看