如何检查一个部分是代码还是数据(.elf)?

How to check if a section is code or data(.elf)?

我正在编写一个脚本来分析 .elf 的内存。 更具体地说:代码大小和数据大小。 GNU 大小实用程序列出了部分大小。

>mips-mti-elf-size.exe -A -x -t file.elf
section                              size                 addr                                 
.sec(1)
.sec(2)
.
.sec(i)
.sec(n)
Total                                0x-----

我还可以检查 .text 总大小或 .data 总大小。 有没有办法决定每个 sec(i) 是代码还是数据?

使用mips-mti-elf-readelf.exe:

 mips-mti-elf-readelf.exe -S file.elf

这将 return:

  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .secName                          9014d000 00d000 000480 00  AX  0   0 4096
  ...

使用 Flg:如果 X 启动就是代码。