你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

readelf——读取ELF格式文件的详细信息

[复制链接]
gaosmile 发布时间:2021-2-4 13:19
1.功能简介

readelf用于读取ELF(ExecutableandLinkableFormat)格式文件的详细信息,包括目标文件、可执行文件、共享目标文件与核心转储文件。

1.1ELF文件分类

(1)可重定位文件(RelocatableFile),这类文件包含了代码和数据,用于链接生成可以执行文件或共享目标文件,目标文件和静态链接库均属于可重定位文件,例如*.o或lib*.a文件;

(2)可执行文件(ExecutableFile),用于生成进程映像,载入内存执行。Linux环境下的ELF可执行文件一般没有扩展名,例如用户命令ls;

(3)共享目标文件(SharedObjectFile),这种文件包含了代码和数据,用于和可重定位文件或其他共享目标文件一起生成可执行文件。例如Linux的动态共享对象(DynamicSharedObject),C语言运行时库glibc-2.5.so;

(4)核心转储文件(CoreDumpFile),当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件。例如Linux下的coredump。

1.2ELF文件组成

ELF文件头描述了ELF文件的总体信息,包括系统相关、类型相关、加载相关和链接相关的信息。( H4 x$ L$ G5 A1 `. v( P/ q/ ]
(1)系统相关,比如ELF文件标识的魔数,以及硬件和平台等相关信息,增加了ELF文件的移植性,使交叉编译成为可能;
5 A2 [5 q& {7 N1 W7 [! E) w1 T(2)类型相关,比如ELF文件类型,分别有目标文件、可执行文件、动态链接库与核心转储文件;; R6 ?+ y- H3 g
(3)加载相关,比如程序头,描述了ELF文件被加载时的段信息;; g( c7 \4 u5 p0 a) c! {& ~
(4)链接相关,比如节头,描述了ELF文件的节信息。

2.命令格式readelf
( @# `, n5 b: K7 a8 H7 t' F5 A% u+ s
# W1 J: A9 q% z- \0 j
2 e1 E: C8 h* Z* a
3.选项说明

运行readelf的时候,除了-v和-H之外,其它的选项必须有一个被指定。

-a,--all:显示全部信息,等价于-h-l-S-s-r-d-V-A-I-h,--file-header:显示文件头信息-l,--program-headers,--segments:显示程序头(如果有的话)-S,--section-headers,--sections:显示节头信息(如果有的话)-g,--section-groups:显示节组信息(如果有的话)-t,--section-details:显示节的详细信息(-S的)-s,--syms,--symbols:显示符号表节中的项(如果有的话)--dyn-syms:显示动态符号表节中的项(如果有的话)-e,--headers:显示全部头信息,等价于-h-l-S-n,--notes:显示note段(内核注释)的信息-r,--relocs:显示可重定位段的信息。-u,--unwind:显示unwind段信息。当前只支持IA64ELF的unwind段信息。-d,--dynamic:显示动态段的信息-V,--version-info:显示版本段的信息-A,--arch-specific:显示CPU构架信息-D,--use-dynamic:使用动态符号表显示符号,而不是符号表-x,--hex-dump=:以16进制方式显示指定节内容。number指定节表中节的索引,或字符串指定文件中的节名-R,--relocated-dump=:以16进制方式显示指定节内容。number指定节表中节的索引,或字符串指定文件中的节名。节的内容被展示前将被重定位。-p,--string-dump=:以可打印的字符串显示指定节内容。number指定节表中节的索引,或字符串指定文件中的节名。-c,--archive-index:展示档案头中的文件符号索引信息,执行与ar的t命令相同的功能,但不使用BFD库-w[liaprmfFsoR],--debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]:显示调试段中指定的内容--dwarf-depth=n:将“.debug_info”节的转储限制为n个子级。这只对--debugdump=info有用。默认为打印所有DIE(debugginginformationentry);n的特殊值0也将具有此效果--dwarf-start=n:只打印以编号为n的模具开始的DIE,仅适用于使用--debugdump=info选项时。该选项可以与--dwarf-depth=n连用。-I,--histogram:显示符号的时候,显示bucketlist长度的柱状图-v,--version:显示readelf的版本信息-H,--help:显示readelf所支持的命令行选项-W,--wide:宽行输出@file:可以将选项集中到一个文件中,然后使用这个@file选项载入
+ W1 ~- m6 R( `) a+ F9 _# [0 `) W' v6 C$ L

