'nm' 和 'objdump' 未知美元符号

`nm` and `objdump` unknown dollar signed symbol

提问人:mohammadsdtmnd 提问时间:1/2/2023 最后编辑:mohammadsdtmnd 更新时间:1/3/2023 访问量:146

问:

Th 给出了未知符号:nm source.o

F:\STM32CubeIDE\LMS\ANC_fxlms_v1\Debug\Core\Src>nm FX_LMS.o
00000000 b $d
00000298 t $d
00000000 b $d
000000b4 t $d
00000000 b $d
00000544 t $d
00000024 t $d
00000000 b $d
000002b0 t $d
00000000 d $d
000001f8 t $d
00000000 b $d
00000178 t $d
00000000 b $d
00000000 b $d
00000000 b $d
000000f0 t $d
00000000 b $d
00000058 t $d
00000000 b $d
00000000 b $d
00000000 b $d
00000000 b $d
00000000 b $d
00000050 t $d
00000000 b $d
000005ec t $d
00000000 b $d
00000664 t $d
00000000 b $d
00000000 b $d
0000003c t $d
00000000 t $t
.
.
.
00000000 t $t
00000000 t $t
         U ADC_DMAError
         U ADC_Enable
00000001 T ADC_Start_DMA_double
0000010c d aecho.0
.
.
.

我想知道$d和$t符号的含义。什么?解释这些的参考是什么? 这是来自 eclipse(Windows 10 64 位上的 STM32cubeIDE)编译的 C 源代码。

从 eclipse 控制台复制的可能重要的构建命令:

21:04:01 **** Incremental Build of configuration Debug for project ANC_fxlms_v1 ****
make -j8 all 
arm-none-eabi-gcc "../Core/Src/FX_LMS.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DARM_MATH_CM7 -DUSE_HAL_DRIVER -DSTM32H743xx -c -I../Core/Inc -I"F:/STM32CubeIDE/LMS/ANC_fxlms_v1/Core/Inc/drv" -I"F:/STM32CubeIDE/LMS/ANC_fxlms_v1/Drivers/CMSIS/DSP/Include" -I../Drivers/STM32H7xx_HAL_Driver/Inc -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/FX_LMS.d" -MT"Core/Src/FX_LMS.o" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "Core/Src/FX_LMS.o"

这是来源:

c 嵌入式 objdump binutils nm

评论

0赞 Andrew Henle 1/2/2023
如果您将输出作为文本而不是图像发布,您的问题会更好。此外,如果可以同时包含原始源代码和用于创建对象文件的编译命令,那将会有所帮助。有了输出的图像,你可能会得到一些反对票。
0赞 mohammadsdtmnd 1/2/2023
@AndrewHenle 谢谢帮忙。源代码大约有 500 行,该网站不允许我在附加的文本代码中附加它。
3赞 Andrew Henle 1/2/2023
您可能不需要 500 行代码来创建具有类似输出但更小的内容。
0赞 the busybee 1/2/2023
您可能需要查看代码的程序集中间表示形式。这些符号可以是编译器自动生成的符号,例如用于本地引用或部分的符号。
0赞 KamilCuk 1/3/2023
是否给出相同的输出?arm-none-eabi-nm

答:

1赞 KamilCuk 1/3/2023 #1

您为 ARM 体系结构编译了文件。

nm适用于您的本地架构。所以最有可能或类似的东西。x86-64-pc-linux-gnu-nm

arm-none-eabi-nm适用于 ARM 架构。

ELF文件的确切规范中的endianess或其他一些怪癖可能因架构而异,这很可能是您看到此类伪影的原因。