一种嵌入式程序运行符号表的生成方法及装置的制造方法_2

文档序号:9921842阅读:来源:国知局
对地址、符号大小、符号类型、段信息。进一步的,在获取到这符号 信息之后,将这些符号信息填入符号表源文件,从而生成符号表源文件。
[0054] 在本实施例中,给出三类符号,符号名称分别为:函数funl、函数fun2、变量varl, 并且分别获取到这些符号的:符号在所在段的相对地址、符号大小、符号类型、段名称,具体 的内容如下:
[0055] 函数funl,符号在所在段的相对地址为:0χ1000,符号大小为:0x300,符号类型 为:全局函数、段名称为:文本text。
[0056] 函数fun2,符号在所在段的相对地址为:0x5000,符号大小为:0x600,符号类型 为:局部函数、段名称为:文本_应用text_app。
[0057] 变量varl,符号在所在段的相对地址为:0χ6000,符号大小为:0x4,符号类型为: 变量、段名称为:数据data。
[0058] 进一步的,结合对上述三种类型的符号信息的描述,如下所示,符号表应包含的符 号信息:
[0059]
[0061] 其中,text_start、text_app_start、data_start在链接脚本中进行定义,分别代 表text段的起始地址,text_app段的起始地址、data段的起始地址,这些变量在链接时根 据代码多少等动态赋值。
[0062] 值得说明的是,symtbl段表示在链接时将符号表放到一个单独的段,这样不影响 其他段内部的地址分配,且这里的symtbl只是对符号表所在段设定的一个命名名称。
[0063] 303、编译 symTbl. c 为 symTbl. 〇。
[0064] 其中,symTbl. 〇为符号表目标文件。
[0065] 304、链接Image. 〇和symTbl. 〇,生成可执行嵌入式程序运行符号表。
[0066] 值得说明的是,在步骤04中两个目标文件的链接过程中,会使用链接脚本link. 0S,并通过链接指令(Id),执行如下操作:
[0067] Id Image. 〇 symTbl. ο_Τ link. os_o osimage/*将 Image. 〇 和 symTbl. 〇 通过链接 脚本1 ink. os进行链接,生成目标镜像osimage*/
[0068] 其中的,目标镜像osimage即为本实施例中的嵌入式程序运行符号表。
[0069] 值得说的是,在本实施例中,嵌入式软件分为text段、text_app段、data段、 symtbl段。当然在实际应用过程中,根据实际情况,嵌入式软件可以划分为的段并不限定上 述的四种,且在上述的四种段中,其中的前三种为可选段,symtbl段为该链接脚本中的必须 包含的段,且该段中仅包含符号表,但是对该段的具体名称表示在实际应用过程中不做限 定。
[0070] 在本实施例中以编译有符号表的symtbl段在链接脚本的最后为例说明,在本是 实施例中链接脚本link, os应包含以下内容:

