【发布时间】:2012-11-19 23:14:24
【问题描述】:
我正在使用 gcc 标志 -ffunction-sections 编译一个 C 文件,以将每个函数移动到它自己的部分。汇编程序抛出错误:
job_queue.s:2395: Error: operation combines symbols in different segments
此处给出了第 2395 行的编译器汇编输出:
.section .debug_ranges,info
.Ldebug_ranges0:
.4byte .LBB7-.Ltext0
符号 LBB7 位于名为“.text.add_event_handler”的函数(以及该部分)中 符号 Ltext0 位于(否则为空)部分中,名为:“.text”
GCC --version 给出:
pic30-elf-gcc.exe (GCC) 4.0.3 (dsPIC30, Microchip v3_30) (B) Build date: Jun 29 2011
如果我使用编译器标志 -g0(关闭调试信息),一切都会编译并完美运行。
我的问题: 这个 GCC 输出明显错误吗?在我看来,GCC 应该从 .add_even_handler 部分而不是 .text 部分的开头计算符号 LBB7 的偏移量。
我怀疑我理解错了,因为我在 Google 上找不到遇到同样困难的人。
【问题讨论】:
-
你尝试过更新的 gcc 吗?似乎在这里工作正常,但我在 x86 和 gcc 4.4.5 上......不知道哪个更重要;)
标签: gcc assembly debug-symbols sections