; M! `* n, D8 J! g0 r3 i" C4.常用示例" R4 M& ~) w6 w( s+ N
4.1准备工作

(1)首先生成可执行文件形式的ELF文件。

使用g++,分别不使用和使用-g选项,编译生成可执行文件main.out和main.debug.out。

g++main.cpp-omain.outg++-gmain.cpp-omain.debug.outll-rw-r--r--1rootroot74Mar2111:48main.cpp-rwxr-xr-x1rootroot9119Mar2111:49main.out-rwxr-xr-x1rootroot19695Mar2111:49main.debug.out

可见,因为加入了调试信息,main.debug.out的大小明显比main.out大很多。

(2)生成库文件。

////@file:print.cpp//#includevoidprint(){std::cout<<"readelf"<<std::endl; }=""

使用g++和ar,分别生成静态链接库libprint.a和动态链接库libprint.so。

#生成静态库libmy.ag++-cprint.cpp-oprint.oarclibprint.aprint.o#生成动态库libprint.sog++-shared-fPIC-olibprint.soprint.cpp

编译之后,查看生成的文件。

ll-rw-r--r--1rootroot2810Mar2113:50libprint.a-rwxr-xr-x1rootroot8613Mar2113:56libprint.so-rw-r--r--1rootroot104Mar2113:40print.cpp-rw-r--r--1rootroot2664Mar2113:40print.o

基于以上可执行文件和库,下面给出一些常用的示例。

4.2常用示例

(1)读取可执行文件形式的ELF文件头信息。

readelf-hmain.outELFHeader:Magic:7f454c46020101000000000000000000Class:ELF64Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0Type:EXEC(Executablefile)Machine:AdvancedMicroDevicesX86-64Version:0x1Entrypointaddress:0x400780Startofprogramheaders:64(bytesintofile)Startofsectionheaders:4496(bytesintofile)Flags:0x0Sizeofthisheader:64(bytes)Sizeofprogramheaders:56(bytes)Numberofprogramheaders:9Sizeofsectionheaders:64(bytes)Numberofsectionheaders:30Sectionheaderstringtableindex:27

从Type:EXEC(Executablefile)可以看出其类型为EXEC(可执行文件)。并且可以看出文件的体系结构为x86-64。另外,含调试信息的"main.debug.out"和不含调试信息的"main"除了一些大小信息之外,其内容是一样的。

(2)读取目标文件形式的ELF文件头信息。

readelf-hprint.oELFHeader:Magic:7f454c46020101000000000000000000Class:ELF64Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0Type:REL(Relocatablefile)Machine:AdvancedMicroDevicesX86-64Version:0x1Entrypointaddress:0x0Startofprogramheaders:0(bytesintofile)Startofsectionheaders:488(bytesintofile)Flags:0x0Sizeofthisheader:64(bytes)Sizeofprogramheaders:0(bytes)Numberofprogramheaders:0Sizeofsectionheaders:64(bytes)Numberofsectionheaders:15Sectionheaderstringtableindex:12

可见目标文件的elf文件,其类型为REL(可重定位文件)。且相对于可执行文件,目标文件没有程序头(段头)信息。

(3)读取静态库文件形式的ELF文件头信息。

readelf-hlibprint.aFile:libprint.a(print.o)ELFHeader:Magic:7f454c46020101000000000000000000Class:ELF64Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0Type:REL(Relocatablefile)Machine:AdvancedMicroDevicesX86-64Version:0x1Entrypointaddress:0x0Startofprogramheaders:0(bytesintofile)Startofsectionheaders:488(bytesintofile)Flags:0x0Sizeofthisheader:64(bytes)Sizeofprogramheaders:0(bytes)Numberofprogramheaders:0Sizeofsectionheaders:64(bytes)Numberofsectionheaders:15Sectionheaderstringtableindex:12

可见静态库文件的elf文件,其类型为REL(可重定位文件),且没有程序头(段头)信息。

(4)读取动态库文件形式的ELF文件头信息。

readelf-hlibprint.soELFHeader:Magic:7f454c46020101000000000000000000Class:ELF64Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0TypeYN(Sharedobjectfile)Machine:AdvancedMicroDevicesX86-64Version:0x1Entrypointaddress:0x870Startofprogramheaders:64(bytesintofile)Startofsectionheaders:4464(bytesintofile)Flags:0x0Sizeofthisheader:64(bytes)Sizeofprogramheaders:56(bytes)Numberofprogramheaders:7Sizeofsectionheaders:64(bytes)Numberofsectionheaders:28Sectionheaderstringtableindex:25

这里,可见动态库其类型为DYN(共享目标文件),和可执行文件类似,同样拥有程序头(段头)信息。

(5)查看可执行的ELF文件程序头信息。

readelf-lmain.outElffiletypeisEXEC(Executablefile)Entrypoint0x400780Thereare9programheaders,startingatoffset64ProgramHeaders:TypeOffsetVirtAddrPhysAddrFileSizMemSizFlagsAlignPHDR0x00000000000000400x00000000004000400x00000000004000400x00000000000001f80x00000000000001f8RE8INTERP0x00000000000002380x00000000004002380x00000000004002380x000000000000001c0x000000000000001cR1[Requestingprograminterpreter:/lib64/ld-linux-x86-64.so.2]LOAD0x00000000000000000x00000000004000000x00000000004000000x0000000000000b040x0000000000000b04RE200000LOAD0x0000000000000dd80x0000000000600dd80x0000000000600dd80x00000000000002840x00000000000003a0RW200000DYNAMIC0x0000000000000df80x0000000000600df80x0000000000600df80x00000000000002000x0000000000000200RW8NOTE0x00000000000002540x00000000004002540x00000000004002540x00000000000000440x0000000000000044R4GNU_EH_FRAME0x000000000000098c0x000000000040098c0x000000000040098c0x00000000000000440x0000000000000044R4GNU_STACK0x00000000000000000x00000000000000000x00000000000000000x00000000000000000x0000000000000000RW10GNU_RELRO0x0000000000000dd80x0000000000600dd80x0000000000600dd80x00000000000002280x0000000000000228R1SectiontoSegmentmapping:SegmentSections...0001.interp02.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.text.fini.rodata.eh_frame_hdr.eh_frame03.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss04.dynamic05.note.ABI-tag.note.gnu.build-id06.eh_frame_hdr0708.init_array.fini_array.jcr.dynamic.got

注意:含调试信息的可执行文件"main.debug.out"和不含调试信息的"main.out"其内容是一样的。

(6)查看动态库ELF文件程序头信息。

readelf-llibprint.soElffiletypeisDYN(Sharedobjectfile)Entrypoint0x870Thereare7programheaders,startingatoffset64ProgramHeaders:TypeOffsetVirtAddrPhysAddrFileSizMemSizFlagsAlignLOAD0x00000000000000000x00000000000000000x00000000000000000x0000000000000acc0x0000000000000accRE200000LOAD0x0000000000000da80x0000000000200da80x0000000000200da80x00000000000002a00x00000000000002a8RW200000DYNAMIC0x0000000000000dd00x0000000000200dd00x0000000000200dd00x00000000000001f00x00000000000001f0RW8NOTE0x00000000000001c80x00000000000001c80x00000000000001c80x00000000000000240x0000000000000024R4GNU_EH_FRAME0x00000000000009f80x00000000000009f80x00000000000009f80x000000000000002c0x000000000000002cR4GNU_STACK0x00000000000000000x00000000000000000x00000000000000000x00000000000000000x0000000000000000RW10GNU_RELRO0x0000000000000da80x0000000000200da80x0000000000200da80x00000000000002580x0000000000000258R1SectiontoSegmentmapping:SegmentSections...00.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.text.fini.rodata.eh_frame_hdr.eh_frame01.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.bss02.dynamic03.note.gnu.build-id04.eh_frame_hdr0506.init_array.fini_array.jcr.data.rel.ro.dynamic.got

(7)查看一个可执行的ELF文件的节头信息。

readelf-Smain.outThereare30sectionheaders,startingatoffset0x1190:SectionHeaders:[Nr]NameTypeAddressOffsetSizeEntSizeFlagsLinkInfoAlign[0]NULL00000000000000000000000000000000000000000000000000000000000[1].interpPROGBITS000000000040023800000238000000000000001c0000000000000000A001[2].note.ABI-tagNOTE00000000004002540000025400000000000000200000000000000000A004[3].note.gnu.build-iNOTE00000000004002740000027400000000000000240000000000000000A004[4].gnu.hashGNU_HASH00000000004002980000029800000000000000300000000000000000A508[5].dynsymDYNSYM00000000004002c8000002c800000000000001380000000000000018A618[6].dynstrSTRTAB00000000004004000000040000000000000001800000000000000000A001[7].gnu.versionVERSYM000000000040058000000580000000000000001a0000000000000002A502[8].gnu.version_rVERNEED00000000004005a0000005a000000000000000400000000000000000A628[9].rela.dynRELA00000000004005e0000005e000000000000000300000000000000018A508[10].rela.pltRELA00000000004006100000061000000000000000c00000000000000018A5128[11].initPROGBITS00000000004006d0000006d0000000000000001a0000000000000000AX004[12].pltPROGBITS00000000004006f0000006f000000000000000900000000000000010AX0016[13].textPROGBITS00000000004007800000078000000000000001e40000000000000000AX0016[14].finiPROGBITS00000000004009640000096400000000000000090000000000000000AX004[15].rodataPROGBITS000000000040097000000970000000000000001c0000000000000000A008[16].eh_frame_hdrPROGBITS000000000040098c0000098c00000000000000440000000000000000A004[17].eh_framePROGBITS00000000004009d0000009d000000000000001340000000000000000A008[18].init_arrayINIT_ARRAY0000000000600dd800000dd800000000000000100000000000000000WA008[19].fini_arrayFINI_ARRAY0000000000600de800000de800000000000000080000000000000000WA008[20].jcrPROGBITS0000000000600df000000df000000000000000080000000000000000WA008[21].dynamicDYNAMIC0000000000600df800000df800000000000002000000000000000010WA608[22].gotPROGBITS0000000000600ff800000ff800000000000000080000000000000008WA008[23].got.pltPROGBITS00000000006010000000100000000000000000580000000000000008WA008[24].dataPROGBITS00000000006010580000105800000000000000040000000000000000WA004[25].bssNOBITS00000000006010600000105c00000000000001180000000000000000WA0032[26].commentPROGBITS00000000000000000000105c000000000000002c0000000000000001MS001[27].shstrtabSTRTAB00000000000000000000108800000000000001080000000000000000001[28].symtabSYMTAB00000000000000000000191000000000000006f0000000000000001829488[29].strtabSTRTAB000000000000000000002000000000000000039f0000000000000000001KeytoFlags:W(write),A(alloc),X(execute),M(merge),S(strings),l(large)I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(8)查看一个包含调试信息的可执行的ELF文件的节头信息。

readelf-Smain.debug.outThereare35sectionheaders,startingatoffset0x3928:SectionHeaders:[Nr]NameTypeAddressOffsetSizeEntSizeFlagsLinkInfoAlign[0]NULL00000000000000000000000000000000000000000000000000000000000[1].interpPROGBITS000000000040023800000238000000000000001c0000000000000000A001[2].note.ABI-tagNOTE00000000004002540000025400000000000000200000000000000000A004[3].note.gnu.build-iNOTE00000000004002740000027400000000000000240000000000000000A004[4].gnu.hashGNU_HASH00000000004002980000029800000000000000300000000000000000A508[5].dynsymDYNSYM00000000004002c8000002c800000000000001380000000000000018A618[6].dynstrSTRTAB00000000004004000000040000000000000001800000000000000000A001[7].gnu.versionVERSYM000000000040058000000580000000000000001a0000000000000002A502[8].gnu.version_rVERNEED00000000004005a0000005a000000000000000400000000000000000A628[9].rela.dynRELA00000000004005e0000005e000000000000000300000000000000018A508[10].rela.pltRELA00000000004006100000061000000000000000c00000000000000018A5128[11].initPROGBITS00000000004006d0000006d0000000000000001a0000000000000000AX004[12].pltPROGBITS00000000004006f0000006f000000000000000900000000000000010AX0016[13].textPROGBITS00000000004007800000078000000000000001e40000000000000000AX0016[14].finiPROGBITS00000000004009640000096400000000000000090000000000000000AX004[15].rodataPROGBITS000000000040097000000970000000000000001c0000000000000000A008[16].eh_frame_hdrPROGBITS000000000040098c0000098c00000000000000440000000000000000A004[17].eh_framePROGBITS00000000004009d0000009d000000000000001340000000000000000A008[18].init_arrayINIT_ARRAY0000000000600dd800000dd800000000000000100000000000000000WA008[19].fini_arrayFINI_ARRAY0000000000600de800000de800000000000000080000000000000000WA008[20].jcrPROGBITS0000000000600df000000df000000000000000080000000000000000WA008[21].dynamicDYNAMIC0000000000600df800000df800000000000002000000000000000010WA608[22].gotPROGBITS0000000000600ff800000ff800000000000000080000000000000008WA008[23].got.pltPROGBITS00000000006010000000100000000000000000580000000000000008WA008[24].dataPROGBITS00000000006010580000105800000000000000040000000000000000WA004[25].bssNOBITS00000000006010600000105c00000000000001180000000000000000WA0032[26].commentPROGBITS00000000000000000000105c000000000000002c0000000000000001MS001[27].debug_arangesPROGBITS00000000000000000000108800000000000000300000000000000000001[28].debug_infoPROGBITS0000000000000000000010b800000000000014f90000000000000000001[29].debug_abbrevPROGBITS0000000000000000000025b1000000000000039f0000000000000000001[30].debug_linePROGBITS00000000000000000000295000000000000002410000000000000000001[31].debug_strPROGBITS000000000000000000002b910000000000000c4e0000000000000001MS001[32].shstrtabSTRTAB0000000000000000000037df00000000000001480000000000000000001[33].symtabSYMTAB0000000000000000000041e80000000000000768000000000000001834538[34].strtabSTRTAB000000000000000000004950000000000000039f0000000000000000001KeytoFlags:W(write),A(alloc),X(execute),M(merge),S(strings),l(large)I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

可见,相对非调试版本的可执行文件,多了些".debug*"节的信息。

(9)查看一个目标文件的ELF文件的节头信息。

readelf-Sprint.oThereare15sectionheaders,startingatoffset0x1e8:SectionHeaders:[Nr]NameTypeAddressOffsetSizeEntSizeFlagsLinkInfoAlign[0]NULL00000000000000000000000000000000000000000000000000000000000[1].textPROGBITS00000000000000000000004000000000000000740000000000000000AX004[2].rela.textRELA000000000000000000000900000000000000010800000000000000181318[3].dataPROGBITS0000000000000000000000b400000000000000000000000000000000WA004[4].bssNOBITS0000000000000000000000b400000000000000010000000000000000WA004[5].rodataPROGBITS0000000000000000000000b400000000000000080000000000000000A001[6].init_arrayINIT_ARRAY0000000000000000000000c000000000000000080000000000000000WA008[7].rela.init_arrayRELA000000000000000000000a08000000000000001800000000000000181368[8].commentPROGBITS0000000000000000000000c8000000000000002d0000000000000001MS001[9].note.GNU-stackPROGBITS0000000000000000000000f500000000000000000000000000000000001[10].eh_framePROGBITS0000000000000000000000f800000000000000780000000000000000A008[11].rela.eh_frameRELA000000000000000000000a200000000000000048000000000000001813108[12].shstrtabSTRTAB00000000000000000000017000000000000000720000000000000000001[13].symtabSYMTAB0000000000000000000005a80000000000000210000000000000001814138[14].strtabSTRTAB0000000000000000000007b800000000000001450000000000000000001KeytoFlags:W(write),A(alloc),X(execute),M(merge),S(strings),l(large)I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(10)查看一个静态库文件的ELF文件的节头信息。

readelf-Slibprint.aFile:libprint.a(print.o)Thereare15sectionheaders,startingatoffset0x1e8:SectionHeaders:[Nr]NameTypeAddressOffsetSizeEntSizeFlagsLinkInfoAlign[0]NULL00000000000000000000000000000000000000000000000000000000000[1].textPROGBITS00000000000000000000004000000000000000740000000000000000AX004[2].rela.textRELA000000000000000000000900000000000000010800000000000000181318[3].dataPROGBITS0000000000000000000000b400000000000000000000000000000000WA004[4].bssNOBITS0000000000000000000000b400000000000000010000000000000000WA004[5].rodataPROGBITS0000000000000000000000b400000000000000080000000000000000A001[6].init_arrayINIT_ARRAY0000000000000000000000c000000000000000080000000000000000WA008[7].rela.init_arrayRELA000000000000000000000a08000000000000001800000000000000181368[8].commentPROGBITS0000000000000000000000c8000000000000002d0000000000000001MS001[9].note.GNU-stackPROGBITS0000000000000000000000f500000000000000000000000000000000001[10].eh_framePROGBITS0000000000000000000000f800000000000000780000000000000000A008[11].rela.eh_frameRELA000000000000000000000a200000000000000048000000000000001813108[12].shstrtabSTRTAB00000000000000000000017000000000000000720000000000000000001[13].symtabSYMTAB0000000000000000000005a80000000000000210000000000000001814138[14].strtabSTRTAB0000000000000000000007b800000000000001450000000000000000001KeytoFlags:W(write),A(alloc),X(execute),M(merge),S(strings),l(large)I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)

(11)查看一个动态库文件的ELF文件的节头信息。

readelf-Slibprint.soThereare28sectionheaders,startingatoffset0x1170:SectionHeaders:[Nr]NameTypeAddressOffsetSizeEntSizeFlagsLinkInfoAlign[0]NULL00000000000000000000000000000000000000000000000000000000000[1].note.gnu.build-iNOTE00000000000001c8000001c800000000000000240000000000000000A004[2].gnu.hashGNU_HASH00000000000001f0000001f0000000000000003c0000000000000000A308[3].dynsymDYNSYM00000000000002300000023000000000000001e00000000000000018A428[4].dynstrSTRTAB00000000000004100000041000000000000001ab0000000000000000A001[5].gnu.versionVERSYM00000000000005bc000005bc00000000000000280000000000000002A302[6].gnu.version_rVERNEED00000000000005e8000005e800000000000000400000000000000000A428[7].rela.dynRELA00000000000006280000062800000000000001200000000000000018A308[8].rela.pltRELA00000000000007480000074800000000000000900000000000000018A3108[9].initPROGBITS00000000000007d8000007d8000000000000001a0000000000000000AX004[10].pltPROGBITS00000000000008000000080000000000000000700000000000000010AX0016[11].textPROGBITS00000000000008700000087000000000000001740000000000000000AX0016[12].finiPROGBITS00000000000009e4000009e400000000000000090000000000000000AX004[13].rodataPROGBITS00000000000009ed000009ed00000000000000080000000000000000A001[14].eh_frame_hdrPROGBITS00000000000009f8000009f8000000000000002c0000000000000000A004[15].eh_framePROGBITS0000000000000a2800000a2800000000000000a40000000000000000A008[16].init_arrayINIT_ARRAY0000000000200da800000da800000000000000100000000000000000WA008[17].fini_arrayFINI_ARRAY0000000000200db800000db800000000000000080000000000000000WA008[18].jcrPROGBITS0000000000200dc000000dc000000000000000080000000000000000WA008[19].data.rel.roPROGBITS0000000000200dc800000dc800000000000000080000000000000000WA008[20].dynamicDYNAMIC0000000000200dd000000dd000000000000001f00000000000000010WA408[21].gotPROGBITS0000000000200fc000000fc000000000000000400000000000000008WA008[22].got.pltPROGBITS00000000002010000000100000000000000000480000000000000008WA008[23].bssNOBITS00000000002010480000104800000000000000080000000000000000WA004[24].commentPROGBITS000000000000000000001048000000000000002c0000000000000001MS001[25].shstrtabSTRTAB00000000000000000000107400000000000000f90000000000000000001[26].symtabSYMTAB0000000000000000000018700000000000000600000000000000001827468[27].strtabSTRTAB000000000000000000001e7000000000000003350000000000000000001KeytoFlags:W(write),A(alloc),X(execute),M(merge),S(strings),l(large)I(info),L(linkorder),G(group),T(TLS),E(exclude),x(unknown)O(extraOSprocessingrequired)o(OSspecific),p(processorspecific)
- P' {+ \! O; P* ]& S3 n0 v
7 i. Z, |1 \& ^  X9 p- j5 l5 \
收藏 评论0 发布时间:2021-2-4 13:19

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版