【问题标题】:What's the pass in GCC handles const strings?GCC 处理 const 字符串的过程是什么?
【发布时间】:2019-06-06 06:08:59
【问题描述】:

GCC 中处理将字符串数组构建到 .rodata 部分的传递名称是什么?想写一个插件来拦截源代码中的字符串,我知道binutils中有很多工具可以实现相同的目标,但是如果我们想做一些后处理,例如验证单词。

【问题讨论】:

  • 构建.rodata 部分与从源代码中查看字符串(字符串文字?)有什么关系?顺便说一句,之前写过拼写检查 GCC 插件:in pythonin C
  • 是的,我的意思是字符串常量/文字。

标签: gcc compiler-construction elf


【解决方案1】:

只读数据部分,也称为.rodata,在所有 rtl 传递的最后一步之后生成。您可以在文件 varasm.c 中查看它的工作原理,该文件位于 /gcc 文件夹中。看部分

section *
default_function_rodata_section (tree decl) 

及以下。 您还可以在这里轻松添加一些函数来拦截数据到asm 文件或其他一些输出文件中,或者编写一个外部函数。

varasm.c 文件处理所有汇编代码的生成 除了函数的指令。 这包括声明变量及其初始值。

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多