[0073] 值得说明的是,在本发明实施例中,在进行目标链接之前,就从嵌入式程序目标文 件中提取符号在所在段的相对地址,进而通过链接脚本获取段的起始地址,从而能间接确 定符号的绝对地址,生成嵌入式程序运行符号表。
[0074] 本发明另一实施例提供了一种嵌入式程序运行符号表的生成装置,如图4所示, 该装置包括:获取单元41、文件生成单元42、链接单元43。
[0075] 获取单元41,用于从嵌入式目标文件中获取符号信息。
[0076] 其中,符号信息至少包括:符号在所在段的相对地址、符号名称、段名称。
[0077] 文件生成单元42,用于根据获取单元41获取的符号信息生成符号表源文件,并将 符号表源文件编译为符号表目标文件。
[0078] 链接单元43,用于对嵌入式程序目标文件和文件生成单元42生成的符号表目标 文件进行链接,生成嵌入式程序运行符号表。
[0079] 在本实施例提供的装置的一种可选构成方式中,如图5所示,文件生成单元文件 生成单元42包括:获取子单元421、文件生成子单元422,装置还包括:构造单元44。
[0080] 获取子单元421,用于通过符号信息获取符号表信息。
[0081] 其中,符号表信息至少包括:符号名称、段名称、符号地址,在该符号表信息中的符 号地址为:符号在所在段的相对地址+段起始地址变量。
[0082] 文件生成子单元422,用于通过获取子单元421获取的符号表信息生成符号表源 文件。
[0083] 构造单元44,用于构造链接脚本。
[0084] 其中,链接脚本包括段起始地址变量,且在链接脚本中的单独一个段编译有符号 表。
[0085] 链接单元43,还用于通过构造单元44构造的链接脚本对嵌入式程序目标文件和 符号表目标文件进行链接。
[0086] 文件生成单元42,还用于在获取单元从嵌入式目标文件中获取符号信息之前,将 嵌入式程序源代码编译成嵌入式程序目标文件。
[0087] 本发明如图4和图5所示的装置用于实现上述如图1至图3所示的方法流程,在 该装置实施例中相应参数或内容的解释,可参照上述如图1至图3所属方法流程中的相关 内容描述。
[0088] 本发明实施例中提供了一种嵌入式程序运行符号表的生成装置,通过获取单元从 嵌入式目标文件中获取符号信息,并由文件生成单元根据符号信息生成符号表源文件,进 而通过链接单元将这一符号表源文件编译为符号表目标文件,再对嵌入式程序目标文件和 符号表目标文件进行链接,生成嵌入式程序运行符号表。与现有技术嵌入式程序运行符号 表的生成过程中,必须采用二次链接的方法相比,本发明实施例只需要进行一次链接就生 成嵌入式程序运行符号表,缓解了符号表生成效率低的问题。
[0089] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳 的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0090] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1. 一种嵌入式程序运行符号表的生成方法,其特征在于,所述方法包括: 从嵌入式目标文件中获取符号信息,所述符号信息至少包括:符号在所在段的相对地 址、符号名称、段名称; 根据所述符号信息生成符号表源文件; 将所述符号表源文件编译为符号表目标文件; 对所述嵌入式程序目标文件和所述符号表目标文件进行链接,生成嵌入式程序运行符 号表。2. 根据权利要求1所述的方法,其特征在于,所述根据所述符号信息生成符号表源文 件包括: 通过所述符号信息获取符号表信息,所述符号表信息至少包括:所述符号名称、所述段 名称、符号地址,所述符号地址为所述符号在所在段的相对地址+段起始地址变量; 通过所述符号表信息生成所述符号表源文件。3. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 构造链接脚本,所述链接脚本包括所述段起始地址变量,所述链接脚本中的单独一个 段编译有符号表; 通过所述链接脚本对所述嵌入式程序目标文件和所述符号表目标文件进行链接。4. 根据权利要求1-3任意一项所述的方法,其特征在于,在所述从嵌入式目标文件中 获取符号信息之前,所述方法还包括: 将嵌入式程序源代码编译成所述嵌入式程序目标文件。5. -种嵌入式程序运行符号表的生成装置,其特征在于,所述装置包括: 获取单元,用于从嵌入式目标文件中获取符号信息,所述符号信息至少包括:符号在所 在段的相对地址、符号名称、段名称; 文件生成单元,用于根据所述获取单元获取的所述符号信息生成符号表源文件;并将 所述符号表源文件编译为符号表目标文件; 链接单元,用于对所述嵌入式程序目标文件和所述文件生成单元生成的所述符号表目 标文件进行链接,生成嵌入式程序运行符号表。6. 根据权利要求5所述的装置,其特征在于,所述文件生成单元包括: 获取子单元,用于通过所述符号信息获取符号表信息,所述符号表信息至少包括:所述 符号名称、所述段名称、符号地址,所述符号地址为所述符号在所在段的相对地址+段起始 地址变量; 文件生成子单元,用于通过所述获取子单元获取的所述符号表信息生成所述符号表源 文件。7. 根据权利要求6所述的装置,其特征在于,所述装置还包括: 构造单元,用于构造链接脚本,所述链接脚本包括所述段起始地址变量,所述链接脚本 中的单独一个段编译有符号表; 所述链接单元,还用于通过所述构造单元构造的链接脚本对所述嵌入式程序目标文件 和所述符号表目标文件进行链接。8. 根据权利要求5-7任意一种所述的装置,其特征在于, 所述文件生成单元,还用于在所述获取单元从嵌入式目标文件中获取符号信息之前, 将嵌入式程序源代码编译成所述嵌入式程序目标文件。
【专利摘要】本发明公开了一种嵌入式程序运行符号表的生成方法及装置,涉及嵌入式软件应用领域,在嵌入式程序运行符号表的生成过程中,缓解了采用二次链接导致的符号表生成效率低的问题。本发明提供的具体实施例包括:从嵌入式目标文件中获取符号信息,并根据符号信息生成符号表源文件,进而将这一符号表源文件编译为符号表目标文件,再对嵌入式程序目标文件和符号表目标文件进行链接,生成嵌入式程序运行符号表。本发明实施例提供的技术方案主要应用于嵌入式程序运行符号表的生成过程中。
【IPC分类】G06F9/44
【公开号】CN105700861
【申请号】CN201410699769
【发明人】陈小松
【申请人】迈普通信技术股份有限公司
【公开日】2016年6月22日
【申请日】2014年11月27日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1