跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 用 Clang 编译时如何将编译参数存进 ELF 的某个 section 里?
未分類
5 9 月 2020

用 Clang 编译时如何将编译参数存进 ELF 的某个 section 里?

用 Clang 编译时如何将编译参数存进 ELF 的某个 section 里?

資深大佬 : dangyuluo 1

最近遇到一个问题,就是需要从编译好的 ELF 里提取出编译时的参数,比如 Wall,Werror 一类的。GCC 下很容易,有一个 section 叫.GCC.command.line。但是 Clang 编译出的 ELF 里没有类似的 section 。

请问哪位有点思路?我应该怎么去找。谢谢

大佬有話說 (4)

  • 資深大佬 : secondwtq

    我还不知道有这个功能 …
    查了一下发现 GCC 有个 flag 叫 -frecord-gcc-switches,不写好像是不会有这个 section 的。主该不会是哪个发行版默认打开了吧
    然后 Clang 一般是和 GCC 兼容的,直接找对应的 flag 就行了
    https://reviews.llvm.org/rL299037
    https://reviews.llvm.org/D54487

  • 主 資深大佬 : dangyuluo

    @secondwtq 哈是的,我是打开了-frecord-gcc-switches 。原来 Clang 的对应 flag 叫-grecord-gcc-switches,就一个字母区别

  • 資深大佬 : ivan_wl

    1. 把编译参数写入一个文本文件
    2. 生成一个.S 汇编,定义全局符号,用.incbin 包含刚才的文本文件,结尾再加个.byte 0,这样就定义了一个字符串
    3. 带着这个.S 一起编译就行了,c 代码中可以用.S 定义的全局符号访问这个字符串了

  • 資深大佬 : secondwtq

    -g 是调试信息 flag, -grecord-gcc-switches 是把参数存进调试信息,不是 .GCC.command.line 。GCC 也有 -grecord-gcc-switches 。
    我说是兼容的就是名字是一样的。当然实现可能会塞点私货。
    你要是没有 -frecord-gcc-switches 那估计是版本老了点。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具