objdump 是用来查看目标文件或者可执行的目标文件的构成的 GCC 工具。
objdump - display information from object files.
objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出。
===================
-x
--all-headers
Display all available header information, including the symbol table and relocation entries. Using -x is equivalent to specifying all of -a -f -h -p -r -t.
===================
objdump -t obj 输出目标文件的符号表。
===================
-t
--syms
Print the symbol table entries of the file. This is similar to the information provided by the nm program.
===================
比 nm -s 包含的符号表信息更全面。
objdump -h obj 输出目标文件的所有段概括。
===================
-h
--section-headers
--headers
Display summary information from the section headers of the object file.
File segments may be relocated to nonstandard addresses, for example by using the -Ttext, -Tdata, or -Tbss options to ld. However, some object file formats, such as a.out, do not store the starting address of the file segments. In those situations, although ld relocates the sections correctly, using objdump -h to list the file section headers cannot show the correct addresses. Instead, it shows the usual addresses, which are implicit for the target.
===================
objdump -j .text/.data -S obj 输出指定段的信息。
===================
-j name
--section=name
Display information only for section name.
===================
===================
-S
--source
Display source code intermixed with disassembly, if possible. Implies -d.
--source
-S 尽可能反汇编出源代码,尤其当编译的时候指定了 -g 这种调试参数时效果比较明显。
隐含了 -d 参数。
===================
===================
-d
--disassemble
Display the assembler mnemonics for the machine instructions from objfile. This option only disassembles
those sections which are expected to contain instructions.
--disassemble
-d 仅反汇编应该包含指令机器码的 section 。
===================
===================
-D
--disassemble-all
Like -d, but disassemble the contents of all sections, not just those expected to contain instructions.
--disassemble-all
-D 与 -d 类似,但反汇编所有 section 。
===================
objdump -a obj 输出 .a 文件中 .o 文件的信息 。
===================
-a
--archive-header
If any of the objfile files are archives, display the archive header information (in a format similar to ls
-l). Besides the information you could list with ar tv, objdump -a shows the object file format of each archive member.
===================
比 ar tv 只多了文件格式信息(也是查看静态库文件中包含的二进制文件为 32bit 或 64bit 的方法)。
===================
-l
--line-numbers
Label the display (using debugging information) with the filename and source line numbers corresponding to the object code or relocs shown. Only useful with -d, -D, or -r.
--line-numbers
-l 用文件名和行号标注相应的目标代码,仅仅和 -d、-D 或者 -r 一起使用。使用 -ld 和使用 -d 的区别不是很大,在源码级调试的 时候有用,要求编译时使用了 -g 之类的调试编译选项。
===================
===================
--prefix-addresses
When disassembling, print the complete address on each line. This is the older disassembly format.
--prefix-addresses
反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。
显示效果并不理想,但可能会用到其中的某些显示,自己可以对比。
===================
===================
--show-raw-insn
When disassembling instructions, print the instruction in hex as well as in symbolic form. This is the default except when --prefix-addresses is used.
--show-raw-insn
反汇编的时候,显示每条汇编指令对应的十六进制机器码,这是缺省选项,除非指定了 --prefix-addresses 。
===================
===================
--no-show-raw-insn
When disassembling instructions, do not print the instruction bytes. This is the default when --pre- fix-addresses is used.
--no-show-raw-insn
反汇编时,不显示汇编指令的十六进制机器码,这是指定 --prefix-addresses 选项时的缺省设置。
===================
示例一:以 libevent.a 进行演示。
[root@Betty lib]# pwd
/usr/local/lib
[root@Betty lib]# ll libevent.a
-rw-r--r-- 1 root root 635122 Jul 8 13:53 libevent.a
查看 libevent.a 中包含哪些 .o 文件(权限+格式)。
[root@Betty lib]# objdump -a libevent.a
In archive libevent.a:
event.o: file format elf64-x86-64
rwxrwSrwx 0/0 58760 Jul 8 13:52 2013 event.o
buffer.o: file format elf64-x86-64
rwxrwSrwx 0/0 24168 Jul 8 13:52 2013 buffer.o
evbuffer.o: file format elf64-x86-64
rwxrwSrwx 0/0 28656 Jul 8 13:52 2013 evbuffer.o
log.o: file format elf64-x86-64
rwxrwSrwx 0/0 14392 Jul 8 13:52 2013 log.o
evutil.o: file format elf64-x86-64
rwxrwSrwx 0/0 11920 Jul 8 13:52 2013 evutil.o
event_tagging.o: file format elf64-x86-64
rwxrwSrwx 0/0 30368 Jul 8 13:52 2013 event_tagging.o
http.o: file format elf64-x86-64
rwxrwSrwx 0/0 169040 Jul 8 13:52 2013 http.o
evdns.o: file format elf64-x86-64
rwxrwSrwx 0/0 150064 Jul 8 13:52 2013 evdns.o
evrpc.o: file format elf64-x86-64
rwxrwSrwx 0/0 44912 Jul 8 13:52 2013 evrpc.o
strlcpy.o: file format elf64-x86-64
rwxrwSrwx 0/0 4216 Jul 8 13:52 2013 strlcpy.o
select.o: file format elf64-x86-64
rwxrwSrwx 0/0 22056 Jul 8 13:52 2013 select.o
poll.o: file format elf64-x86-64
rwxrwSrwx 0/0 21832 Jul 8 13:52 2013 poll.o
epoll.o: file format elf64-x86-64
rwxrwSrwx 0/0 23560 Jul 8 13:52 2013 epoll.o
signal.o: file format elf64-x86-64
rwxrwSrwx 0/0 25888 Jul 8 13:52 2013 signal.o
[root@Betty lib]#
作为对比,提供 ar 命令输出结果。
ar - create, modify, and extract from archives
===================
t Display a table listing the contents of archive, or those of the files listed in member... that are present
in the archive. Normally only the member name is shown; if you also want to see the modes (permissions), timestamp, owner, group, and size, you can request that by also specifying the v modifier.
If you do not specify a member, all files in the archive are listed.
If there is more than one file with the same name (say, fie) in an archive (say b.a), ar t b.a fie lists
only the first instance; to see them all, you must ask for a complete listing---in our example, ar t b.a.
===================
[root@Betty lib]# ar tv libevent.a
rwxrwSrwx 0/0 58760 Jul 8 13:52 2013 event.o
rwxrwSrwx 0/0 24168 Jul 8 13:52 2013 buffer.o
rwxrwSrwx 0/0 28656 Jul 8 13:52 2013 evbuffer.o
rwxrwSrwx 0/0 14392 Jul 8 13:52 2013 log.o
rwxrwSrwx 0/0 11920 Jul 8 13:52 2013 evutil.o
rwxrwSrwx 0/0 30368 Jul 8 13:52 2013 event_tagging.o
rwxrwSrwx 0/0 169040 Jul 8 13:52 2013 http.o
rwxrwSrwx 0/0 150064 Jul 8 13:52 2013 evdns.o
rwxrwSrwx 0/0 44912 Jul 8 13:52 2013 evrpc.o
rwxrwSrwx 0/0 4216 Jul 8 13:52 2013 strlcpy.o
rwxrwSrwx 0/0 22056 Jul 8 13:52 2013 select.o
rwxrwSrwx 0/0 21832 Jul 8 13:52 2013 poll.o
rwxrwSrwx 0/0 23560 Jul 8 13:52 2013 epoll.o
rwxrwSrwx 0/0 25888 Jul 8 13:52 2013 signal.o
[root@Betty lib]#
输出 .a 中全部 .o 文件中的符号表信息。
[root@Betty lib]# objdump -t libevent.a
In archive libevent.a:
event.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 event.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 0000000000000008 event_loopexit_cb
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000070 l O .rodata 0000000000000016 __PRETTY_FUNCTION__.5067
0000000000000140 l F .text 000000000000008b gettime
0000000000000008 l O .bss 0000000000000004 use_monotonic
00000000000002d0 l F .text 000000000000001d event_once_cb
0000000000000090 l O .rodata 0000000000000019 __func__.4992
0000000000000000 l d .rodata.str1.8 0000000000000000 .rodata.str1.8
00000000000000e0 l O .rodata 0000000000000020 eventops
0000000000000100 l O .rodata 000000000000000f __func__.4892
0000000000000590 l F .text 0000000000000357 event_queue_remove
0000000000000020 l O .rodata 0000000000000013 __func__.5403
0000000000000013 l O .rodata 000000000000000a __PRETTY_FUNCTION__.5306
00000000000000c0 l O .rodata 0000000000000010 __PRETTY_FUNCTION__.4915
00000000000000a9 l O .rodata 000000000000000d __func__.4961
0000000000000d30 l F .text 0000000000000213 event_queue_insert
0000000000000000 l O .rodata 0000000000000013 __func__.5437
000000000000003d l O .rodata 000000000000000d __PRETTY_FUNCTION__.5336
0000000000000050 l O .rodata 0000000000000015 __PRETTY_FUNCTION__.5026
0000000000000033 l O .rodata 000000000000000a __PRETTY_FUNCTION__.5266
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000010 g F .text 0000000000000015 event_base_loopbreak
0000000000000030 g F .text 000000000000000c event_loopbreak
0000000000000000 g O .bss 0000000000000008 current_base
0000000000000040 g F .text 000000000000005a event_set
00000000000000a0 g F .text 0000000000000026 event_base_set
00000000000000d0 g F .text 000000000000001f event_priority_set
00000000000000f0 g F .text 0000000000000006 event_get_version
0000000000000100 g F .text 000000000000000e event_get_method
0000000000000110 g F .text 000000000000002d event_base_get_method
0000000000000000 *UND* 0000000000000000 __assert_fail
0000000000000000 *UND* 0000000000000000 gettimeofday
0000000000000000 *UND* 0000000000000000 clock_gettime
00000000000001d0 g F .text 00000000000000f5 event_pending
0000000000000000 *UND* 0000000000000000 free
00000000000002f0 g F .text 0000000000000112 event_base_priority_init
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 event_err
0000000000000410 g F .text 000000000000000e event_priority_init
0000000000000420 g F .text 0000000000000145 event_base_new
0000000000000000 *UND* 0000000000000000 epollops
0000000000000000 *UND* 0000000000000000 evutil_getenv
0000000000000000 *UND* 0000000000000000 event_msgx
0000000000000000 *UND* 0000000000000000 event_errx
0000000000000570 g F .text 000000000000001a event_init
00000000000008f0 g F .text 0000000000000106 event_del
0000000000000a00 g F .text 0000000000000222 event_base_free
0000000000000c30 g F .text 00000000000000f9 event_reinit
0000000000000000 *UND* 0000000000000000 realloc
0000000000000f50 g F .text 0000000000000030 event_active
0000000000000f80 g F .text 000000000000048e event_base_loop
0000000000000000 *UND* 0000000000000000 evsignal_base
0000000000001410 g F .text 000000000000000e event_loop
0000000000001420 g F .text 0000000000000007 event_dispatch
0000000000001430 g F .text 0000000000000007 event_base_dispatch
0000000000001440 g F .text 00000000000001f5 event_add
0000000000001640 g F .text 000000000000013a event_base_once
0000000000001780 g F .text 000000000000001d event_once
00000000000017a0 g F .text 000000000000001e event_loopexit
00000000000017c0 g F .text 000000000000001a event_base_loopexit
0000000000000000 *UND* 0000000000000000 pollops
0000000000000000 *UND* 0000000000000000 selectops
buffer.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 buffer.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000190 l F .text 0000000000000025 evbuffer_align
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l O .rodata 0000000000000012 __func__.4672
0000000000000020 l O .rodata 0000000000000015 __PRETTY_FUNCTION__.4627
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 0000000000000056 evbuffer_drain
0000000000000060 g F .text 0000000000000009 evbuffer_setcb
0000000000000070 g F .text 0000000000000072 evbuffer_find
0000000000000000 *UND* 0000000000000000 memchr
00000000000000f0 g F .text 000000000000004d evbuffer_write
0000000000000000 *UND* 0000000000000000 write
0000000000000140 g F .text 0000000000000049 evbuffer_remove
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000000 *UND* 0000000000000000 memmove
00000000000001c0 g F .text 000000000000009c evbuffer_expand
0000000000000000 *UND* 0000000000000000 realloc
0000000000000260 g F .text 000000000000012f evbuffer_read
0000000000000000 *UND* 0000000000000000 ioctl
0000000000000000 *UND* 0000000000000000 read
0000000000000390 g F .text 00000000000000a0 evbuffer_add
0000000000000430 g F .text 00000000000000e0 evbuffer_add_buffer
0000000000000510 g F .text 0000000000000126 evbuffer_readline
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 stderr
0000000000000000 *UND* 0000000000000000 fprintf
0000000000000640 g F .text 00000000000000f2 evbuffer_add_vprintf
0000000000000000 *UND* 0000000000000000 evutil_vsnprintf
0000000000000000 *UND* 0000000000000000 __assert_fail
0000000000000740 g F .text 000000000000008e evbuffer_add_printf
00000000000007d0 g F .text 000000000000001b evbuffer_free
0000000000000000 *UND* 0000000000000000 free
00000000000007f0 g F .text 000000000000000f evbuffer_new
0000000000000000 *UND* 0000000000000000 calloc
evbuffer.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 evbuffer.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000080 l F .text 000000000000002a bufferevent_add
0000000000000650 l F .text 00000000000001d3 bufferevent_readcb
00000000000004c0 l F .text 00000000000000fb bufferevent_writecb
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 000000000000001d bufferevent_setcb
0000000000000020 g F .text 0000000000000051 bufferevent_base_set
0000000000000000 *UND* 0000000000000000 event_base_set
0000000000000000 *UND* 0000000000000000 event_add
00000000000000b0 g F .text 00000000000000ad bufferevent_settimeout
0000000000000000 *UND* 0000000000000000 event_pending
0000000000000160 g F .text 0000000000000077 bufferevent_enable
00000000000001e0 g F .text 000000000000006f bufferevent_disable
0000000000000000 *UND* 0000000000000000 event_del
0000000000000250 g F .text 0000000000000057 bufferevent_read
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000000 *UND* 0000000000000000 evbuffer_drain
00000000000002b0 g F .text 000000000000006a bufferevent_write
0000000000000000 *UND* 0000000000000000 evbuffer_add
0000000000000320 g F .text 0000000000000041 bufferevent_write_buffer
0000000000000370 g F .text 000000000000003a bufferevent_free
0000000000000000 *UND* 0000000000000000 evbuffer_free
0000000000000000 *UND* 0000000000000000 free
00000000000003b0 g F .text 000000000000004e bufferevent_priority_set
0000000000000000 *UND* 0000000000000000 event_priority_set
0000000000000400 g F .text 00000000000000b9 bufferevent_setfd
0000000000000000 *UND* 0000000000000000 event_set
0000000000000000 *UND* 0000000000000000 evbuffer_write
0000000000000000 *UND* 0000000000000000 __errno_location
00000000000005c0 g F .text 0000000000000040 bufferevent_read_pressure_cb
0000000000000000 *UND* 0000000000000000 evbuffer_setcb
0000000000000600 g F .text 0000000000000042 bufferevent_setwatermark
0000000000000000 *UND* 0000000000000000 evbuffer_read
0000000000000830 g F .text 00000000000000fd bufferevent_new
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 evbuffer_new
log.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 log.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l O .bss 0000000000000008 log_fn
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000010 l F .text 0000000000000144 _warn_helper
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 0000000000000008 event_set_log_callback
0000000000000000 *UND* 0000000000000000 evutil_vsnprintf
0000000000000000 *UND* 0000000000000000 stderr
0000000000000000 *UND* 0000000000000000 fprintf
0000000000000000 *UND* 0000000000000000 strerror
0000000000000000 *UND* 0000000000000000 evutil_snprintf
0000000000000160 g F .text 000000000000009d _event_debugx
0000000000000200 g F .text 00000000000000a0 event_msgx
00000000000002a0 g F .text 00000000000000a0 event_warnx
0000000000000340 g F .text 000000000000009d event_errx
0000000000000000 *UND* 0000000000000000 exit
00000000000003e0 g F .text 00000000000000ab event_warn
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000490 g F .text 00000000000000b2 event_err
evutil.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 evutil.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 0000000000000058 evutil_getenv
0000000000000000 *UND* 0000000000000000 getuid
0000000000000000 *UND* 0000000000000000 geteuid
0000000000000000 *UND* 0000000000000000 getgid
0000000000000000 *UND* 0000000000000000 getegid
0000000000000000 *UND* 0000000000000000 getenv
0000000000000060 g F .text 000000000000002e evutil_vsnprintf
0000000000000000 *UND* 0000000000000000 vsnprintf
0000000000000090 g F .text 0000000000000089 evutil_snprintf
0000000000000120 g F .text 0000000000000007 evutil_strtoll
0000000000000000 *UND* 0000000000000000 __strtoll_internal
0000000000000130 g F .text 000000000000002b evutil_make_socket_nonblocking
0000000000000000 *UND* 0000000000000000 fcntl
0000000000000000 *UND* 0000000000000000 event_warn
0000000000000160 g F .text 0000000000000005 evutil_socketpair
0000000000000000 *UND* 0000000000000000 socketpair
event_tagging.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 event_tagging.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 00000000000000b7 decode_int_internal
00000000000000e0 l F .text 000000000000006f decode_tag_internal
0000000000000000 l O .bss 0000000000000008 _buf
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l O .rodata 0000000000000017 __func__.4433
0000000000000017 l O .rodata 000000000000000b __func__.4171
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 *UND* 0000000000000000 evbuffer_drain
00000000000000c0 g F .text 000000000000001d evtag_decode_int
0000000000000150 g F .text 0000000000000049 evtag_consume
00000000000001a0 g F .text 0000000000000093 evtag_payload_length
0000000000000240 g F .text 00000000000000aa evtag_peek_length
00000000000002f0 g F .text 0000000000000010 evtag_peek
0000000000000300 g F .text 000000000000000a evtag_decode_tag
0000000000000310 g F .text 00000000000000b0 evtag_unmarshal_int
0000000000000000 *UND* 0000000000000000 evbuffer_add
00000000000003c0 g F .text 0000000000000094 evtag_unmarshal
0000000000000460 g F .text 00000000000000a5 evtag_unmarshal_timeval
0000000000000510 g F .text 00000000000000b3 evtag_unmarshal_string
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 evbuffer_remove
0000000000000000 *UND* 0000000000000000 event_err
00000000000005d0 g F .text 000000000000008f evtag_unmarshal_fixed
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000660 g F .text 0000000000000068 evtag_encode_tag
00000000000006d0 g F .text 00000000000000c7 encode_int
00000000000007a0 g F .text 000000000000007a evtag_marshal_int
0000000000000000 *UND* 0000000000000000 evbuffer_add_buffer
0000000000000820 g F .text 000000000000004c evtag_marshal
0000000000000870 g F .text 0000000000000076 evtag_marshal_timeval
00000000000008f0 g F .text 0000000000000046 evtag_marshal_string
0000000000000000 *UND* 0000000000000000 strlen
0000000000000940 g F .text 000000000000003c evtag_init
0000000000000000 *UND* 0000000000000000 evbuffer_new
http.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 http.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l F .text 000000000000003b html_replace
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000040 l F .text 000000000000000d evhttp_connected
0000000000000143 l O .rodata 000000000000000e __func__.7608
0000000000000130 l O .rodata 0000000000000013 __func__.7651
0000000000000470 l F .text 0000000000000068 evhttp_new_object
0000000000000160 l O .rodata 0000000000000012 __func__.7552
00000000000004f0 l F .text 00000000000000cc evhttp_add_header_internal
00000000000001c0 l O .rodata 000000000000001b __func__.6878
00000000000005c0 l F .text 0000000000000013 evhttp_connection_stop_detectclose
00000000000003f0 l O .rodata 0000000000000016 __func__.7071
00000000000012b0 l F .text 00000000000000a5 accept_socket
00000000000009f0 l F .text 000000000000003c evhttp_add_event
0000000000000aa0 l F .text 00000000000000a0 evhttp_associate_new_request_with_connection
0000000000003c30 l F .text 000000000000013c evhttp_handle_request
0000000000000100 l O .rodata 000000000000002d __func__.7717
0000000000000b40 l F .text 00000000000000c1 make_addrinfo
0000000000000c10 l F .text 0000000000000112 bind_socket_ai
0000000000000d30 l F .text 000000000000007e bind_socket
0000000000000180 l O .rodata 0000000000000013 __func__.7529
0000000000000ea0 l F .text 00000000000000e0 evhttp_decode_uri_internal
00000000000001e0 l O .rodata 0000000000000012 __func__.7338
0000000000000200 l O .rodata 0000000000000100 uri_chars
0000000000000000 l d .rodata.str1.8 0000000000000000 .rodata.str1.8
00000000000003d0 l O .rodata 000000000000001b __PRETTY_FUNCTION__.7090
0000000000000172 l O .rodata 000000000000000e __func__.7512
0000000000000440 l O .rodata 0000000000000021 __PRETTY_FUNCTION__.6283
0000000000000480 l O .rodata 0000000000000024 __func__.6275
00000000000004c0 l O .rodata 0000000000000024 __PRETTY_FUNCTION__.6271
0000000000001430 l F .text 000000000000005b evhttp_write_connectioncb
0000000000000390 l O .rodata 000000000000001a __PRETTY_FUNCTION__.6238
0000000000001550 l F .text 0000000000000035 evhttp_is_connection_keepalive
0000000000001590 l F .text 0000000000000071 evhttp_is_connection_close
0000000000001610 l F .text 0000000000000104 evhttp_send_done
0000000000000310 l O .rodata 0000000000000011 __PRETTY_FUNCTION__.7175
0000000000000410 l O .rodata 000000000000001b __func__.6403
0000000000003290 l F .text 000000000000014c evhttp_connectioncb
00000000000003b0 l O .rodata 000000000000001a __PRETTY_FUNCTION__.7118
0000000000002890 l F .text 0000000000000012 evhttp_connection_retry
00000000000028b0 l F .text 0000000000000008 evhttp_detect_close_cb
0000000000000530 l O .rodata 0000000000000017 __PRETTY_FUNCTION__.6088
0000000000000400 l O .bss 0000000000000400 host.6053
0000000000000000 l O .bss 0000000000000400 file.6054
0000000000000300 l O .rodata 000000000000000c __PRETTY_FUNCTION__.7207
00000000000030c0 l F .text 0000000000000088 evhttp_request_dispatch
0000000000000370 l O .rodata 0000000000000018 __PRETTY_FUNCTION__.6289
0000000000000350 l O .rodata 0000000000000014 __func__.7145
0000000000000330 l O .rodata 0000000000000014 __PRETTY_FUNCTION__.7146
00000000000033e0 l F .text 00000000000001a0 evhttp_connection_done
0000000000003580 l F .text 0000000000000052 evhttp_read_trailer
00000000000035e0 l F .text 00000000000001ed evhttp_read_body
00000000000037d0 l F .text 000000000000014c evhttp_get_body
0000000000000510 l O .rodata 0000000000000017 __func__.7000
0000000000003920 l F .text 00000000000000f0 evhttp_read_header
00000000000004f0 l O .rodata 0000000000000013 __func__.7050
00000000000004e4 l O .rodata 000000000000000c __func__.6222
0000000000000550 l O .rodata 0000000000000012 __func__.5873
00000000000001a0 l O .rodata 0000000000000013 __func__.7356
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
00000000000001b4 l .rodata.str1.1 0000000000000000 .LC36
00000000000001b6 l .rodata.str1.1 0000000000000000 .LC37
00000000000001b1 l .rodata.str1.1 0000000000000000 .LC35
00000000000001d6 l .rodata.str1.1 0000000000000000 .LC42
000000000000033c l .rodata.str1.1 0000000000000000 .LC72
000000000000033e l .rodata.str1.1 0000000000000000 .LC73
0000000000000340 l .rodata.str1.1 0000000000000000 .LC74
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000050 g F .text 0000000000000007 evhttp_connection_set_timeout
0000000000000060 g F .text 0000000000000007 evhttp_connection_set_retries
0000000000000070 g F .text 000000000000000f evhttp_connection_set_closecb
0000000000000080 g F .text 0000000000000015 evhttp_connection_get_peer
00000000000000a0 g F .text 0000000000000004 evhttp_set_timeout
00000000000000b0 g F .text 0000000000000009 evhttp_set_gencb
00000000000000c0 g F .text 0000000000000008 evhttp_request_set_chunked_cb
00000000000000d0 g F .text 0000000000000005 evhttp_request_uri
00000000000000e0 g F .text 0000000000000067 evhttp_clear_headers
0000000000000000 *UND* 0000000000000000 free
0000000000000150 g F .text 0000000000000047 evhttp_response_code
0000000000000000 *UND* 0000000000000000 __strdup
00000000000001a0 g F .text 0000000000000077 evhttp_request_free
0000000000000000 *UND* 0000000000000000 evbuffer_free
0000000000000220 g F .text 0000000000000074 evhttp_del_cb
0000000000000000 *UND* 0000000000000000 strcmp
00000000000002a0 g F .text 00000000000000a8 evhttp_set_cb
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 event_err
0000000000000350 g F .text 0000000000000116 evhttp_request_new
0000000000000000 *UND* 0000000000000000 evbuffer_new
0000000000000000 *UND* 0000000000000000 event_warn
00000000000004e0 g F .text 000000000000000f evhttp_new
0000000000000000 *UND* 0000000000000000 event_del
00000000000005e0 g F .text 000000000000014d evhttp_connection_free
0000000000000000 *UND* 0000000000000000 close
0000000000000730 g F .text 00000000000000d0 evhttp_free
0000000000000800 g F .text 0000000000000129 evhttp_connection_new
0000000000000930 g F .text 00000000000000b3 evhttp_accept_socket
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 event_set
0000000000000000 *UND* 0000000000000000 event_base_set
0000000000000000 *UND* 0000000000000000 event_add
0000000000000a30 g F .text 0000000000000070 evhttp_start_read
0000000000003a10 g F .text 0000000000000127 evhttp_read
0000000000000000 *UND* 0000000000000000 evutil_snprintf
0000000000000000 *UND* 0000000000000000 getaddrinfo
0000000000000000 *UND* 0000000000000000 gai_strerror
0000000000000000 *UND* 0000000000000000 event_warnx
0000000000000000 *UND* 0000000000000000 socket
0000000000000000 *UND* 0000000000000000 evutil_make_socket_nonblocking
0000000000000000 *UND* 0000000000000000 fcntl
0000000000000000 *UND* 0000000000000000 setsockopt
0000000000000000 *UND* 0000000000000000 bind
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 *UND* 0000000000000000 freeaddrinfo
0000000000000db0 g F .text 0000000000000084 evhttp_bind_socket
0000000000000000 *UND* 0000000000000000 listen
0000000000000e40 g F .text 0000000000000057 evhttp_start
0000000000000000 *UND* 0000000000000000 __ctype_b_loc
0000000000000000 *UND* 0000000000000000 __strtol_internal
0000000000000f80 g F .text 0000000000000065 evhttp_decode_uri
0000000000000000 *UND* 0000000000000000 strlen
0000000000000ff0 g F .text 0000000000000096 evhttp_encode_uri
0000000000000000 *UND* 0000000000000000 evbuffer_add
0000000000000000 *UND* 0000000000000000 evbuffer_add_printf
0000000000001090 g F .text 0000000000000056 evhttp_connection_set_base
0000000000000000 *UND* 0000000000000000 __assert_fail
00000000000010f0 g F .text 00000000000001bb evhttp_get_request
0000000000000000 *UND* 0000000000000000 getnameinfo
0000000000000000 *UND* 0000000000000000 event_errx
0000000000000000 *UND* 0000000000000000 accept
0000000000001360 g F .text 0000000000000033 evhttp_connection_set_local_port
00000000000013a0 g F .text 000000000000008d evhttp_connection_set_local_address
0000000000001490 g F .text 000000000000007c evhttp_remove_header
0000000000000000 *UND* 0000000000000000 strcasecmp
0000000000001510 g F .text 000000000000003f evhttp_find_header
0000000000000000 *UND* 0000000000000000 strncasecmp
0000000000001720 g F .text 000000000000007d evhttp_write_buffer
0000000000000000 *UND* 0000000000000000 event_pending
0000000000002a00 g F .text 0000000000000087 evhttp_write
00000000000017a0 g F .text 000000000000009c evhttp_send_reply_end
0000000000001840 g F .text 000000000000007d evhttp_send_reply_chunk
0000000000000000 *UND* 0000000000000000 evbuffer_add_buffer
00000000000018c0 g F .text 000000000000080a evhttp_parse_firstline
0000000000000000 *UND* 0000000000000000 evbuffer_readline
0000000000000000 *UND* 0000000000000000 __strsep_g
0000000000000000 *UND* 0000000000000000 strchr
00000000000020d0 g F .text 0000000000000295 evhttp_add_header
0000000000000000 *UND* 0000000000000000 strpbrk
0000000000000000 *UND* 0000000000000000 strspn
0000000000002370 g F .text 000000000000033a evhttp_parse_headers
0000000000000000 *UND* 0000000000000000 realloc
0000000000000000 *UND* 0000000000000000 memcpy
00000000000026b0 g F .text 000000000000008b evhttp_connection_reset
0000000000000000 *UND* 0000000000000000 evbuffer_drain
0000000000002740 g F .text 0000000000000141 evhttp_connection_connect
0000000000000000 *UND* 0000000000000000 connect
00000000000028c0 g F .text 0000000000000137 evhttp_connection_fail
0000000000000000 *UND* 0000000000000000 evbuffer_write
0000000000002a90 g F .text 000000000000011d evhttp_hostportfile
0000000000000000 *UND* 0000000000000000 _event_strlcpy
0000000000002bb0 g F .text 0000000000000331 evhttp_make_header
0000000000000000 *UND* 0000000000000000 time
0000000000000000 *UND* 0000000000000000 gmtime_r
0000000000000000 *UND* 0000000000000000 strftime
0000000000002ef0 g F .text 000000000000004c evhttp_send_reply_start
0000000000002f40 g F .text 00000000000000e7 evhttp_send_page
0000000000003030 g F .text 000000000000008b evhttp_send_error
0000000000003150 g F .text 0000000000000135 evhttp_make_request
0000000000000000 *UND* 0000000000000000 getsockopt
0000000000000000 *UND* 0000000000000000 evutil_strtoll
0000000000000000 *UND* 0000000000000000 evbuffer_read
0000000000003b40 g F .text 00000000000000e5 evhttp_htmlescape
0000000000000000 *UND* 0000000000000000 strcpy
0000000000000000 *UND* 0000000000000000 strncmp
0000000000003d70 g F .text 0000000000000504 evhttp_parse_query
0000000000004280 g F .text 0000000000000081 evhttp_send_reply
evdns.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 evdns.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000030 l O .bss 0000000000000008 evdns_log_fn
0000000000000760 l F .text 0000000000000078 default_transaction_id_fn
0000000000000008 l O .data 0000000000000008 trans_id_function
0000000000000030 l F .text 0000000000000042 transaction_id_pick
0000000000000000 l O .bss 0000000000000008 req_head
0000000000000018 l O .bss 0000000000000008 server_head
00000000000000b0 l F .text 000000000000002f evdns_request_insert
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000140 l F .text 0000000000000048 search_state_decref
0000000000000020 l O .bss 0000000000000004 global_good_nameservers
0000000000000008 l O .bss 0000000000000008 req_waiting_head
0000000000000010 l O .bss 0000000000000004 global_requests_waiting
0000000000000014 l O .bss 0000000000000004 global_requests_inflight
00000000000002b0 l F .text 0000000000000085 server_request_free_answers
0000000000000340 l F .text 0000000000000034 dnslabel_clear
0000000000000380 l F .text 0000000000000080 server_port_free
0000000000000390 l O .rodata 0000000000000011 __PRETTY_FUNCTION__.6581
0000000000000400 l F .text 0000000000000107 server_request_free
0000000000000550 l F .text 0000000000000082 nameserver_pick
0000000000000270 l O .rodata 0000000000000010 __PRETTY_FUNCTION__.5789
00000000000005e0 l F .text 00000000000000bd reply_callback
0000000000000228 l O .rodata 000000000000000f __PRETTY_FUNCTION__.5272
00000000000006a0 l F .text 00000000000000bd _evdns_log
0000000000000040 l O .bss 0000000000000200 buf.5140
0000000000000010 l O .data 0000000000000004 clkid.5756
00000000000007e0 l F .text 0000000000000012 request_trans_id_set
0000000000000800 l F .text 0000000000000044 debug_ntoa
0000000000000240 l O .bss 0000000000000020 buf.5100
0000000000000850 l F .text 0000000000000056 nameserver_up
0000000000000000 l d .rodata.str1.8 0000000000000000 .rodata.str1.8
00000000000008b0 l F .text 000000000000012b nameserver_failed
0000000000000280 l O .rodata 0000000000000050 global_nameserver_timeouts
00000000000002d0 l O .rodata 0000000000000012 __PRETTY_FUNCTION__.5178
00000000000009e0 l F .text 00000000000000b0 nameserver_probe_callback
0000000000000a90 l F .text 00000000000000a3 nameserver_write_waiting
0000000000002b20 l F .text 0000000000000720 nameserver_ready_callback
0000000000000b40 l F .text 0000000000000123 evdns_request_transmit
0000000000000020 l O .data 0000000000000010 global_timeout
0000000000000c70 l F .text 0000000000000038 request_submit
0000000000000cb0 l F .text 0000000000000052 evdns_transmit
0000000000000d10 l F .text 00000000000000d0 evdns_requests_pump_waiting_queue
0000000000000000 l O .data 0000000000000004 global_max_requests_inflight
0000000000000240 l O .rodata 0000000000000022 __PRETTY_FUNCTION__.5246
0000000000000df0 l F .text 00000000000000ac request_finished
0000000000000028 l O .bss 0000000000000008 global_search_state
0000000000001000 l F .text 0000000000000087 evdns_request_timeout_callback
0000000000000030 l O .data 0000000000000004 global_max_nameserver_timeout
0000000000000034 l O .data 0000000000000004 global_max_retransmits
0000000000001090 l F .text 00000000000000d4 server_port_flush
00000000000021e0 l F .text 000000000000044c server_port_ready_callback
00000000000011b0 l F .text 0000000000000176 name_parse
0000000000001330 l F .text 000000000000001f string_num_dots
0000000000001350 l F .text 00000000000000dd search_make_new
0000000000001430 l F .text 0000000000000044 search_state_new
00000000000014b0 l F .text 00000000000000ab search_postfix_add
0000000000001570 l F .text 0000000000000021 search_postfix_clear
00000000000003f0 l O .rodata 0000000000000016 __PRETTY_FUNCTION__.6139
00000000000003c0 l O .rodata 0000000000000023 __PRETTY_FUNCTION__.6229
0000000000001a30 l F .text 000000000000005b dnslabel_table_add
0000000000001a90 l F .text 00000000000001bd dnsname_to_labels
0000000000002630 l F .text 0000000000000264 request_new
00000000000028a0 l F .text 000000000000027b reply_handle
00000000000002f0 l O .rodata 0000000000000014 error_codes.5293
0000000000003240 l F .text 0000000000000157 search_request_new
0000000000000370 l O .rodata 0000000000000013 __PRETTY_FUNCTION__.7067
0000000000000330 l O .rodata 000000000000001b __PRETTY_FUNCTION__.6929
0000000000000350 l O .rodata 0000000000000016 __PRETTY_FUNCTION__.6891
00000000000036f0 l F .text 000000000000006f nameserver_prod_callback
0000000000003760 l F .text 0000000000000041 search_set_from_hostname
00000000000037b0 l F .text 000000000000002d strtoint
00000000000037e0 l F .text 0000000000000038 strtoint_clipped
0000000000003a00 l F .text 00000000000001ce _evdns_nameserver_add_impl
0000000000003c80 l F .text 0000000000000027 evdns_resolv_set_defaults
0000000000003cc0 l F .text 00000000000003c0 resolv_conf_parse_line
0000000000000328 l O .rodata 0000000000000008 delims.7219
0000000000000310 l O .rodata 0000000000000018 __PRETTY_FUNCTION__.7464
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000365 l .rodata.str1.1 0000000000000000 .LC65
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 0000000000000008 evdns_set_log_fn
0000000000000010 g F .text 0000000000000014 evdns_set_transaction_id_fn
0000000000000080 g F .text 0000000000000022 evdns_count_nameservers
00000000000000e0 g F .text 0000000000000052 evdns_err_to_string
0000000000000000 *UND* 0000000000000000 free
0000000000000190 g F .text 0000000000000118 evdns_clear_nameservers_and_suspend
0000000000000000 *UND* 0000000000000000 close
0000000000000000 *UND* 0000000000000000 event_del
0000000000000000 *UND* 0000000000000000 __assert_fail
0000000000000510 g F .text 0000000000000017 evdns_server_request_drop
0000000000000530 g F .text 000000000000001c evdns_close_server_port
0000000000000000 *UND* 0000000000000000 evutil_vsnprintf
0000000000000000 *UND* 0000000000000000 clock_gettime
0000000000000000 *UND* 0000000000000000 event_err
0000000000000000 *UND* 0000000000000000 evutil_snprintf
0000000000000000 *UND* 0000000000000000 event_add
0000000000000000 *UND* 0000000000000000 event_set
0000000000000000 *UND* 0000000000000000 sendto
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 *UND* 0000000000000000 strerror
0000000000000000 *UND* 0000000000000000 abort
0000000000000de0 g F .text 0000000000000010 evdns_resume
0000000000000ea0 g F .text 000000000000015a evdns_shutdown
0000000000001170 g F .text 0000000000000031 evdns_server_request_get_requesting_addr
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000000 *UND* 0000000000000000 strchr
0000000000000000 *UND* 0000000000000000 strlen
0000000000000000 *UND* 0000000000000000 malloc
0000000000001480 g F .text 0000000000000027 evdns_search_ndots_set
0000000000001560 g F .text 0000000000000005 evdns_search_add
00000000000015a0 g F .text 0000000000000002 evdns_search_clear
00000000000015b0 g F .text 00000000000000d4 evdns_add_server_port
0000000000000000 *UND* 0000000000000000 memset
0000000000001690 g F .text 00000000000001d1 evdns_server_request_add_reply
0000000000000000 *UND* 0000000000000000 __strdup
0000000000001870 g F .text 0000000000000035 evdns_server_request_add_cname_reply
00000000000018b0 g F .text 00000000000000f6 evdns_server_request_add_ptr_reply
00000000000019b0 g F .text 0000000000000034 evdns_server_request_add_aaaa_reply
00000000000019f0 g F .text 0000000000000034 evdns_server_request_add_a_reply
0000000000000000 *UND* 0000000000000000 strcmp
0000000000001c50 g F .text 0000000000000585 evdns_server_request_respond
0000000000000000 *UND* 0000000000000000 recvfrom
00000000000033a0 g F .text 0000000000000109 evdns_resolve_reverse_ipv6
00000000000034b0 g F .text 00000000000000d2 evdns_resolve_reverse
0000000000003590 g F .text 00000000000000ad evdns_resolve_ipv6
0000000000003640 g F .text 00000000000000ad evdns_resolve_ipv4
0000000000000000 *UND* 0000000000000000 gethostname
0000000000000000 *UND* 0000000000000000 __strtol_internal
0000000000003820 g F .text 00000000000001da evdns_set_option
0000000000000000 *UND* 0000000000000000 socket
0000000000000000 *UND* 0000000000000000 evutil_make_socket_nonblocking
0000000000003bd0 g F .text 00000000000000a4 evdns_nameserver_ip_add
0000000000000000 *UND* 0000000000000000 inet_aton
0000000000003cb0 g F .text 000000000000000a evdns_nameserver_add
0000000000000000 *UND* 0000000000000000 __strtok_r
0000000000004080 g F .text 00000000000001ec evdns_resolv_conf_parse
0000000000000000 *UND* 0000000000000000 open
0000000000000000 *UND* 0000000000000000 __fxstat
0000000000000000 *UND* 0000000000000000 read
0000000000004270 g F .text 000000000000000f evdns_init
evrpc.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 evrpc.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 000000000000003a evrpc_process_hooks
0000000000000070 l F .text 0000000000000019 evrpc_request_wrapper_free
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l d .rodata.str1.8 0000000000000000 .rodata.str1.8
00000000000000b0 l O .rodata 0000000000000012 __PRETTY_FUNCTION__.5154
0000000000000180 l F .text 000000000000008b evrpc_construct_uri
0000000000000020 l O .rodata 0000000000000014 __func__.5182
0000000000000210 l F .text 0000000000000135 evrpc_schedule_request
0000000000000450 l F .text 00000000000000d2 evrpc_reply_done
0000000000000350 l F .text 0000000000000059 evrpc_pool_schedule
0000000000000530 l F .text 0000000000000031 evrpc_request_timeout
0000000000000000 l O .rodata 0000000000000013 __PRETTY_FUNCTION__.5398
0000000000000040 l O .rodata 0000000000000016 __PRETTY_FUNCTION__.5439
0000000000000060 l O .rodata 000000000000001a __PRETTY_FUNCTION__.5331
0000000000000080 l O .rodata 0000000000000010 __PRETTY_FUNCTION__.5314
00000000000000c2 l O .rodata 000000000000000f __PRETTY_FUNCTION__.5127
0000000000000960 l F .text 00000000000000eb evrpc_request_cb
0000000000000090 l O .rodata 0000000000000015 __PRETTY_FUNCTION__.5228
00000000000000d1 l O .rodata 000000000000000b __PRETTY_FUNCTION__.5097
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000040 g F .text 0000000000000022 evrpc_pool_set_timeout
0000000000000000 *UND* 0000000000000000 free
0000000000000090 g F .text 000000000000005f evrpc_reqstate_free
00000000000000f0 g F .text 0000000000000085 evrpc_remove_hook
0000000000000000 *UND* 0000000000000000 __assert_fail
0000000000000000 *UND* 0000000000000000 strlen
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000000 *UND* 0000000000000000 event_err
0000000000000000 *UND* 0000000000000000 evhttp_request_new
0000000000000000 *UND* 0000000000000000 event_add
0000000000000000 *UND* 0000000000000000 evhttp_make_request
00000000000003b0 g F .text 000000000000009d evrpc_make_request
0000000000000000 *UND* 0000000000000000 event_set
0000000000000000 *UND* 0000000000000000 event_base_set
0000000000000000 *UND* 0000000000000000 event_del
0000000000000000 *UND* 0000000000000000 evhttp_connection_fail
0000000000000570 g F .text 00000000000000c6 evrpc_pool_add_connection
0000000000000000 *UND* 0000000000000000 evhttp_connection_set_base
0000000000000640 g F .text 00000000000000e6 evrpc_pool_free
0000000000000000 *UND* 0000000000000000 evhttp_connection_free
0000000000000730 g F .text 0000000000000068 evrpc_pool_new
0000000000000000 *UND* 0000000000000000 calloc
00000000000007a0 g F .text 00000000000000ab evrpc_add_hook
0000000000000850 g F .text 000000000000010a evrpc_request_done
0000000000000000 *UND* 0000000000000000 evbuffer_new
0000000000000000 *UND* 0000000000000000 evhttp_find_header
0000000000000000 *UND* 0000000000000000 evhttp_send_reply
0000000000000000 *UND* 0000000000000000 evbuffer_free
0000000000000000 *UND* 0000000000000000 evhttp_send_error
0000000000000000 *UND* 0000000000000000 evhttp_add_header
0000000000000a50 g F .text 00000000000000b1 evrpc_unregister_rpc
0000000000000000 *UND* 0000000000000000 strcmp
0000000000000000 *UND* 0000000000000000 evhttp_del_cb
0000000000000b10 g F .text 00000000000000af evrpc_free
0000000000000bc0 g F .text 000000000000009a evrpc_register_rpc
0000000000000000 *UND* 0000000000000000 evhttp_set_cb
0000000000000c60 g F .text 0000000000000070 evrpc_init
0000000000000000 *UND* 0000000000000000 evtag_init
strlcpy.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 strlcpy.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 000000000000003a _event_strlcpy
select.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 select.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 0000000000000074 select_dealloc
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000080 l F .text 00000000000001c3 select_dispatch
0000000000000250 l F .text 000000000000008f select_del
00000000000002e0 l F .text 0000000000000180 select_resize
0000000000000460 l F .text 000000000000011d select_add
0000000000000580 l F .text 0000000000000062 select_init
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 *UND* 0000000000000000 evsignal_dealloc
0000000000000000 *UND* 0000000000000000 free
0000000000000000 *UND* 0000000000000000 memcpy
0000000000000000 *UND* 0000000000000000 select
0000000000000000 *UND* 0000000000000000 random
0000000000000000 *UND* 0000000000000000 event_active
0000000000000000 *UND* 0000000000000000 evsignal_process
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 *UND* 0000000000000000 event_warn
0000000000000000 *UND* 0000000000000000 evsignal_del
0000000000000000 *UND* 0000000000000000 realloc
0000000000000000 *UND* 0000000000000000 memset
0000000000000000 *UND* 0000000000000000 evsignal_add
0000000000000000 *UND* 0000000000000000 evutil_getenv
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 evsignal_init
0000000000000000 g O .rodata 0000000000000038 selectops
poll.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 poll.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 0000000000000058 poll_dealloc
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000060 l F .text 00000000000001ff poll_dispatch
0000000000000260 l F .text 00000000000000e7 poll_del
0000000000000350 l F .text 0000000000000218 poll_add
0000000000000570 l F .text 0000000000000055 poll_init
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 *UND* 0000000000000000 evsignal_dealloc
0000000000000000 *UND* 0000000000000000 free
0000000000000000 *UND* 0000000000000000 poll
0000000000000000 *UND* 0000000000000000 random
0000000000000000 *UND* 0000000000000000 evsignal_process
0000000000000000 *UND* 0000000000000000 event_active
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 *UND* 0000000000000000 event_warn
0000000000000000 *UND* 0000000000000000 evsignal_del
0000000000000000 *UND* 0000000000000000 realloc
0000000000000000 *UND* 0000000000000000 memset
0000000000000000 *UND* 0000000000000000 evsignal_add
0000000000000000 *UND* 0000000000000000 evutil_getenv
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 evsignal_init
0000000000000000 g O .rodata 0000000000000038 pollops
epoll.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 epoll.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l F .text 0000000000000058 epoll_dealloc
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000060 l F .text 00000000000001a7 epoll_dispatch
0000000000000210 l F .text 00000000000000d3 epoll_del
00000000000002f0 l F .text 000000000000016c epoll_add
0000000000000460 l F .text 000000000000011b epoll_init
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 *UND* 0000000000000000 evsignal_dealloc
0000000000000000 *UND* 0000000000000000 free
0000000000000000 *UND* 0000000000000000 close
0000000000000000 *UND* 0000000000000000 epoll_wait
0000000000000000 *UND* 0000000000000000 event_active
0000000000000000 *UND* 0000000000000000 realloc
0000000000000000 *UND* 0000000000000000 evsignal_process
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 *UND* 0000000000000000 event_warn
0000000000000000 *UND* 0000000000000000 epoll_ctl
0000000000000000 *UND* 0000000000000000 evsignal_del
0000000000000000 *UND* 0000000000000000 memset
0000000000000000 *UND* 0000000000000000 evsignal_add
0000000000000000 *UND* 0000000000000000 evutil_getenv
0000000000000000 *UND* 0000000000000000 epoll_create
0000000000000000 *UND* 0000000000000000 fcntl
0000000000000000 *UND* 0000000000000000 calloc
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 evsignal_init
0000000000000000 g O .rodata 0000000000000038 epollops
signal.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 signal.c
0000000000000000 l d .text 0000000000000000 .text
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 l d .bss 0000000000000000 .bss
0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
0000000000000000 l d .debug_info 0000000000000000 .debug_info
0000000000000000 l d .debug_line 0000000000000000 .debug_line
0000000000000000 l d .rodata.str1.1 0000000000000000 .rodata.str1.1
0000000000000000 l d .rodata.str1.8 0000000000000000 .rodata.str1.8
0000000000000000 l O .rodata 000000000000000d __PRETTY_FUNCTION__.5056
0000000000000250 l F .text 00000000000000a5 evsignal_handler
0000000000000030 l O .rodata 0000000000000011 __func__.5074
000000000000001a l O .rodata 000000000000000d __func__.5016
000000000000000d l O .rodata 000000000000000d __PRETTY_FUNCTION__.5017
00000000000006d0 l F .text 000000000000003a evsignal_cb
0000000000000041 l O .rodata 000000000000000e __func__.4954
0000000000000008 l O .bss 0000000000000001 signals.4946
000000000000004f l O .rodata 000000000000000c __func__.4948
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 l d .debug_frame 0000000000000000 .debug_frame
0000000000000000 l d .eh_frame 0000000000000000 .eh_frame
0000000000000000 l d .debug_loc 0000000000000000 .debug_loc
0000000000000000 l d .debug_pubnames 0000000000000000 .debug_pubnames
0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges
0000000000000000 l d .debug_str 0000000000000000 .debug_str
0000000000000000 l d .note.GNU-stack 0000000000000000 .note.GNU-stack
0000000000000000 l d .comment 0000000000000000 .comment
0000000000000000 g F .text 0000000000000096 evsignal_process
0000000000000000 *UND* 0000000000000000 event_active
0000000000000000 *UND* 0000000000000000 event_del
00000000000000a0 g F .text 0000000000000072 _evsignal_restore_handler
0000000000000000 *UND* 0000000000000000 sigaction
0000000000000000 *UND* 0000000000000000 free
0000000000000000 *UND* 0000000000000000 event_warn
0000000000000120 g F .text 000000000000009e evsignal_dealloc
0000000000000000 *UND* 0000000000000000 close
00000000000001c0 g F .text 000000000000008a evsignal_del
0000000000000000 *UND* 0000000000000000 __assert_fail
0000000000000000 *UND* 0000000000000000 __errno_location
0000000000000000 g O .bss 0000000000000008 evsignal_base
0000000000000000 *UND* 0000000000000000 send
0000000000000300 g F .text 0000000000000170 _evsignal_set_handler
0000000000000000 *UND* 0000000000000000 realloc
0000000000000000 *UND* 0000000000000000 memset
0000000000000000 *UND* 0000000000000000 malloc
0000000000000000 *UND* 0000000000000000 sigfillset
0000000000000470 g F .text 000000000000010a evsignal_add
0000000000000000 *UND* 0000000000000000 event_errx
0000000000000000 *UND* 0000000000000000 event_add
0000000000000580 g F .text 0000000000000143 evsignal_init
0000000000000000 *UND* 0000000000000000 evutil_socketpair
0000000000000000 *UND* 0000000000000000 fcntl
0000000000000000 *UND* 0000000000000000 evutil_make_socket_nonblocking
0000000000000000 *UND* 0000000000000000 event_set
0000000000000000 *UND* 0000000000000000 event_err
0000000000000000 *UND* 0000000000000000 recv
[root@Betty lib]#
作为对比提供 nm 的输出结果。
nm - list symbols from object files
==================
-s
--print-armap
When listing symbols from archive members, include the index: a mapping (stored in the archive by ar or ranlib) of which modules contain definitions for which names.
===================
[root@Betty lib]# nm -s libevent.a
Archive index:
event_base_loopbreak in event.o
event_loopbreak in event.o
current_base in event.o
event_set in event.o
event_base_set in event.o
event_priority_set in event.o
event_get_version in event.o
event_get_method in event.o
event_base_get_method in event.o
event_pending in event.o
event_base_priority_init in event.o
event_priority_init in event.o
event_base_new in event.o
event_init in event.o
event_del in event.o
event_base_free in event.o
event_reinit in event.o
event_active in event.o
event_base_loop in event.o
event_loop in event.o
event_dispatch in event.o
event_base_dispatch in event.o
event_add in event.o
event_base_once in event.o
event_once in event.o
event_loopexit in event.o
event_base_loopexit in event.o
evbuffer_drain in buffer.o
evbuffer_setcb in buffer.o
evbuffer_find in buffer.o
evbuffer_write in buffer.o
evbuffer_remove in buffer.o
evbuffer_expand in buffer.o
evbuffer_read in buffer.o
evbuffer_add in buffer.o
evbuffer_add_buffer in buffer.o
evbuffer_readline in buffer.o
evbuffer_add_vprintf in buffer.o
evbuffer_add_printf in buffer.o
evbuffer_free in buffer.o
evbuffer_new in buffer.o
bufferevent_setcb in evbuffer.o
bufferevent_base_set in evbuffer.o
bufferevent_settimeout in evbuffer.o
bufferevent_enable in evbuffer.o
bufferevent_disable in evbuffer.o
bufferevent_read in evbuffer.o
bufferevent_write in evbuffer.o
bufferevent_write_buffer in evbuffer.o
bufferevent_free in evbuffer.o
bufferevent_priority_set in evbuffer.o
bufferevent_setfd in evbuffer.o
bufferevent_read_pressure_cb in evbuffer.o
bufferevent_setwatermark in evbuffer.o
bufferevent_new in evbuffer.o
event_set_log_callback in log.o
_event_debugx in log.o
event_msgx in log.o
event_warnx in log.o
event_errx in log.o
event_warn in log.o
event_err in log.o
evutil_getenv in evutil.o
evutil_vsnprintf in evutil.o
evutil_snprintf in evutil.o
evutil_strtoll in evutil.o
evutil_make_socket_nonblocking in evutil.o
evutil_socketpair in evutil.o
evtag_decode_int in event_tagging.o
evtag_consume in event_tagging.o
evtag_payload_length in event_tagging.o
evtag_peek_length in event_tagging.o
evtag_peek in event_tagging.o
evtag_decode_tag in event_tagging.o
evtag_unmarshal_int in event_tagging.o
evtag_unmarshal in event_tagging.o
evtag_unmarshal_timeval in event_tagging.o
evtag_unmarshal_string in event_tagging.o
evtag_unmarshal_fixed in event_tagging.o
evtag_encode_tag in event_tagging.o
encode_int in event_tagging.o
evtag_marshal_int in event_tagging.o
evtag_marshal in event_tagging.o
evtag_marshal_timeval in event_tagging.o
evtag_marshal_string in event_tagging.o
evtag_init in event_tagging.o
evhttp_connection_set_timeout in http.o
evhttp_connection_set_retries in http.o
evhttp_connection_set_closecb in http.o
evhttp_connection_get_peer in http.o
evhttp_set_timeout in http.o
evhttp_set_gencb in http.o
evhttp_request_set_chunked_cb in http.o
evhttp_request_uri in http.o
evhttp_clear_headers in http.o
evhttp_response_code in http.o
evhttp_request_free in http.o
evhttp_del_cb in http.o
evhttp_set_cb in http.o
evhttp_request_new in http.o
evhttp_new in http.o
evhttp_connection_free in http.o
evhttp_free in http.o
evhttp_connection_new in http.o
evhttp_accept_socket in http.o
evhttp_start_read in http.o
evhttp_read in http.o
evhttp_bind_socket in http.o
evhttp_start in http.o
evhttp_decode_uri in http.o
evhttp_encode_uri in http.o
evhttp_connection_set_base in http.o
evhttp_get_request in http.o
evhttp_connection_set_local_port in http.o
evhttp_connection_set_local_address in http.o
evhttp_remove_header in http.o
evhttp_find_header in http.o
evhttp_write_buffer in http.o
evhttp_write in http.o
evhttp_send_reply_end in http.o
evhttp_send_reply_chunk in http.o
evhttp_parse_firstline in http.o
evhttp_add_header in http.o
evhttp_parse_headers in http.o
evhttp_connection_reset in http.o
evhttp_connection_connect in http.o
evhttp_connection_fail in http.o
evhttp_hostportfile in http.o
evhttp_make_header in http.o
evhttp_send_reply_start in http.o
evhttp_send_page in http.o
evhttp_send_error in http.o
evhttp_make_request in http.o
evhttp_htmlescape in http.o
evhttp_parse_query in http.o
evhttp_send_reply in http.o
evdns_set_log_fn in evdns.o
evdns_set_transaction_id_fn in evdns.o
evdns_count_nameservers in evdns.o
evdns_err_to_string in evdns.o
evdns_clear_nameservers_and_suspend in evdns.o
evdns_server_request_drop in evdns.o
evdns_close_server_port in evdns.o
evdns_resume in evdns.o
evdns_shutdown in evdns.o
evdns_server_request_get_requesting_addr in evdns.o
evdns_search_ndots_set in evdns.o
evdns_search_add in evdns.o
evdns_search_clear in evdns.o
evdns_add_server_port in evdns.o
evdns_server_request_add_reply in evdns.o
evdns_server_request_add_cname_reply in evdns.o
evdns_server_request_add_ptr_reply in evdns.o
evdns_server_request_add_aaaa_reply in evdns.o
evdns_server_request_add_a_reply in evdns.o
evdns_server_request_respond in evdns.o
evdns_resolve_reverse_ipv6 in evdns.o
evdns_resolve_reverse in evdns.o
evdns_resolve_ipv6 in evdns.o
evdns_resolve_ipv4 in evdns.o
evdns_set_option in evdns.o
evdns_nameserver_ip_add in evdns.o
evdns_nameserver_add in evdns.o
evdns_resolv_conf_parse in evdns.o
evdns_init in evdns.o
evrpc_pool_set_timeout in evrpc.o
evrpc_reqstate_free in evrpc.o
evrpc_remove_hook in evrpc.o
evrpc_make_request in evrpc.o
evrpc_pool_add_connection in evrpc.o
evrpc_pool_free in evrpc.o
evrpc_pool_new in evrpc.o
evrpc_add_hook in evrpc.o
evrpc_request_done in evrpc.o
evrpc_unregister_rpc in evrpc.o
evrpc_free in evrpc.o
evrpc_register_rpc in evrpc.o
evrpc_init in evrpc.o
_event_strlcpy in strlcpy.o
selectops in select.o
pollops in poll.o
epollops in epoll.o
evsignal_process in signal.o
_evsignal_restore_handler in signal.o
evsignal_dealloc in signal.o
evsignal_del in signal.o
evsignal_base in signal.o
_evsignal_set_handler in signal.o
evsignal_add in signal.o
evsignal_init in signal.o
event.o:
00000000000000c0 r __PRETTY_FUNCTION__.4915
0000000000000050 r __PRETTY_FUNCTION__.5026
0000000000000070 r __PRETTY_FUNCTION__.5067
0000000000000033 r __PRETTY_FUNCTION__.5266
0000000000000013 r __PRETTY_FUNCTION__.5306
000000000000003d r __PRETTY_FUNCTION__.5336
U __assert_fail
0000000000000100 r __func__.4892
00000000000000a9 r __func__.4961
0000000000000090 r __func__.4992
0000000000000020 r __func__.5403
0000000000000000 r __func__.5437
U calloc
U clock_gettime
0000000000000000 B current_base
U epollops
0000000000000f50 T event_active
0000000000001440 T event_add
0000000000001430 T event_base_dispatch
0000000000000a00 T event_base_free
0000000000000110 T event_base_get_method
0000000000000f80 T event_base_loop
0000000000000010 T event_base_loopbreak
00000000000017c0 T event_base_loopexit
0000000000000420 T event_base_new
0000000000001640 T event_base_once
00000000000002f0 T event_base_priority_init
00000000000000a0 T event_base_set
00000000000008f0 T event_del
0000000000001420 T event_dispatch
U event_err
U event_errx
0000000000000100 T event_get_method
00000000000000f0 T event_get_version
0000000000000570 T event_init
0000000000001410 T event_loop
0000000000000030 T event_loopbreak
00000000000017a0 T event_loopexit
0000000000000000 t event_loopexit_cb
U event_msgx
0000000000001780 T event_once
00000000000002d0 t event_once_cb
00000000000001d0 T event_pending
0000000000000410 T event_priority_init
00000000000000d0 T event_priority_set
0000000000000d30 t event_queue_insert
0000000000000590 t event_queue_remove
0000000000000c30 T event_reinit
0000000000000040 T event_set
00000000000000e0 r eventops
U evsignal_base
U evutil_getenv
U free
0000000000000140 t gettime
U gettimeofday
U malloc
U pollops
U realloc
U selectops
0000000000000008 b use_monotonic
buffer.o:
0000000000000020 r __PRETTY_FUNCTION__.4627
U __assert_fail
0000000000000000 r __func__.4672
U calloc
0000000000000390 T evbuffer_add
0000000000000430 T evbuffer_add_buffer
0000000000000740 T evbuffer_add_printf
0000000000000640 T evbuffer_add_vprintf
0000000000000190 t evbuffer_align
0000000000000000 T evbuffer_drain
00000000000001c0 T evbuffer_expand
0000000000000070 T evbuffer_find
00000000000007d0 T evbuffer_free
00000000000007f0 T evbuffer_new
0000000000000260 T evbuffer_read
0000000000000510 T evbuffer_readline
0000000000000140 T evbuffer_remove
0000000000000060 T evbuffer_setcb
00000000000000f0 T evbuffer_write
U evutil_vsnprintf
U fprintf
U free
U ioctl
U malloc
U memchr
U memcpy
U memmove
U read
U realloc
U stderr
U write
evbuffer.o:
U __errno_location
0000000000000080 t bufferevent_add
0000000000000020 T bufferevent_base_set
00000000000001e0 T bufferevent_disable
0000000000000160 T bufferevent_enable
0000000000000370 T bufferevent_free
0000000000000830 T bufferevent_new
00000000000003b0 T bufferevent_priority_set
0000000000000250 T bufferevent_read
00000000000005c0 T bufferevent_read_pressure_cb
0000000000000650 t bufferevent_readcb
0000000000000000 T bufferevent_setcb
0000000000000400 T bufferevent_setfd
00000000000000b0 T bufferevent_settimeout
0000000000000600 T bufferevent_setwatermark
00000000000002b0 T bufferevent_write
0000000000000320 T bufferevent_write_buffer
00000000000004c0 t bufferevent_writecb
U calloc
U evbuffer_add
U evbuffer_drain
U evbuffer_free
U evbuffer_new
U evbuffer_read
U evbuffer_setcb
U evbuffer_write
U event_add
U event_base_set
U event_del
U event_pending
U event_priority_set
U event_set
U free
U memcpy
log.o:
U __errno_location
0000000000000160 T _event_debugx
0000000000000010 t _warn_helper
0000000000000490 T event_err
0000000000000340 T event_errx
0000000000000200 T event_msgx
0000000000000000 T event_set_log_callback
00000000000003e0 T event_warn
00000000000002a0 T event_warnx
U evutil_snprintf
U evutil_vsnprintf
U exit
U fprintf
0000000000000000 b log_fn
U stderr
U strerror
evutil.o:
U __strtoll_internal
U event_warn
0000000000000000 T evutil_getenv
0000000000000130 T evutil_make_socket_nonblocking
0000000000000090 T evutil_snprintf
0000000000000160 T evutil_socketpair
0000000000000120 T evutil_strtoll
0000000000000060 T evutil_vsnprintf
U fcntl
U getegid
U getenv
U geteuid
U getgid
U getuid
U socketpair
U vsnprintf
event_tagging.o:
0000000000000017 r __func__.4171
0000000000000000 r __func__.4433
0000000000000000 b _buf
U calloc
0000000000000000 t decode_int_internal
00000000000000e0 t decode_tag_internal
00000000000006d0 T encode_int
U evbuffer_add
U evbuffer_add_buffer
U evbuffer_drain
U evbuffer_new
U evbuffer_remove
U event_err
0000000000000150 T evtag_consume
00000000000000c0 T evtag_decode_int
0000000000000300 T evtag_decode_tag
0000000000000660 T evtag_encode_tag
0000000000000940 T evtag_init
0000000000000820 T evtag_marshal
00000000000007a0 T evtag_marshal_int
00000000000008f0 T evtag_marshal_string
0000000000000870 T evtag_marshal_timeval
00000000000001a0 T evtag_payload_length
00000000000002f0 T evtag_peek
0000000000000240 T evtag_peek_length
00000000000003c0 T evtag_unmarshal
00000000000005d0 T evtag_unmarshal_fixed
0000000000000310 T evtag_unmarshal_int
0000000000000510 T evtag_unmarshal_string
0000000000000460 T evtag_unmarshal_timeval
U memcpy
U strlen
http.o:
00000000000001b1 r .LC35
00000000000001b4 r .LC36
00000000000001b6 r .LC37
00000000000001d6 r .LC42
000000000000033c r .LC72
000000000000033e r .LC73
0000000000000340 r .LC74
0000000000000530 r __PRETTY_FUNCTION__.6088
0000000000000390 r __PRETTY_FUNCTION__.6238
00000000000004c0 r __PRETTY_FUNCTION__.6271
0000000000000440 r __PRETTY_FUNCTION__.6283
0000000000000370 r __PRETTY_FUNCTION__.6289
00000000000003d0 r __PRETTY_FUNCTION__.7090
00000000000003b0 r __PRETTY_FUNCTION__.7118
0000000000000330 r __PRETTY_FUNCTION__.7146
0000000000000310 r __PRETTY_FUNCTION__.7175
0000000000000300 r __PRETTY_FUNCTION__.7207
U __assert_fail
U __ctype_b_loc
U __errno_location
0000000000000550 r __func__.5873
00000000000004e4 r __func__.6222
0000000000000480 r __func__.6275
0000000000000410 r __func__.6403
00000000000001c0 r __func__.6878
0000000000000510 r __func__.7000
00000000000004f0 r __func__.7050
00000000000003f0 r __func__.7071
0000000000000350 r __func__.7145
00000000000001e0 r __func__.7338
00000000000001a0 r __func__.7356
0000000000000172 r __func__.7512
0000000000000180 r __func__.7529
0000000000000160 r __func__.7552
0000000000000143 r __func__.7608
0000000000000130 r __func__.7651
0000000000000100 r __func__.7717
U __strdup
U __strsep_g
U __strtol_internal
U _event_strlcpy
U accept
00000000000012b0 t accept_socket
U bind
0000000000000d30 t bind_socket
0000000000000c10 t bind_socket_ai
U calloc
U close
U connect
U evbuffer_add
U evbuffer_add_buffer
U evbuffer_add_printf
U evbuffer_drain
U evbuffer_free
U evbuffer_new
U evbuffer_read
U evbuffer_readline
U evbuffer_write
U event_add
U event_base_set
U event_del
U event_err
U event_errx
U event_pending
U event_set
U event_warn
U event_warnx
0000000000000930 T evhttp_accept_socket
00000000000009f0 t evhttp_add_event
00000000000020d0 T evhttp_add_header
00000000000004f0 t evhttp_add_header_internal
0000000000000aa0 t evhttp_associate_new_request_with_connection
0000000000000db0 T evhttp_bind_socket
00000000000000e0 T evhttp_clear_headers
0000000000000040 t evhttp_connected
0000000000002740 T evhttp_connection_connect
00000000000033e0 t evhttp_connection_done
00000000000028c0 T evhttp_connection_fail
00000000000005e0 T evhttp_connection_free
0000000000000080 T evhttp_connection_get_peer
0000000000000800 T evhttp_connection_new
00000000000026b0 T evhttp_connection_reset
0000000000002890 t evhttp_connection_retry
0000000000001090 T evhttp_connection_set_base
0000000000000070 T evhttp_connection_set_closecb
00000000000013a0 T evhttp_connection_set_local_address
0000000000001360 T evhttp_connection_set_local_port
0000000000000060 T evhttp_connection_set_retries
0000000000000050 T evhttp_connection_set_timeout
00000000000005c0 t evhttp_connection_stop_detectclose
0000000000003290 t evhttp_connectioncb
0000000000000f80 T evhttp_decode_uri
0000000000000ea0 t evhttp_decode_uri_internal
0000000000000220 T evhttp_del_cb
00000000000028b0 t evhttp_detect_close_cb
0000000000000ff0 T evhttp_encode_uri
0000000000001510 T evhttp_find_header
0000000000000730 T evhttp_free
00000000000037d0 t evhttp_get_body
00000000000010f0 T evhttp_get_request
0000000000003c30 t evhttp_handle_request
0000000000002a90 T evhttp_hostportfile
0000000000003b40 T evhttp_htmlescape
0000000000001590 t evhttp_is_connection_close
0000000000001550 t evhttp_is_connection_keepalive
0000000000002bb0 T evhttp_make_header
0000000000003150 T evhttp_make_request
00000000000004e0 T evhttp_new
0000000000000470 t evhttp_new_object
00000000000018c0 T evhttp_parse_firstline
0000000000002370 T evhttp_parse_headers
0000000000003d70 T evhttp_parse_query
0000000000003a10 T evhttp_read
00000000000035e0 t evhttp_read_body
0000000000003920 t evhttp_read_header
0000000000003580 t evhttp_read_trailer
0000000000001490 T evhttp_remove_header
00000000000030c0 t evhttp_request_dispatch
00000000000001a0 T evhttp_request_free
0000000000000350 T evhttp_request_new
00000000000000c0 T evhttp_request_set_chunked_cb
00000000000000d0 T evhttp_request_uri
0000000000000150 T evhttp_response_code
0000000000001610 t evhttp_send_done
0000000000003030 T evhttp_send_error
0000000000002f40 T evhttp_send_page
0000000000004280 T evhttp_send_reply
0000000000001840 T evhttp_send_reply_chunk
00000000000017a0 T evhttp_send_reply_end
0000000000002ef0 T evhttp_send_reply_start
00000000000002a0 T evhttp_set_cb
00000000000000b0 T evhttp_set_gencb
00000000000000a0 T evhttp_set_timeout
0000000000000e40 T evhttp_start
0000000000000a30 T evhttp_start_read
0000000000002a00 T evhttp_write
0000000000001720 T evhttp_write_buffer
0000000000001430 t evhttp_write_connectioncb
U evutil_make_socket_nonblocking
U evutil_snprintf
U evutil_strtoll
U fcntl
0000000000000000 b file.6054
U free
U freeaddrinfo
U gai_strerror
U getaddrinfo
U getnameinfo
U getsockopt
U gmtime_r
0000000000000400 b host.6053
0000000000000000 t html_replace
U listen
0000000000000b40 t make_addrinfo
U malloc
U memcpy
U realloc
U setsockopt
U socket
U strcasecmp
U strchr
U strcmp
U strcpy
U strftime
U strlen
U strncasecmp
U strncmp
U strpbrk
U strspn
U time
0000000000000200 r uri_chars
evdns.o:
0000000000000365 r .LC65
00000000000002d0 r __PRETTY_FUNCTION__.5178
0000000000000240 r __PRETTY_FUNCTION__.5246
0000000000000228 r __PRETTY_FUNCTION__.5272
0000000000000270 r __PRETTY_FUNCTION__.5789
00000000000003f0 r __PRETTY_FUNCTION__.6139
00000000000003c0 r __PRETTY_FUNCTION__.6229
0000000000000390 r __PRETTY_FUNCTION__.6581
0000000000000350 r __PRETTY_FUNCTION__.6891
0000000000000330 r __PRETTY_FUNCTION__.6929
0000000000000370 r __PRETTY_FUNCTION__.7067
0000000000000310 r __PRETTY_FUNCTION__.7464
U __assert_fail
U __errno_location
U __fxstat
U __strdup
U __strtok_r
U __strtol_internal
00000000000006a0 t _evdns_log
0000000000003a00 t _evdns_nameserver_add_impl
U abort
0000000000000240 b buf.5100
0000000000000040 b buf.5140
0000000000000010 d clkid.5756
U clock_gettime
U close
0000000000000800 t debug_ntoa
0000000000000760 t default_transaction_id_fn
0000000000000328 r delims.7219
0000000000000340 t dnslabel_clear
0000000000001a30 t dnslabel_table_add
0000000000001a90 t dnsname_to_labels
00000000000002f0 r error_codes.5293
00000000000015b0 T evdns_add_server_port
0000000000000190 T evdns_clear_nameservers_and_suspend
0000000000000530 T evdns_close_server_port
0000000000000080 T evdns_count_nameservers
00000000000000e0 T evdns_err_to_string
0000000000004270 T evdns_init
0000000000000030 b evdns_log_fn
0000000000003cb0 T evdns_nameserver_add
0000000000003bd0 T evdns_nameserver_ip_add
00000000000000b0 t evdns_request_insert
0000000000001000 t evdns_request_timeout_callback
0000000000000b40 t evdns_request_transmit
0000000000000d10 t evdns_requests_pump_waiting_queue
0000000000004080 T evdns_resolv_conf_parse
0000000000003c80 t evdns_resolv_set_defaults
0000000000003640 T evdns_resolve_ipv4
0000000000003590 T evdns_resolve_ipv6
00000000000034b0 T evdns_resolve_reverse
00000000000033a0 T evdns_resolve_reverse_ipv6
0000000000000de0 T evdns_resume
0000000000001560 T evdns_search_add
00000000000015a0 T evdns_search_clear
0000000000001480 T evdns_search_ndots_set
00000000000019f0 T evdns_server_request_add_a_reply
00000000000019b0 T evdns_server_request_add_aaaa_reply
0000000000001870 T evdns_server_request_add_cname_reply
00000000000018b0 T evdns_server_request_add_ptr_reply
0000000000001690 T evdns_server_request_add_reply
0000000000000510 T evdns_server_request_drop
0000000000001170 T evdns_server_request_get_requesting_addr
0000000000001c50 T evdns_server_request_respond
0000000000000000 T evdns_set_log_fn
0000000000003820 T evdns_set_option
0000000000000010 T evdns_set_transaction_id_fn
0000000000000ea0 T evdns_shutdown
0000000000000cb0 t evdns_transmit
U event_add
U event_del
U event_err
U event_set
U evutil_make_socket_nonblocking
U evutil_snprintf
U evutil_vsnprintf
U free
U gethostname
0000000000000020 b global_good_nameservers
0000000000000030 d global_max_nameserver_timeout
0000000000000000 d global_max_requests_inflight
0000000000000034 d global_max_retransmits
0000000000000280 r global_nameserver_timeouts
0000000000000014 b global_requests_inflight
0000000000000010 b global_requests_waiting
0000000000000028 b global_search_state
0000000000000020 d global_timeout
U inet_aton
U malloc
U memcpy
U memset
00000000000011b0 t name_parse
00000000000008b0 t nameserver_failed
0000000000000550 t nameserver_pick
00000000000009e0 t nameserver_probe_callback
00000000000036f0 t nameserver_prod_callback
0000000000002b20 t nameserver_ready_callback
0000000000000850 t nameserver_up
0000000000000a90 t nameserver_write_waiting
U open
U read
U recvfrom
00000000000005e0 t reply_callback
00000000000028a0 t reply_handle
0000000000000000 b req_head
0000000000000008 b req_waiting_head
0000000000000df0 t request_finished
0000000000002630 t request_new
0000000000000c70 t request_submit
00000000000007e0 t request_trans_id_set
0000000000003cc0 t resolv_conf_parse_line
0000000000001350 t search_make_new
00000000000014b0 t search_postfix_add
0000000000001570 t search_postfix_clear
0000000000003240 t search_request_new
0000000000003760 t search_set_from_hostname
0000000000000140 t search_state_decref
0000000000001430 t search_state_new
U sendto
0000000000000018 b server_head
0000000000001090 t server_port_flush
0000000000000380 t server_port_free
00000000000021e0 t server_port_ready_callback
0000000000000400 t server_request_free
00000000000002b0 t server_request_free_answers
U socket
U strchr
U strcmp
U strerror
0000000000001330 t string_num_dots
U strlen
00000000000037b0 t strtoint
00000000000037e0 t strtoint_clipped
0000000000000008 d trans_id_function
0000000000000030 t transaction_id_pick
evrpc.o:
00000000000000d1 r __PRETTY_FUNCTION__.5097
00000000000000c2 r __PRETTY_FUNCTION__.5127
00000000000000b0 r __PRETTY_FUNCTION__.5154
0000000000000090 r __PRETTY_FUNCTION__.5228
0000000000000080 r __PRETTY_FUNCTION__.5314
0000000000000060 r __PRETTY_FUNCTION__.5331
0000000000000000 r __PRETTY_FUNCTION__.5398
0000000000000040 r __PRETTY_FUNCTION__.5439
U __assert_fail
0000000000000020 r __func__.5182
U calloc
U evbuffer_free
U evbuffer_new
U event_add
U event_base_set
U event_del
U event_err
U event_set
U evhttp_add_header
U evhttp_connection_fail
U evhttp_connection_free
U evhttp_connection_set_base
U evhttp_del_cb
U evhttp_find_header
U evhttp_make_request
U evhttp_request_new
U evhttp_send_error
U evhttp_send_reply
U evhttp_set_cb
00000000000007a0 T evrpc_add_hook
0000000000000180 t evrpc_construct_uri
0000000000000b10 T evrpc_free
0000000000000c60 T evrpc_init
00000000000003b0 T evrpc_make_request
0000000000000570 T evrpc_pool_add_connection
0000000000000640 T evrpc_pool_free
0000000000000730 T evrpc_pool_new
0000000000000350 t evrpc_pool_schedule
0000000000000040 T evrpc_pool_set_timeout
0000000000000000 t evrpc_process_hooks
0000000000000bc0 T evrpc_register_rpc
00000000000000f0 T evrpc_remove_hook
0000000000000450 t evrpc_reply_done
0000000000000090 T evrpc_reqstate_free
0000000000000960 t evrpc_request_cb
0000000000000850 T evrpc_request_done
0000000000000530 t evrpc_request_timeout
0000000000000070 t evrpc_request_wrapper_free
0000000000000210 t evrpc_schedule_request
0000000000000a50 T evrpc_unregister_rpc
U evtag_init
U free
U malloc
U memcpy
U strcmp
U strlen
strlcpy.o:
0000000000000000 T _event_strlcpy
select.o:
U __errno_location
U calloc
U event_active
U event_warn
U evsignal_add
U evsignal_dealloc
U evsignal_del
U evsignal_init
U evsignal_process
U evutil_getenv
U free
U memcpy
U memset
U random
U realloc
U select
0000000000000460 t select_add
0000000000000000 t select_dealloc
0000000000000250 t select_del
0000000000000080 t select_dispatch
0000000000000580 t select_init
00000000000002e0 t select_resize
0000000000000000 R selectops
poll.o:
U __errno_location
U calloc
U event_active
U event_warn
U evsignal_add
U evsignal_dealloc
U evsignal_del
U evsignal_init
U evsignal_process
U evutil_getenv
U free
U memset
U poll
0000000000000350 t poll_add
0000000000000000 t poll_dealloc
0000000000000260 t poll_del
0000000000000060 t poll_dispatch
0000000000000570 t poll_init
0000000000000000 R pollops
U random
U realloc
epoll.o:
U __errno_location
U calloc
U close
00000000000002f0 t epoll_add
U epoll_create
U epoll_ctl
0000000000000000 t epoll_dealloc
0000000000000210 t epoll_del
0000000000000060 t epoll_dispatch
0000000000000460 t epoll_init
U epoll_wait
0000000000000000 R epollops
U event_active
U event_warn
U evsignal_add
U evsignal_dealloc
U evsignal_del
U evsignal_init
U evsignal_process
U evutil_getenv
U fcntl
U free
U malloc
U memset
U realloc
signal.o:
000000000000000d r __PRETTY_FUNCTION__.5017
0000000000000000 r __PRETTY_FUNCTION__.5056
U __assert_fail
U __errno_location
000000000000004f r __func__.4948
0000000000000041 r __func__.4954
000000000000001a r __func__.5016
0000000000000030 r __func__.5074
00000000000000a0 T _evsignal_restore_handler
0000000000000300 T _evsignal_set_handler
U close
U event_active
U event_add
U event_del
U event_err
U event_errx
U event_set
U event_warn
0000000000000470 T evsignal_add
0000000000000000 B evsignal_base
00000000000006d0 t evsignal_cb
0000000000000120 T evsignal_dealloc
00000000000001c0 T evsignal_del
0000000000000250 t evsignal_handler
0000000000000580 T evsignal_init
0000000000000000 T evsignal_process
U evutil_make_socket_nonblocking
U evutil_socketpair
U fcntl
U free
U malloc
U memset
U realloc
U recv
U send
U sigaction
U sigfillset
0000000000000008 b signals.4946
[root@Betty lib]#
示例二:以自定义文件 objtest.c 进行演示。
示例程序如下 。
[root@Betty Cpp]# vi objtest.c
/*
g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c
*/
#include <unistd.h>
int main ( int argc, char * argv[] )
{
execl( "/bin/sh", "/bin/sh", "-i", 0 );
return 0;
}
执行编译。
[root@Betty Cpp]# g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
objtest.c: In function 'int main(int, char**)':
objtest.c:7: warning: missing sentinel in function call
[root@Betty Cpp]#
[root@Betty Cpp]# ll
total 16
-rwxr-xr-x 1 root root 8587 Jul 18 11:04 objtest
-rw-r--r-- 1 root root 190 Jul 18 10:55 objtest.c
[root@Betty Cpp]#
虽然能够编译出来东东,但是出现了若干警告信息。
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++是因为 -Wstrict-prototypes 是 C only 的,所以 g++ 应该改为 gcc 。
参考:man gcc
objtest.c:7: warning: missing sentinel in function call是因为在调用 execl( "/bin/sh", "/bin/sh", "-i", 0 ); 的时候,最后一个参数的格式不符合要求,应该改为 (char *)0 或者 (char *)NULL 。
参考:man execl
另外 -Wall 其实是隐含包含了 -Wunused 的,所以可以将 -Wunused 去掉。
完成修改后不会输出仍和警告信息。
[root@Betty Cpp]# gcc -g -Wstrict-prototypes -Wall -o objtest objtest.c
[root@Betty Cpp]#
使用 objdump 输出相关信息。
[root@Betty Cpp]#
[root@Betty Cpp]# objdump -j .text -Sl objtest
objtest: file format elf64-x86-64
Disassembly of section .text:
00000000004004a0 <_start>:
_start():
4004a0: 31 ed xor %ebp,%ebp
4004a2: 49 89 d1 mov %rdx,%r9
4004a5: 5e pop %rsi
4004a6: 48 89 e2 mov %rsp,%rdx
4004a9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
4004ad: 50 push %rax
4004ae: 54 push %rsp
4004af: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8
4004b6: 48 c7 c1 c0 05 40 00 mov $0x4005c0,%rcx
4004bd: 48 c7 c7 78 05 40 00 mov $0x400578,%rdi
4004c4: e8 af ff ff ff callq 400478 <__libc_start_main@plt>
4004c9: f4 hlt
4004ca: 90 nop
4004cb: 90 nop
00000000004004cc <call_gmon_start>:
call_gmon_start():
4004cc: 48 83 ec 08 sub $0x8,%rsp
4004d0: 48 8b 05 89 04 20 00 mov 2098313(%rip),%rax # 600960 <_DYNAMIC+0x1c0>
4004d7: 48 85 c0 test %rax,%rax
4004da: 74 02 je 4004de <call_gmon_start+0x12>
4004dc: ff d0 callq *%rax
4004de: 48 83 c4 08 add $0x8,%rsp
4004e2: c3 retq
4004e3: 90 nop
4004e4: 90 nop
4004e5: 90 nop
4004e6: 90 nop
4004e7: 90 nop
4004e8: 90 nop
4004e9: 90 nop
4004ea: 90 nop
4004eb: 90 nop
4004ec: 90 nop
4004ed: 90 nop
4004ee: 90 nop
4004ef: 90 nop
00000000004004f0 <__do_global_dtors_aux>:
__do_global_dtors_aux():
4004f0: 55 push %rbp
4004f1: 48 89 e5 mov %rsp,%rbp
4004f4: 53 push %rbx
4004f5: 48 83 ec 08 sub $0x8,%rsp
4004f9: 80 3d a8 04 20 00 00 cmpb $0x0,2098344(%rip) # 6009a8 <completed.6145>
400500: 75 44 jne 400546 <__do_global_dtors_aux+0x56>
400502: b8 90 07 60 00 mov $0x600790,%eax
400507: 48 2d 88 07 60 00 sub $0x600788,%rax
40050d: 48 c1 f8 03 sar $0x3,%rax
400511: 48 8d 58 ff lea 0xffffffffffffffff(%rax),%rbx
400515: 48 8b 05 84 04 20 00 mov 2098308(%rip),%rax # 6009a0 <dtor_idx.6147>
40051c: 48 39 c3 cmp %rax,%rbx
40051f: 76 1e jbe 40053f <__do_global_dtors_aux+0x4f>
400521: 48 83 c0 01 add $0x1,%rax
400525: 48 89 05 74 04 20 00 mov %rax,2098292(%rip) # 6009a0 <dtor_idx.6147>
40052c: ff 14 c5 88 07 60 00 callq *0x600788(,%rax,8)
400533: 48 8b 05 66 04 20 00 mov 2098278(%rip),%rax # 6009a0 <dtor_idx.6147>
40053a: 48 39 c3 cmp %rax,%rbx
40053d: 77 e2 ja 400521 <__do_global_dtors_aux+0x31>
40053f: c6 05 62 04 20 00 01 movb $0x1,2098274(%rip) # 6009a8 <completed.6145>
400546: 48 83 c4 08 add $0x8,%rsp
40054a: 5b pop %rbx
40054b: c9 leaveq
40054c: c3 retq
40054d: 0f 1f 00 nopl (%rax)
0000000000400550 <frame_dummy>:
frame_dummy():
400550: 55 push %rbp
400551: 48 83 3d 3f 02 20 00 cmpq $0x0,2097727(%rip) # 600798 <__JCR_END__>
400558: 00
400559: 48 89 e5 mov %rsp,%rbp
40055c: 74 16 je 400574 <frame_dummy+0x24>
40055e: b8 00 00 00 00 mov $0x0,%eax
400563: 48 85 c0 test %rax,%rax
400566: 74 0c je 400574 <frame_dummy+0x24>
400568: bf 98 07 60 00 mov $0x600798,%edi
40056d: 49 89 c3 mov %rax,%r11
400570: c9 leaveq
400571: 41 ff e3 jmpq *%r11
400574: c9 leaveq
400575: c3 retq
400576: 90 nop
400577: 90 nop
0000000000400578 <main>:
main():
/root/workstation/CODE_TEST/Cpp/objtest.c:5
/*
g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c
*/
#include <unistd.h>
int main ( int argc, char * argv[] )
400578: 55 push %rbp
400579: 48 89 e5 mov %rsp,%rbp
40057c: 48 83 ec 10 sub $0x10,%rsp
400580: 89 7d fc mov %edi,0xfffffffffffffffc(%rbp)
400583: 48 89 75 f0 mov %rsi,0xfffffffffffffff0(%rbp)
/root/workstation/CODE_TEST/Cpp/objtest.c:7
{
execl( "/bin/sh", "/bin/sh", "-i", 0 );
400587: b9 00 00 00 00 mov $0x0,%ecx
40058c: ba a8 06 40 00 mov $0x4006a8,%edx
400591: be ab 06 40 00 mov $0x4006ab,%esi
400596: bf ab 06 40 00 mov $0x4006ab,%edi
40059b: b8 00 00 00 00 mov $0x0,%eax
4005a0: e8 c3 fe ff ff callq 400468 <execl@plt>
/root/workstation/CODE_TEST/Cpp/objtest.c:8
return 0;
4005a5: b8 00 00 00 00 mov $0x0,%eax
/root/workstation/CODE_TEST/Cpp/objtest.c:9
}
4005aa: c9 leaveq
4005ab: c3 retq
4005ac: 90 nop
4005ad: 90 nop
4005ae: 90 nop
4005af: 90 nop
00000000004005b0 <__libc_csu_fini>:
__libc_csu_fini():
4005b0: f3 c3 repz retq
4005b2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000004005c0 <__libc_csu_init>:
__libc_csu_init():
4005c0: 4c 89 64 24 e0 mov %r12,0xffffffffffffffe0(%rsp)
4005c5: 4c 89 6c 24 e8 mov %r13,0xffffffffffffffe8(%rsp)
4005ca: 4c 8d 25 a3 01 20 00 lea 2097571(%rip),%r12 # 600774 <__fini_array_end>
4005d1: 4c 89 74 24 f0 mov %r14,0xfffffffffffffff0(%rsp)
4005d6: 4c 89 7c 24 f8 mov %r15,0xfffffffffffffff8(%rsp)
4005db: 49 89 f6 mov %rsi,%r14
4005de: 48 89 5c 24 d0 mov %rbx,0xffffffffffffffd0(%rsp)
4005e3: 48 89 6c 24 d8 mov %rbp,0xffffffffffffffd8(%rsp)
4005e8: 48 83 ec 38 sub $0x38,%rsp
4005ec: 41 89 ff mov %edi,%r15d
4005ef: 49 89 d5 mov %rdx,%r13
4005f2: e8 49 fe ff ff callq 400440 <_init>
4005f7: 48 8d 05 76 01 20 00 lea 2097526(%rip),%rax # 600774 <__fini_array_end>
4005fe: 49 29 c4 sub %rax,%r12
400601: 49 c1 fc 03 sar $0x3,%r12
400605: 4d 85 e4 test %r12,%r12
400608: 74 1e je 400628 <__libc_csu_init+0x68>
40060a: 31 ed xor %ebp,%ebp
40060c: 48 89 c3 mov %rax,%rbx
40060f: 90 nop
400610: 48 83 c5 01 add $0x1,%rbp
400614: 4c 89 ea mov %r13,%rdx
400617: 4c 89 f6 mov %r14,%rsi
40061a: 44 89 ff mov %r15d,%edi
40061d: ff 13 callq *(%rbx)
40061f: 48 83 c3 08 add $0x8,%rbx
400623: 49 39 ec cmp %rbp,%r12
400626: 75 e8 jne 400610 <__libc_csu_init+0x50>
400628: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx
40062d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp
400632: 4c 8b 64 24 18 mov 0x18(%rsp),%r12
400637: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13
40063c: 4c 8b 74 24 28 mov 0x28(%rsp),%r14
400641: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15
400646: 48 83 c4 38 add $0x38,%rsp
40064a: c3 retq
40064b: 90 nop
40064c: 90 nop
40064d: 90 nop
40064e: 90 nop
40064f: 90 nop
0000000000400650 <__do_global_ctors_aux>:
__do_global_ctors_aux():
400650: 55 push %rbp
400651: 48 89 e5 mov %rsp,%rbp
400654: 53 push %rbx
400655: bb 78 07 60 00 mov $0x600778,%ebx
40065a: 48 83 ec 08 sub $0x8,%rsp
40065e: 48 8b 05 13 01 20 00 mov 2097427(%rip),%rax # 600778 <__CTOR_LIST__>
400665: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
400669: 74 14 je 40067f <__do_global_ctors_aux+0x2f>
40066b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
400670: 48 83 eb 08 sub $0x8,%rbx
400674: ff d0 callq *%rax
400676: 48 8b 03 mov (%rbx),%rax
400679: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
40067d: 75 f1 jne 400670 <__do_global_ctors_aux+0x20>
40067f: 48 83 c4 08 add $0x8,%rsp
400683: 5b pop %rbx
400684: c9 leaveq
400685: c3 retq
400686: 90 nop
400687: 90 nop
[root@Betty Cpp]#
反汇编的时候,显示每一行的完整地址。
[root@Betty Cpp]#
[root@Betty Cpp]# objdump -j .text -Sl objtest --prefix-addresses
objtest: file format elf64-x86-64
Disassembly of section .text:
_start():
00000000004004a0 <_start> xor %ebp,%ebp
00000000004004a2 <_start+0x2> mov %rdx,%r9
00000000004004a5 <_start+0x5> pop %rsi
00000000004004a6 <_start+0x6> mov %rsp,%rdx
00000000004004a9 <_start+0x9> and $0xfffffffffffffff0,%rsp
00000000004004ad <_start+0xd> push %rax
00000000004004ae <_start+0xe> push %rsp
00000000004004af <_start+0xf> mov $0x4005b0,%r8
00000000004004b6 <_start+0x16> mov $0x4005c0,%rcx
00000000004004bd <_start+0x1d> mov $0x400578,%rdi
00000000004004c4 <_start+0x24> callq 0000000000400478 <__libc_start_main@plt>
00000000004004c9 <_start+0x29> hlt
00000000004004ca <_start+0x2a> nop
00000000004004cb <_start+0x2b> nop
call_gmon_start():
00000000004004cc <call_gmon_start> sub $0x8,%rsp
00000000004004d0 <call_gmon_start+0x4> mov 2098313(%rip),%rax # 0000000000600960 <_DYNAMIC+0x1c0>
00000000004004d7 <call_gmon_start+0xb> test %rax,%rax
00000000004004da <call_gmon_start+0xe> je 00000000004004de <call_gmon_start+0x12>
00000000004004dc <call_gmon_start+0x10> callq *%rax
00000000004004de <call_gmon_start+0x12> add $0x8,%rsp
00000000004004e2 <call_gmon_start+0x16> retq
00000000004004e3 <call_gmon_start+0x17> nop
00000000004004e4 <call_gmon_start+0x18> nop
00000000004004e5 <call_gmon_start+0x19> nop
00000000004004e6 <call_gmon_start+0x1a> nop
00000000004004e7 <call_gmon_start+0x1b> nop
00000000004004e8 <call_gmon_start+0x1c> nop
00000000004004e9 <call_gmon_start+0x1d> nop
00000000004004ea <call_gmon_start+0x1e> nop
00000000004004eb <call_gmon_start+0x1f> nop
00000000004004ec <call_gmon_start+0x20> nop
00000000004004ed <call_gmon_start+0x21> nop
00000000004004ee <call_gmon_start+0x22> nop
00000000004004ef <call_gmon_start+0x23> nop
__do_global_dtors_aux():
00000000004004f0 <__do_global_dtors_aux> push %rbp
00000000004004f1 <__do_global_dtors_aux+0x1> mov %rsp,%rbp
00000000004004f4 <__do_global_dtors_aux+0x4> push %rbx
00000000004004f5 <__do_global_dtors_aux+0x5> sub $0x8,%rsp
00000000004004f9 <__do_global_dtors_aux+0x9> cmpb $0x0,2098344(%rip) # 00000000006009a8 <completed.6145>
0000000000400500 <__do_global_dtors_aux+0x10> jne 0000000000400546 <__do_global_dtors_aux+0x56>
0000000000400502 <__do_global_dtors_aux+0x12> mov $0x600790,%eax
0000000000400507 <__do_global_dtors_aux+0x17> sub $0x600788,%rax
000000000040050d <__do_global_dtors_aux+0x1d> sar $0x3,%rax
0000000000400511 <__do_global_dtors_aux+0x21> lea 0xffffffffffffffff(%rax),%rbx
0000000000400515 <__do_global_dtors_aux+0x25> mov 2098308(%rip),%rax # 00000000006009a0 <dtor_idx.6147>
000000000040051c <__do_global_dtors_aux+0x2c> cmp %rax,%rbx
000000000040051f <__do_global_dtors_aux+0x2f> jbe 000000000040053f <__do_global_dtors_aux+0x4f>
0000000000400521 <__do_global_dtors_aux+0x31> add $0x1,%rax
0000000000400525 <__do_global_dtors_aux+0x35> mov %rax,2098292(%rip) # 00000000006009a0 <dtor_idx.6147>
000000000040052c <__do_global_dtors_aux+0x3c> callq *0x600788(,%rax,8)
0000000000400533 <__do_global_dtors_aux+0x43> mov 2098278(%rip),%rax # 00000000006009a0 <dtor_idx.6147>
000000000040053a <__do_global_dtors_aux+0x4a> cmp %rax,%rbx
000000000040053d <__do_global_dtors_aux+0x4d> ja 0000000000400521 <__do_global_dtors_aux+0x31>
000000000040053f <__do_global_dtors_aux+0x4f> movb $0x1,2098274(%rip) # 00000000006009a8 <completed.6145>
0000000000400546 <__do_global_dtors_aux+0x56> add $0x8,%rsp
000000000040054a <__do_global_dtors_aux+0x5a> pop %rbx
000000000040054b <__do_global_dtors_aux+0x5b> leaveq
000000000040054c <__do_global_dtors_aux+0x5c> retq
000000000040054d <__do_global_dtors_aux+0x5d> nopl (%rax)
frame_dummy():
0000000000400550 <frame_dummy> push %rbp
0000000000400551 <frame_dummy+0x1> cmpq $0x0,2097727(%rip) # 0000000000600798 <__JCR_END__>
0000000000400559 <frame_dummy+0x9> mov %rsp,%rbp
000000000040055c <frame_dummy+0xc> je 0000000000400574 <frame_dummy+0x24>
000000000040055e <frame_dummy+0xe> mov $0x0,%eax
0000000000400563 <frame_dummy+0x13> test %rax,%rax
0000000000400566 <frame_dummy+0x16> je 0000000000400574 <frame_dummy+0x24>
0000000000400568 <frame_dummy+0x18> mov $0x600798,%edi
000000000040056d <frame_dummy+0x1d> mov %rax,%r11
0000000000400570 <frame_dummy+0x20> leaveq
0000000000400571 <frame_dummy+0x21> jmpq *%r11
0000000000400574 <frame_dummy+0x24> leaveq
0000000000400575 <frame_dummy+0x25> retq
0000000000400576 <frame_dummy+0x26> nop
0000000000400577 <frame_dummy+0x27> nop
main():
/root/workstation/CODE_TEST/Cpp/objtest.c:5
/*
g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c
*/
#include <unistd.h>
int main ( int argc, char * argv[] )
0000000000400578 <main> push %rbp
0000000000400579 <main+0x1> mov %rsp,%rbp
000000000040057c <main+0x4> sub $0x10,%rsp
0000000000400580 <main+0x8> mov %edi,0xfffffffffffffffc(%rbp)
0000000000400583 <main+0xb> mov %rsi,0xfffffffffffffff0(%rbp)
/root/workstation/CODE_TEST/Cpp/objtest.c:7
{
execl( "/bin/sh", "/bin/sh", "-i", 0 );
0000000000400587 <main+0xf> mov $0x0,%ecx
000000000040058c <main+0x14> mov $0x4006a8,%edx
0000000000400591 <main+0x19> mov $0x4006ab,%esi
0000000000400596 <main+0x1e> mov $0x4006ab,%edi
000000000040059b <main+0x23> mov $0x0,%eax
00000000004005a0 <main+0x28> callq 0000000000400468 <execl@plt>
/root/workstation/CODE_TEST/Cpp/objtest.c:8
return 0;
00000000004005a5 <main+0x2d> mov $0x0,%eax
/root/workstation/CODE_TEST/Cpp/objtest.c:9
}
00000000004005aa <main+0x32> leaveq
00000000004005ab <main+0x33> retq
00000000004005ac <main+0x34> nop
00000000004005ad <main+0x35> nop
00000000004005ae <main+0x36> nop
00000000004005af <main+0x37> nop
__libc_csu_fini():
00000000004005b0 <__libc_csu_fini> repz retq
00000000004005b2 <__libc_csu_fini+0x2> nopl 0x0(%rax)
00000000004005b9 <__libc_csu_fini+0x9> nopl 0x0(%rax)
__libc_csu_init():
00000000004005c0 <__libc_csu_init> mov %r12,0xffffffffffffffe0(%rsp)
00000000004005c5 <__libc_csu_init+0x5> mov %r13,0xffffffffffffffe8(%rsp)
00000000004005ca <__libc_csu_init+0xa> lea 2097571(%rip),%r12 # 0000000000600774 <__fini_array_end>
00000000004005d1 <__libc_csu_init+0x11> mov %r14,0xfffffffffffffff0(%rsp)
00000000004005d6 <__libc_csu_init+0x16> mov %r15,0xfffffffffffffff8(%rsp)
00000000004005db <__libc_csu_init+0x1b> mov %rsi,%r14
00000000004005de <__libc_csu_init+0x1e> mov %rbx,0xffffffffffffffd0(%rsp)
00000000004005e3 <__libc_csu_init+0x23> mov %rbp,0xffffffffffffffd8(%rsp)
00000000004005e8 <__libc_csu_init+0x28> sub $0x38,%rsp
00000000004005ec <__libc_csu_init+0x2c> mov %edi,%r15d
00000000004005ef <__libc_csu_init+0x2f> mov %rdx,%r13
00000000004005f2 <__libc_csu_init+0x32> callq 0000000000400440 <_init>
00000000004005f7 <__libc_csu_init+0x37> lea 2097526(%rip),%rax # 0000000000600774 <__fini_array_end>
00000000004005fe <__libc_csu_init+0x3e> sub %rax,%r12
0000000000400601 <__libc_csu_init+0x41> sar $0x3,%r12
0000000000400605 <__libc_csu_init+0x45> test %r12,%r12
0000000000400608 <__libc_csu_init+0x48> je 0000000000400628 <__libc_csu_init+0x68>
000000000040060a <__libc_csu_init+0x4a> xor %ebp,%ebp
000000000040060c <__libc_csu_init+0x4c> mov %rax,%rbx
000000000040060f <__libc_csu_init+0x4f> nop
0000000000400610 <__libc_csu_init+0x50> add $0x1,%rbp
0000000000400614 <__libc_csu_init+0x54> mov %r13,%rdx
0000000000400617 <__libc_csu_init+0x57> mov %r14,%rsi
000000000040061a <__libc_csu_init+0x5a> mov %r15d,%edi
000000000040061d <__libc_csu_init+0x5d> callq *(%rbx)
000000000040061f <__libc_csu_init+0x5f> add $0x8,%rbx
0000000000400623 <__libc_csu_init+0x63> cmp %rbp,%r12
0000000000400626 <__libc_csu_init+0x66> jne 0000000000400610 <__libc_csu_init+0x50>
0000000000400628 <__libc_csu_init+0x68> mov 0x8(%rsp),%rbx
000000000040062d <__libc_csu_init+0x6d> mov 0x10(%rsp),%rbp
0000000000400632 <__libc_csu_init+0x72> mov 0x18(%rsp),%r12
0000000000400637 <__libc_csu_init+0x77> mov 0x20(%rsp),%r13
000000000040063c <__libc_csu_init+0x7c> mov 0x28(%rsp),%r14
0000000000400641 <__libc_csu_init+0x81> mov 0x30(%rsp),%r15
0000000000400646 <__libc_csu_init+0x86> add $0x38,%rsp
000000000040064a <__libc_csu_init+0x8a> retq
000000000040064b <__libc_csu_init+0x8b> nop
000000000040064c <__libc_csu_init+0x8c> nop
000000000040064d <__libc_csu_init+0x8d> nop
000000000040064e <__libc_csu_init+0x8e> nop
000000000040064f <__libc_csu_init+0x8f> nop
__do_global_ctors_aux():
0000000000400650 <__do_global_ctors_aux> push %rbp
0000000000400651 <__do_global_ctors_aux+0x1> mov %rsp,%rbp
0000000000400654 <__do_global_ctors_aux+0x4> push %rbx
0000000000400655 <__do_global_ctors_aux+0x5> mov $0x600778,%ebx
000000000040065a <__do_global_ctors_aux+0xa> sub $0x8,%rsp
000000000040065e <__do_global_ctors_aux+0xe> mov 2097427(%rip),%rax # 0000000000600778 <__CTOR_LIST__>
0000000000400665 <__do_global_ctors_aux+0x15> cmp $0xffffffffffffffff,%rax
0000000000400669 <__do_global_ctors_aux+0x19> je 000000000040067f <__do_global_ctors_aux+0x2f>
000000000040066b <__do_global_ctors_aux+0x1b> nopl 0x0(%rax,%rax,1)
0000000000400670 <__do_global_ctors_aux+0x20> sub $0x8,%rbx
0000000000400674 <__do_global_ctors_aux+0x24> callq *%rax
0000000000400676 <__do_global_ctors_aux+0x26> mov (%rbx),%rax
0000000000400679 <__do_global_ctors_aux+0x29> cmp $0xffffffffffffffff,%rax
000000000040067d <__do_global_ctors_aux+0x2d> jne 0000000000400670 <__do_global_ctors_aux+0x20>
000000000040067f <__do_global_ctors_aux+0x2f> add $0x8,%rsp
0000000000400683 <__do_global_ctors_aux+0x33> pop %rbx
0000000000400684 <__do_global_ctors_aux+0x34> leaveq
0000000000400685 <__do_global_ctors_aux+0x35> retq
0000000000400686 <__do_global_ctors_aux+0x36> nop
0000000000400687 <__do_global_ctors_aux+0x37> nop
[root@Betty Cpp]#
反汇编输出 .text 中所有 section
的信息。
[root@Betty Cpp]# objdump -j .text -Dl objtest
objtest: file format elf64-x86-64
Disassembly of section .text:
00000000004004a0 <_start>:
_start():
4004a0: 31 ed xor %ebp,%ebp
4004a2: 49 89 d1 mov %rdx,%r9
4004a5: 5e pop %rsi
4004a6: 48 89 e2 mov %rsp,%rdx
4004a9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
4004ad: 50 push %rax
4004ae: 54 push %rsp
4004af: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8
4004b6: 48 c7 c1 c0 05 40 00 mov $0x4005c0,%rcx
4004bd: 48 c7 c7 78 05 40 00 mov $0x400578,%rdi
4004c4: e8 af ff ff ff callq 400478 <__libc_start_main@plt>
4004c9: f4 hlt
4004ca: 90 nop
4004cb: 90 nop
00000000004004cc <call_gmon_start>:
call_gmon_start():
4004cc: 48 83 ec 08 sub $0x8,%rsp
4004d0: 48 8b 05 89 04 20 00 mov 2098313(%rip),%rax # 600960 <_DYNAMIC+0x1c0>
4004d7: 48 85 c0 test %rax,%rax
4004da: 74 02 je 4004de <call_gmon_start+0x12>
4004dc: ff d0 callq *%rax
4004de: 48 83 c4 08 add $0x8,%rsp
4004e2: c3 retq
4004e3: 90 nop
4004e4: 90 nop
4004e5: 90 nop
4004e6: 90 nop
4004e7: 90 nop
4004e8: 90 nop
4004e9: 90 nop
4004ea: 90 nop
4004eb: 90 nop
4004ec: 90 nop
4004ed: 90 nop
4004ee: 90 nop
4004ef: 90 nop
00000000004004f0 <__do_global_dtors_aux>:
__do_global_dtors_aux():
4004f0: 55 push %rbp
4004f1: 48 89 e5 mov %rsp,%rbp
4004f4: 53 push %rbx
4004f5: 48 83 ec 08 sub $0x8,%rsp
4004f9: 80 3d a8 04 20 00 00 cmpb $0x0,2098344(%rip) # 6009a8 <completed.6145>
400500: 75 44 jne 400546 <__do_global_dtors_aux+0x56>
400502: b8 90 07 60 00 mov $0x600790,%eax
400507: 48 2d 88 07 60 00 sub $0x600788,%rax
40050d: 48 c1 f8 03 sar $0x3,%rax
400511: 48 8d 58 ff lea 0xffffffffffffffff(%rax),%rbx
400515: 48 8b 05 84 04 20 00 mov 2098308(%rip),%rax # 6009a0 <dtor_idx.6147>
40051c: 48 39 c3 cmp %rax,%rbx
40051f: 76 1e jbe 40053f <__do_global_dtors_aux+0x4f>
400521: 48 83 c0 01 add $0x1,%rax
400525: 48 89 05 74 04 20 00 mov %rax,2098292(%rip) # 6009a0 <dtor_idx.6147>
40052c: ff 14 c5 88 07 60 00 callq *0x600788(,%rax,8)
400533: 48 8b 05 66 04 20 00 mov 2098278(%rip),%rax # 6009a0 <dtor_idx.6147>
40053a: 48 39 c3 cmp %rax,%rbx
40053d: 77 e2 ja 400521 <__do_global_dtors_aux+0x31>
40053f: c6 05 62 04 20 00 01 movb $0x1,2098274(%rip) # 6009a8 <completed.6145>
400546: 48 83 c4 08 add $0x8,%rsp
40054a: 5b pop %rbx
40054b: c9 leaveq
40054c: c3 retq
40054d: 0f 1f 00 nopl (%rax)
0000000000400550 <frame_dummy>:
frame_dummy():
400550: 55 push %rbp
400551: 48 83 3d 3f 02 20 00 cmpq $0x0,2097727(%rip) # 600798 <__JCR_END__>
400558: 00
400559: 48 89 e5 mov %rsp,%rbp
40055c: 74 16 je 400574 <frame_dummy+0x24>
40055e: b8 00 00 00 00 mov $0x0,%eax
400563: 48 85 c0 test %rax,%rax
400566: 74 0c je 400574 <frame_dummy+0x24>
400568: bf 98 07 60 00 mov $0x600798,%edi
40056d: 49 89 c3 mov %rax,%r11
400570: c9 leaveq
400571: 41 ff e3 jmpq *%r11
400574: c9 leaveq
400575: c3 retq
400576: 90 nop
400577: 90 nop
0000000000400578 <main>:
main():
/root/workstation/CODE_TEST/Cpp/objtest.c:5
400578: 55 push %rbp
400579: 48 89 e5 mov %rsp,%rbp
40057c: 48 83 ec 10 sub $0x10,%rsp
400580: 89 7d fc mov %edi,0xfffffffffffffffc(%rbp)
400583: 48 89 75 f0 mov %rsi,0xfffffffffffffff0(%rbp)
/root/workstation/CODE_TEST/Cpp/objtest.c:7
400587: b9 00 00 00 00 mov $0x0,%ecx
40058c: ba a8 06 40 00 mov $0x4006a8,%edx
400591: be ab 06 40 00 mov $0x4006ab,%esi
400596: bf ab 06 40 00 mov $0x4006ab,%edi
40059b: b8 00 00 00 00 mov $0x0,%eax
4005a0: e8 c3 fe ff ff callq 400468 <execl@plt>
/root/workstation/CODE_TEST/Cpp/objtest.c:8
4005a5: b8 00 00 00 00 mov $0x0,%eax
/root/workstation/CODE_TEST/Cpp/objtest.c:9
4005aa: c9 leaveq
4005ab: c3 retq
4005ac: 90 nop
4005ad: 90 nop
4005ae: 90 nop
4005af: 90 nop
00000000004005b0 <__libc_csu_fini>:
__libc_csu_fini():
4005b0: f3 c3 repz retq
4005b2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000004005c0 <__libc_csu_init>:
__libc_csu_init():
4005c0: 4c 89 64 24 e0 mov %r12,0xffffffffffffffe0(%rsp)
4005c5: 4c 89 6c 24 e8 mov %r13,0xffffffffffffffe8(%rsp)
4005ca: 4c 8d 25 a3 01 20 00 lea 2097571(%rip),%r12 # 600774 <__fini_array_end>
4005d1: 4c 89 74 24 f0 mov %r14,0xfffffffffffffff0(%rsp)
4005d6: 4c 89 7c 24 f8 mov %r15,0xfffffffffffffff8(%rsp)
4005db: 49 89 f6 mov %rsi,%r14
4005de: 48 89 5c 24 d0 mov %rbx,0xffffffffffffffd0(%rsp)
4005e3: 48 89 6c 24 d8 mov %rbp,0xffffffffffffffd8(%rsp)
4005e8: 48 83 ec 38 sub $0x38,%rsp
4005ec: 41 89 ff mov %edi,%r15d
4005ef: 49 89 d5 mov %rdx,%r13
4005f2: e8 49 fe ff ff callq 400440 <_init>
4005f7: 48 8d 05 76 01 20 00 lea 2097526(%rip),%rax # 600774 <__fini_array_end>
4005fe: 49 29 c4 sub %rax,%r12
400601: 49 c1 fc 03 sar $0x3,%r12
400605: 4d 85 e4 test %r12,%r12
400608: 74 1e je 400628 <__libc_csu_init+0x68>
40060a: 31 ed xor %ebp,%ebp
40060c: 48 89 c3 mov %rax,%rbx
40060f: 90 nop
400610: 48 83 c5 01 add $0x1,%rbp
400614: 4c 89 ea mov %r13,%rdx
400617: 4c 89 f6 mov %r14,%rsi
40061a: 44 89 ff mov %r15d,%edi
40061d: ff 13 callq *(%rbx)
40061f: 48 83 c3 08 add $0x8,%rbx
400623: 49 39 ec cmp %rbp,%r12
400626: 75 e8 jne 400610 <__libc_csu_init+0x50>
400628: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx
40062d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp
400632: 4c 8b 64 24 18 mov 0x18(%rsp),%r12
400637: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13
40063c: 4c 8b 74 24 28 mov 0x28(%rsp),%r14
400641: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15
400646: 48 83 c4 38 add $0x38,%rsp
40064a: c3 retq
40064b: 90 nop
40064c: 90 nop
40064d: 90 nop
40064e: 90 nop
40064f: 90 nop
0000000000400650 <__do_global_ctors_aux>:
__do_global_ctors_aux():
400650: 55 push %rbp
400651: 48 89 e5 mov %rsp,%rbp
400654: 53 push %rbx
400655: bb 78 07 60 00 mov $0x600778,%ebx
40065a: 48 83 ec 08 sub $0x8,%rsp
40065e: 48 8b 05 13 01 20 00 mov 2097427(%rip),%rax # 600778 <__CTOR_LIST__>
400665: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
400669: 74 14 je 40067f <__do_global_ctors_aux+0x2f>
40066b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
400670: 48 83 eb 08 sub $0x8,%rbx
400674: ff d0 callq *%rax
400676: 48 8b 03 mov (%rbx),%rax
400679: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
40067d: 75 f1 jne 400670 <__do_global_ctors_aux+0x20>
40067f: 48 83 c4 08 add $0x8,%rsp
400683: 5b pop %rbx
400684: c9 leaveq
400685: c3 retq
400686: 90 nop
400687: 90 nop
[root@Betty Cpp]#
[root@Betty Cpp]#
指定数据 .text 代码段的反汇编信息。
[root@Betty Cpp]# objdump -j .text -S objtest
objtest: file format elf64-x86-64
Disassembly of section .text:
00000000004004a0 <_start>:
4004a0: 31 ed xor %ebp,%ebp
4004a2: 49 89 d1 mov %rdx,%r9
4004a5: 5e pop %rsi
4004a6: 48 89 e2 mov %rsp,%rdx
4004a9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
4004ad: 50 push %rax
4004ae: 54 push %rsp
4004af: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8
4004b6: 48 c7 c1 c0 05 40 00 mov $0x4005c0,%rcx
4004bd: 48 c7 c7 78 05 40 00 mov $0x400578,%rdi
4004c4: e8 af ff ff ff callq 400478 <__libc_start_main@plt>
4004c9: f4 hlt
4004ca: 90 nop
4004cb: 90 nop
00000000004004cc <call_gmon_start>:
4004cc: 48 83 ec 08 sub $0x8,%rsp
4004d0: 48 8b 05 89 04 20 00 mov 2098313(%rip),%rax # 600960 <_DYNAMIC+0x1c0>
4004d7: 48 85 c0 test %rax,%rax
4004da: 74 02 je 4004de <call_gmon_start+0x12>
4004dc: ff d0 callq *%rax
4004de: 48 83 c4 08 add $0x8,%rsp
4004e2: c3 retq
4004e3: 90 nop
4004e4: 90 nop
4004e5: 90 nop
4004e6: 90 nop
4004e7: 90 nop
4004e8: 90 nop
4004e9: 90 nop
4004ea: 90 nop
4004eb: 90 nop
4004ec: 90 nop
4004ed: 90 nop
4004ee: 90 nop
4004ef: 90 nop
00000000004004f0 <__do_global_dtors_aux>:
4004f0: 55 push %rbp
4004f1: 48 89 e5 mov %rsp,%rbp
4004f4: 53 push %rbx
4004f5: 48 83 ec 08 sub $0x8,%rsp
4004f9: 80 3d a8 04 20 00 00 cmpb $0x0,2098344(%rip) # 6009a8 <completed.6145>
400500: 75 44 jne 400546 <__do_global_dtors_aux+0x56>
400502: b8 90 07 60 00 mov $0x600790,%eax
400507: 48 2d 88 07 60 00 sub $0x600788,%rax
40050d: 48 c1 f8 03 sar $0x3,%rax
400511: 48 8d 58 ff lea 0xffffffffffffffff(%rax),%rbx
400515: 48 8b 05 84 04 20 00 mov 2098308(%rip),%rax # 6009a0 <dtor_idx.6147>
40051c: 48 39 c3 cmp %rax,%rbx
40051f: 76 1e jbe 40053f <__do_global_dtors_aux+0x4f>
400521: 48 83 c0 01 add $0x1,%rax
400525: 48 89 05 74 04 20 00 mov %rax,2098292(%rip) # 6009a0 <dtor_idx.6147>
40052c: ff 14 c5 88 07 60 00 callq *0x600788(,%rax,8)
400533: 48 8b 05 66 04 20 00 mov 2098278(%rip),%rax # 6009a0 <dtor_idx.6147>
40053a: 48 39 c3 cmp %rax,%rbx
40053d: 77 e2 ja 400521 <__do_global_dtors_aux+0x31>
40053f: c6 05 62 04 20 00 01 movb $0x1,2098274(%rip) # 6009a8 <completed.6145>
400546: 48 83 c4 08 add $0x8,%rsp
40054a: 5b pop %rbx
40054b: c9 leaveq
40054c: c3 retq
40054d: 0f 1f 00 nopl (%rax)
0000000000400550 <frame_dummy>:
400550: 55 push %rbp
400551: 48 83 3d 3f 02 20 00 cmpq $0x0,2097727(%rip) # 600798 <__JCR_END__>
400558: 00
400559: 48 89 e5 mov %rsp,%rbp
40055c: 74 16 je 400574 <frame_dummy+0x24>
40055e: b8 00 00 00 00 mov $0x0,%eax
400563: 48 85 c0 test %rax,%rax
400566: 74 0c je 400574 <frame_dummy+0x24>
400568: bf 98 07 60 00 mov $0x600798,%edi
40056d: 49 89 c3 mov %rax,%r11
400570: c9 leaveq
400571: 41 ff e3 jmpq *%r11
400574: c9 leaveq
400575: c3 retq
400576: 90 nop
400577: 90 nop
0000000000400578 <main>:
/*
g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c
*/
#include <unistd.h>
int main ( int argc, char * argv[] )
400578: 55 push %rbp
400579: 48 89 e5 mov %rsp,%rbp
40057c: 48 83 ec 10 sub $0x10,%rsp
400580: 89 7d fc mov %edi,0xfffffffffffffffc(%rbp)
400583: 48 89 75 f0 mov %rsi,0xfffffffffffffff0(%rbp)
{
execl( "/bin/sh", "/bin/sh", "-i", 0 );
400587: b9 00 00 00 00 mov $0x0,%ecx
40058c: ba a8 06 40 00 mov $0x4006a8,%edx
400591: be ab 06 40 00 mov $0x4006ab,%esi
400596: bf ab 06 40 00 mov $0x4006ab,%edi
40059b: b8 00 00 00 00 mov $0x0,%eax
4005a0: e8 c3 fe ff ff callq 400468 <execl@plt>
return 0;
4005a5: b8 00 00 00 00 mov $0x0,%eax
}
4005aa: c9 leaveq
4005ab: c3 retq
4005ac: 90 nop
4005ad: 90 nop
4005ae: 90 nop
4005af: 90 nop
00000000004005b0 <__libc_csu_fini>:
4005b0: f3 c3 repz retq
4005b2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000004005c0 <__libc_csu_init>:
4005c0: 4c 89 64 24 e0 mov %r12,0xffffffffffffffe0(%rsp)
4005c5: 4c 89 6c 24 e8 mov %r13,0xffffffffffffffe8(%rsp)
4005ca: 4c 8d 25 a3 01 20 00 lea 2097571(%rip),%r12 # 600774 <__fini_array_end>
4005d1: 4c 89 74 24 f0 mov %r14,0xfffffffffffffff0(%rsp)
4005d6: 4c 89 7c 24 f8 mov %r15,0xfffffffffffffff8(%rsp)
4005db: 49 89 f6 mov %rsi,%r14
4005de: 48 89 5c 24 d0 mov %rbx,0xffffffffffffffd0(%rsp)
4005e3: 48 89 6c 24 d8 mov %rbp,0xffffffffffffffd8(%rsp)
4005e8: 48 83 ec 38 sub $0x38,%rsp
4005ec: 41 89 ff mov %edi,%r15d
4005ef: 49 89 d5 mov %rdx,%r13
4005f2: e8 49 fe ff ff callq 400440 <_init>
4005f7: 48 8d 05 76 01 20 00 lea 2097526(%rip),%rax # 600774 <__fini_array_end>
4005fe: 49 29 c4 sub %rax,%r12
400601: 49 c1 fc 03 sar $0x3,%r12
400605: 4d 85 e4 test %r12,%r12
400608: 74 1e je 400628 <__libc_csu_init+0x68>
40060a: 31 ed xor %ebp,%ebp
40060c: 48 89 c3 mov %rax,%rbx
40060f: 90 nop
400610: 48 83 c5 01 add $0x1,%rbp
400614: 4c 89 ea mov %r13,%rdx
400617: 4c 89 f6 mov %r14,%rsi
40061a: 44 89 ff mov %r15d,%edi
40061d: ff 13 callq *(%rbx)
40061f: 48 83 c3 08 add $0x8,%rbx
400623: 49 39 ec cmp %rbp,%r12
400626: 75 e8 jne 400610 <__libc_csu_init+0x50>
400628: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx
40062d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp
400632: 4c 8b 64 24 18 mov 0x18(%rsp),%r12
400637: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13
40063c: 4c 8b 74 24 28 mov 0x28(%rsp),%r14
400641: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15
400646: 48 83 c4 38 add $0x38,%rsp
40064a: c3 retq
40064b: 90 nop
40064c: 90 nop
40064d: 90 nop
40064e: 90 nop
40064f: 90 nop
0000000000400650 <__do_global_ctors_aux>:
400650: 55 push %rbp
400651: 48 89 e5 mov %rsp,%rbp
400654: 53 push %rbx
400655: bb 78 07 60 00 mov $0x600778,%ebx
40065a: 48 83 ec 08 sub $0x8,%rsp
40065e: 48 8b 05 13 01 20 00 mov 2097427(%rip),%rax # 600778 <__CTOR_LIST__>
400665: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
400669: 74 14 je 40067f <__do_global_ctors_aux+0x2f>
40066b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
400670: 48 83 eb 08 sub $0x8,%rbx
400674: ff d0 callq *%rax
400676: 48 8b 03 mov (%rbx),%rax
400679: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
40067d: 75 f1 jne 400670 <__do_global_ctors_aux+0x20>
40067f: 48 83 c4 08 add $0x8,%rsp
400683: 5b pop %rbx
400684: c9 leaveq
400685: c3 retq
400686: 90 nop
400687: 90 nop
[root@Betty Cpp]#
未设置 -g 参数,并使用了 -O3 参数得到的 obj 文件反汇编后信息量非常少。
[root@Betty Cpp]#
[root@Betty Cpp]# g++ -O3 -o objtest objtest.c
[root@Betty Cpp]#
[root@Betty Cpp]# objdump -j .text -S objtest
objtest: file format elf64-x86-64
Disassembly of section .text:
00000000004004a0 <_start>:
4004a0: 31 ed xor %ebp,%ebp
4004a2: 49 89 d1 mov %rdx,%r9
4004a5: 5e pop %rsi
4004a6: 48 89 e2 mov %rsp,%rdx
4004a9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
4004ad: 50 push %rax
4004ae: 54 push %rsp
4004af: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8
4004b6: 48 c7 c1 c0 05 40 00 mov $0x4005c0,%rcx
4004bd: 48 c7 c7 80 05 40 00 mov $0x400580,%rdi
4004c4: e8 af ff ff ff callq 400478 <__libc_start_main@plt>
4004c9: f4 hlt
4004ca: 90 nop
4004cb: 90 nop
00000000004004cc <call_gmon_start>:
4004cc: 48 83 ec 08 sub $0x8,%rsp
4004d0: 48 8b 05 81 04 20 00 mov 2098305(%rip),%rax # 600958 <_DYNAMIC+0x1c0>
4004d7: 48 85 c0 test %rax,%rax
4004da: 74 02 je 4004de <call_gmon_start+0x12>
4004dc: ff d0 callq *%rax
4004de: 48 83 c4 08 add $0x8,%rsp
4004e2: c3 retq
4004e3: 90 nop
4004e4: 90 nop
4004e5: 90 nop
4004e6: 90 nop
4004e7: 90 nop
4004e8: 90 nop
4004e9: 90 nop
4004ea: 90 nop
4004eb: 90 nop
4004ec: 90 nop
4004ed: 90 nop
4004ee: 90 nop
4004ef: 90 nop
00000000004004f0 <__do_global_dtors_aux>:
4004f0: 55 push %rbp
4004f1: 48 89 e5 mov %rsp,%rbp
4004f4: 53 push %rbx
4004f5: 48 83 ec 08 sub $0x8,%rsp
4004f9: 80 3d a0 04 20 00 00 cmpb $0x0,2098336(%rip) # 6009a0 <completed.6145>
400500: 75 44 jne 400546 <__do_global_dtors_aux+0x56>
400502: b8 88 07 60 00 mov $0x600788,%eax
400507: 48 2d 80 07 60 00 sub $0x600780,%rax
40050d: 48 c1 f8 03 sar $0x3,%rax
400511: 48 8d 58 ff lea 0xffffffffffffffff(%rax),%rbx
400515: 48 8b 05 7c 04 20 00 mov 2098300(%rip),%rax # 600998 <dtor_idx.6147>
40051c: 48 39 c3 cmp %rax,%rbx
40051f: 76 1e jbe 40053f <__do_global_dtors_aux+0x4f>
400521: 48 83 c0 01 add $0x1,%rax
400525: 48 89 05 6c 04 20 00 mov %rax,2098284(%rip) # 600998 <dtor_idx.6147>
40052c: ff 14 c5 80 07 60 00 callq *0x600780(,%rax,8)
400533: 48 8b 05 5e 04 20 00 mov 2098270(%rip),%rax # 600998 <dtor_idx.6147>
40053a: 48 39 c3 cmp %rax,%rbx
40053d: 77 e2 ja 400521 <__do_global_dtors_aux+0x31>
40053f: c6 05 5a 04 20 00 01 movb $0x1,2098266(%rip) # 6009a0 <completed.6145>
400546: 48 83 c4 08 add $0x8,%rsp
40054a: 5b pop %rbx
40054b: c9 leaveq
40054c: c3 retq
40054d: 0f 1f 00 nopl (%rax)
0000000000400550 <frame_dummy>:
400550: 55 push %rbp
400551: 48 83 3d 37 02 20 00 cmpq $0x0,2097719(%rip) # 600790 <__JCR_END__>
400558: 00
400559: 48 89 e5 mov %rsp,%rbp
40055c: 74 16 je 400574 <frame_dummy+0x24>
40055e: b8 00 00 00 00 mov $0x0,%eax
400563: 48 85 c0 test %rax,%rax
400566: 74 0c je 400574 <frame_dummy+0x24>
400568: bf 90 07 60 00 mov $0x600790,%edi
40056d: 49 89 c3 mov %rax,%r11
400570: c9 leaveq
400571: 41 ff e3 jmpq *%r11
400574: c9 leaveq
400575: c3 retq
400576: 90 nop
400577: 90 nop
400578: 90 nop
400579: 90 nop
40057a: 90 nop
40057b: 90 nop
40057c: 90 nop
40057d: 90 nop
40057e: 90 nop
40057f: 90 nop
0000000000400580 <main>:
400580: be ab 06 40 00 mov $0x4006ab,%esi
400585: 48 83 ec 08 sub $0x8,%rsp
400589: 31 c9 xor %ecx,%ecx
40058b: ba a8 06 40 00 mov $0x4006a8,%edx
400590: 48 89 f7 mov %rsi,%rdi
400593: 31 c0 xor %eax,%eax
400595: e8 ce fe ff ff callq 400468 <execl@plt>
40059a: 31 c0 xor %eax,%eax
40059c: 48 83 c4 08 add $0x8,%rsp
4005a0: c3 retq
4005a1: 90 nop
4005a2: 90 nop
4005a3: 90 nop
4005a4: 90 nop
4005a5: 90 nop
4005a6: 90 nop
4005a7: 90 nop
4005a8: 90 nop
4005a9: 90 nop
4005aa: 90 nop
4005ab: 90 nop
4005ac: 90 nop
4005ad: 90 nop
4005ae: 90 nop
4005af: 90 nop
00000000004005b0 <__libc_csu_fini>:
4005b0: f3 c3 repz retq
4005b2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000004005c0 <__libc_csu_init>:
4005c0: 4c 89 64 24 e0 mov %r12,0xffffffffffffffe0(%rsp)
4005c5: 4c 89 6c 24 e8 mov %r13,0xffffffffffffffe8(%rsp)
4005ca: 4c 8d 25 9b 01 20 00 lea 2097563(%rip),%r12 # 60076c <__fini_array_end>
4005d1: 4c 89 74 24 f0 mov %r14,0xfffffffffffffff0(%rsp)
4005d6: 4c 89 7c 24 f8 mov %r15,0xfffffffffffffff8(%rsp)
4005db: 49 89 f6 mov %rsi,%r14
4005de: 48 89 5c 24 d0 mov %rbx,0xffffffffffffffd0(%rsp)
4005e3: 48 89 6c 24 d8 mov %rbp,0xffffffffffffffd8(%rsp)
4005e8: 48 83 ec 38 sub $0x38,%rsp
4005ec: 41 89 ff mov %edi,%r15d
4005ef: 49 89 d5 mov %rdx,%r13
4005f2: e8 49 fe ff ff callq 400440 <_init>
4005f7: 48 8d 05 6e 01 20 00 lea 2097518(%rip),%rax # 60076c <__fini_array_end>
4005fe: 49 29 c4 sub %rax,%r12
400601: 49 c1 fc 03 sar $0x3,%r12
400605: 4d 85 e4 test %r12,%r12
400608: 74 1e je 400628 <__libc_csu_init+0x68>
40060a: 31 ed xor %ebp,%ebp
40060c: 48 89 c3 mov %rax,%rbx
40060f: 90 nop
400610: 48 83 c5 01 add $0x1,%rbp
400614: 4c 89 ea mov %r13,%rdx
400617: 4c 89 f6 mov %r14,%rsi
40061a: 44 89 ff mov %r15d,%edi
40061d: ff 13 callq *(%rbx)
40061f: 48 83 c3 08 add $0x8,%rbx
400623: 49 39 ec cmp %rbp,%r12
400626: 75 e8 jne 400610 <__libc_csu_init+0x50>
400628: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx
40062d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp
400632: 4c 8b 64 24 18 mov 0x18(%rsp),%r12
400637: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13
40063c: 4c 8b 74 24 28 mov 0x28(%rsp),%r14
400641: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15
400646: 48 83 c4 38 add $0x38,%rsp
40064a: c3 retq
40064b: 90 nop
40064c: 90 nop
40064d: 90 nop
40064e: 90 nop
40064f: 90 nop
0000000000400650 <__do_global_ctors_aux>:
400650: 55 push %rbp
400651: 48 89 e5 mov %rsp,%rbp
400654: 53 push %rbx
400655: bb 70 07 60 00 mov $0x600770,%ebx
40065a: 48 83 ec 08 sub $0x8,%rsp
40065e: 48 8b 05 0b 01 20 00 mov 2097419(%rip),%rax # 600770 <__CTOR_LIST__>
400665: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
400669: 74 14 je 40067f <__do_global_ctors_aux+0x2f>
40066b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
400670: 48 83 eb 08 sub $0x8,%rbx
400674: ff d0 callq *%rax
400676: 48 8b 03 mov (%rbx),%rax
400679: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
40067d: 75 f1 jne 400670 <__do_global_ctors_aux+0x20>
40067f: 48 83 c4 08 add $0x8,%rsp
400683: 5b pop %rbx
400684: c9 leaveq
400685: c3 retq
400686: 90 nop
400687: 90 nop
[root@Betty Cpp]#
增加 -l 参数没有多出任何有用信息。
[root@Betty Cpp]# objdump -j .text -Sl objtest
objtest: file format elf64-x86-64
Disassembly of section .text:
00000000004004a0 <_start>:
_start():
4004a0: 31 ed xor %ebp,%ebp
4004a2: 49 89 d1 mov %rdx,%r9
4004a5: 5e pop %rsi
4004a6: 48 89 e2 mov %rsp,%rdx
4004a9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
4004ad: 50 push %rax
4004ae: 54 push %rsp
4004af: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8
4004b6: 48 c7 c1 c0 05 40 00 mov $0x4005c0,%rcx
4004bd: 48 c7 c7 80 05 40 00 mov $0x400580,%rdi
4004c4: e8 af ff ff ff callq 400478 <__libc_start_main@plt>
4004c9: f4 hlt
4004ca: 90 nop
4004cb: 90 nop
00000000004004cc <call_gmon_start>:
call_gmon_start():
4004cc: 48 83 ec 08 sub $0x8,%rsp
4004d0: 48 8b 05 81 04 20 00 mov 2098305(%rip),%rax # 600958 <_DYNAMIC+0x1c0>
4004d7: 48 85 c0 test %rax,%rax
4004da: 74 02 je 4004de <call_gmon_start+0x12>
4004dc: ff d0 callq *%rax
4004de: 48 83 c4 08 add $0x8,%rsp
4004e2: c3 retq
4004e3: 90 nop
4004e4: 90 nop
4004e5: 90 nop
4004e6: 90 nop
4004e7: 90 nop
4004e8: 90 nop
4004e9: 90 nop
4004ea: 90 nop
4004eb: 90 nop
4004ec: 90 nop
4004ed: 90 nop
4004ee: 90 nop
4004ef: 90 nop
00000000004004f0 <__do_global_dtors_aux>:
__do_global_dtors_aux():
4004f0: 55 push %rbp
4004f1: 48 89 e5 mov %rsp,%rbp
4004f4: 53 push %rbx
4004f5: 48 83 ec 08 sub $0x8,%rsp
4004f9: 80 3d a0 04 20 00 00 cmpb $0x0,2098336(%rip) # 6009a0 <completed.6145>
400500: 75 44 jne 400546 <__do_global_dtors_aux+0x56>
400502: b8 88 07 60 00 mov $0x600788,%eax
400507: 48 2d 80 07 60 00 sub $0x600780,%rax
40050d: 48 c1 f8 03 sar $0x3,%rax
400511: 48 8d 58 ff lea 0xffffffffffffffff(%rax),%rbx
400515: 48 8b 05 7c 04 20 00 mov 2098300(%rip),%rax # 600998 <dtor_idx.6147>
40051c: 48 39 c3 cmp %rax,%rbx
40051f: 76 1e jbe 40053f <__do_global_dtors_aux+0x4f>
400521: 48 83 c0 01 add $0x1,%rax
400525: 48 89 05 6c 04 20 00 mov %rax,2098284(%rip) # 600998 <dtor_idx.6147>
40052c: ff 14 c5 80 07 60 00 callq *0x600780(,%rax,8)
400533: 48 8b 05 5e 04 20 00 mov 2098270(%rip),%rax # 600998 <dtor_idx.6147>
40053a: 48 39 c3 cmp %rax,%rbx
40053d: 77 e2 ja 400521 <__do_global_dtors_aux+0x31>
40053f: c6 05 5a 04 20 00 01 movb $0x1,2098266(%rip) # 6009a0 <completed.6145>
400546: 48 83 c4 08 add $0x8,%rsp
40054a: 5b pop %rbx
40054b: c9 leaveq
40054c: c3 retq
40054d: 0f 1f 00 nopl (%rax)
0000000000400550 <frame_dummy>:
frame_dummy():
400550: 55 push %rbp
400551: 48 83 3d 37 02 20 00 cmpq $0x0,2097719(%rip) # 600790 <__JCR_END__>
400558: 00
400559: 48 89 e5 mov %rsp,%rbp
40055c: 74 16 je 400574 <frame_dummy+0x24>
40055e: b8 00 00 00 00 mov $0x0,%eax
400563: 48 85 c0 test %rax,%rax
400566: 74 0c je 400574 <frame_dummy+0x24>
400568: bf 90 07 60 00 mov $0x600790,%edi
40056d: 49 89 c3 mov %rax,%r11
400570: c9 leaveq
400571: 41 ff e3 jmpq *%r11
400574: c9 leaveq
400575: c3 retq
400576: 90 nop
400577: 90 nop
400578: 90 nop
400579: 90 nop
40057a: 90 nop
40057b: 90 nop
40057c: 90 nop
40057d: 90 nop
40057e: 90 nop
40057f: 90 nop
0000000000400580 <main>:
main():
400580: be ab 06 40 00 mov $0x4006ab,%esi
400585: 48 83 ec 08 sub $0x8,%rsp
400589: 31 c9 xor %ecx,%ecx
40058b: ba a8 06 40 00 mov $0x4006a8,%edx
400590: 48 89 f7 mov %rsi,%rdi
400593: 31 c0 xor %eax,%eax
400595: e8 ce fe ff ff callq 400468 <execl@plt>
40059a: 31 c0 xor %eax,%eax
40059c: 48 83 c4 08 add $0x8,%rsp
4005a0: c3 retq
4005a1: 90 nop
4005a2: 90 nop
4005a3: 90 nop
4005a4: 90 nop
4005a5: 90 nop
4005a6: 90 nop
4005a7: 90 nop
4005a8: 90 nop
4005a9: 90 nop
4005aa: 90 nop
4005ab: 90 nop
4005ac: 90 nop
4005ad: 90 nop
4005ae: 90 nop
4005af: 90 nop
00000000004005b0 <__libc_csu_fini>:
__libc_csu_fini():
4005b0: f3 c3 repz retq
4005b2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000004005c0 <__libc_csu_init>:
__libc_csu_init():
4005c0: 4c 89 64 24 e0 mov %r12,0xffffffffffffffe0(%rsp)
4005c5: 4c 89 6c 24 e8 mov %r13,0xffffffffffffffe8(%rsp)
4005ca: 4c 8d 25 9b 01 20 00 lea 2097563(%rip),%r12 # 60076c <__fini_array_end>
4005d1: 4c 89 74 24 f0 mov %r14,0xfffffffffffffff0(%rsp)
4005d6: 4c 89 7c 24 f8 mov %r15,0xfffffffffffffff8(%rsp)
4005db: 49 89 f6 mov %rsi,%r14
4005de: 48 89 5c 24 d0 mov %rbx,0xffffffffffffffd0(%rsp)
4005e3: 48 89 6c 24 d8 mov %rbp,0xffffffffffffffd8(%rsp)
4005e8: 48 83 ec 38 sub $0x38,%rsp
4005ec: 41 89 ff mov %edi,%r15d
4005ef: 49 89 d5 mov %rdx,%r13
4005f2: e8 49 fe ff ff callq 400440 <_init>
4005f7: 48 8d 05 6e 01 20 00 lea 2097518(%rip),%rax # 60076c <__fini_array_end>
4005fe: 49 29 c4 sub %rax,%r12
400601: 49 c1 fc 03 sar $0x3,%r12
400605: 4d 85 e4 test %r12,%r12
400608: 74 1e je 400628 <__libc_csu_init+0x68>
40060a: 31 ed xor %ebp,%ebp
40060c: 48 89 c3 mov %rax,%rbx
40060f: 90 nop
400610: 48 83 c5 01 add $0x1,%rbp
400614: 4c 89 ea mov %r13,%rdx
400617: 4c 89 f6 mov %r14,%rsi
40061a: 44 89 ff mov %r15d,%edi
40061d: ff 13 callq *(%rbx)
40061f: 48 83 c3 08 add $0x8,%rbx
400623: 49 39 ec cmp %rbp,%r12
400626: 75 e8 jne 400610 <__libc_csu_init+0x50>
400628: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx
40062d: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp
400632: 4c 8b 64 24 18 mov 0x18(%rsp),%r12
400637: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13
40063c: 4c 8b 74 24 28 mov 0x28(%rsp),%r14
400641: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15
400646: 48 83 c4 38 add $0x38,%rsp
40064a: c3 retq
40064b: 90 nop
40064c: 90 nop
40064d: 90 nop
40064e: 90 nop
40064f: 90 nop
0000000000400650 <__do_global_ctors_aux>:
__do_global_ctors_aux():
400650: 55 push %rbp
400651: 48 89 e5 mov %rsp,%rbp
400654: 53 push %rbx
400655: bb 70 07 60 00 mov $0x600770,%ebx
40065a: 48 83 ec 08 sub $0x8,%rsp
40065e: 48 8b 05 0b 01 20 00 mov 2097419(%rip),%rax # 600770 <__CTOR_LIST__>
400665: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
400669: 74 14 je 40067f <__do_global_ctors_aux+0x2f>
40066b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
400670: 48 83 eb 08 sub $0x8,%rbx
400674: ff d0 callq *%rax
400676: 48 8b 03 mov (%rbx),%rax
400679: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
40067d: 75 f1 jne 400670 <__do_global_ctors_aux+0x20>
40067f: 48 83 c4 08 add $0x8,%rsp
400683: 5b pop %rbx
400684: c9 leaveq
400685: c3 retq
400686: 90 nop
400687: 90 nop
[root@Betty Cpp]#
最后,附加几张反汇编内容的对比图片。
![](http://static.oschina.net/uploads/space/2013/0805/111115_DHxd_617889.png)
![](http://static.oschina.net/uploads/space/2013/0805/111134_ixF7_617889.png)
![](http://static.oschina.net/uploads/space/2013/0805/111149_Ykrx_617889.png)
![](http://static.oschina.net/uploads/space/2013/0805/111159_uGmr_617889.png)