Created
November 2, 2017 15:11
-
-
Save aep/27c1039ff4db33edb5199a8f2642bf50 to your computer and use it in GitHub Desktop.
graphviz graph of elfkit link tree with musl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
digraph link{ | |
node[shape=record] | |
Legend [pos="1,1", pin=true, shape=none, margin=0, label=< | |
<table border="2" cellborder="1" cellspacing="0" cellpadding="4"> | |
<tr> | |
<td colspan="2"><b>Legend</b></td> | |
</tr> | |
<tr> | |
<td bgcolor="red">Red</td> | |
<td>UNDEF</td> | |
</tr> | |
<tr> | |
<td bgcolor="green">Green</td> | |
<td>LOCAL</td> | |
</tr> | |
<tr> | |
<td >Regular line</td> | |
<td>GLOBAL</td> | |
</tr> | |
<tr> | |
<td>Dashed line</td> | |
<td>WEAK</td> | |
</tr> | |
<tr> | |
<td>Dotted line</td> | |
<td>COMMON</td> | |
</tr> | |
</table> | |
>]; | |
o392[label="<f0>1|<f1> 999-libmusl.a::memset.lo(.text)"]; | |
o100[label="<f0>8|<f1> 999-libmusl.a::__init_tls.lo(.text.static_init_tls)"]; | |
missing__DYNAMIC[label="UND _DYNAMIC", color="red", style="dashed", fontcolor="red"]; | |
o100 -> missing__DYNAMIC [label="_DYNAMIC", color="red", fontcolor="red" , style="dotted"] | |
o100 -> o102 [label="" , color="green"] | |
common___libc[label="COM __libc", style="dotted"]; | |
o100 -> common___libc [label="__libc", style="dotted"] | |
o100 -> o103 [label="" , color="green"] | |
o100 -> o98 [label="__copy_tls"] | |
o100 -> o96 [label="__init_tp"] | |
o46[label="<f0>4|<f1> 12-data.o(.rodata)"]; | |
o172[label="<f0>4|<f1> 999-libmusl.a::_Exit.lo(.text._Exit)"]; | |
o461[label="<f0>4|<f1> 999-libmusl.a::__wait.lo(.text.__wait)"]; | |
o1[label="<f0>1|<f1> 0-crt1.lo(.text)"]; | |
missing__DYNAMIC[label="UND _DYNAMIC", color="red", style="dashed", fontcolor="red"]; | |
o1 -> missing__DYNAMIC [label="_DYNAMIC", color="red", fontcolor="red" , style="dotted"] | |
o1 -> o5 [label="_start_c"] | |
o371[label="<f0>4|<f1> 999-libmusl.a::fwrite.lo(.text.__fwritex)"]; | |
o371 -> o439 [label="__towrite"] | |
o371 -> o238 [label="memcpy"] | |
o228[label="<f0>23|<f1> 999-libmusl.a::vfprintf.lo(.rodata.xdigits)"]; | |
o125[label="<f0>4|<f1> 999-libmusl.a::exit.lo(.text.dummy)"]; | |
o125 -> o473 [label="__stdio_exit"] | |
o490[label="<f0>9|<f1> 999-libmusl.a::ofl.lo(.bss.ofl_head)"]; | |
o86[label="<f0>4|<f1> 999-libmusl.a::__environ.lo(.bss.__environ)"]; | |
o246[label="<f0>1|<f1> 999-libmusl.a::__set_thread_area.lo(.text)"]; | |
o195[label="<f0>6|<f1> 999-libmusl.a::stdout.lo(.data.rel.ro.local.stdout)"]; | |
o195 -> o197 [label="" , color="green"] | |
o403[label="<f0>4|<f1> 999-libmusl.a::__lctrans.lo(.text.dummy)"]; | |
o211[label="<f0>6|<f1> 999-libmusl.a::vfprintf.lo(.rodata.pop_arg)"]; | |
o211 -> o209 [label="" , color="green"] | |
o314[label="<f0>4|<f1> 999-libmusl.a::wctomb.lo(.text.wctomb)"]; | |
o314 -> o417 [label="wcrtomb"] | |
o140[label="<f0>5|<f1> 999-libmusl.a::libc.lo(.bss.__progname)"]; | |
o473[label="<f0>6|<f1> 999-libmusl.a::__stdio_exit.lo(.text.__stdio_exit)"]; | |
o473 -> o485 [label="__ofl_lock"] | |
o473 -> o471 [label="" , color="green"] | |
o473 -> o475 [label="__stdin_used" , style="dashed"] | |
o473 -> o193 [label="__stdout_used"] | |
o47[label="<f0>5|<f1> 12-data.o(.data.rel.local)"]; | |
o47 -> o46 [label="" , color="green"] | |
o103[label="<f0>11|<f1> 999-libmusl.a::__init_tls.lo(.bss.builtin_tls)"]; | |
o115[label="<f0>6|<f1> 999-libmusl.a::__stack_chk_fail.lo(.text.__stack_chk_fail)"]; | |
o269[label="<f0>6|<f1> 999-libmusl.a::strerror.lo(.text.strerror)"]; | |
o269 -> o267 [label="__strerror_l"] | |
o404[label="<f0>5|<f1> 999-libmusl.a::__lctrans.lo(.text.__lctrans)"]; | |
o404 -> o403 [label="__lctrans_impl" , style="dashed"] | |
o475[label="<f0>8|<f1> 999-libmusl.a::__stdio_exit.lo(.bss.dummy_file)"]; | |
o282[label="<f0>4|<f1> 999-libmusl.a::__fpclassifyl.lo(.text.__fpclassifyl)"]; | |
o489[label="<f0>8|<f1> 999-libmusl.a::ofl.lo(.bss.ofl_lock)"]; | |
o5[label="<f0>5|<f1> 0-crt1.lo(.text._start_c)"]; | |
o5 -> o125 [label="_fini" , style="dashed"] | |
o5 -> o28 [label="_init" , style="dashed"] | |
o5 -> o13 [label="main"] | |
o5 -> o35 [label="__libc_start_main"] | |
o224[label="<f0>19|<f1> 999-libmusl.a::vfprintf.lo(.rodata.printf_core)"]; | |
o224 -> o222 [label="" , color="green"] | |
o217[label="<f0>12|<f1> 999-libmusl.a::vfprintf.lo(.text.pad)"]; | |
o217 -> o392 [label="memset"] | |
o217 -> o215 [label="" , color="green"] | |
o113[label="<f0>4|<f1> 999-libmusl.a::__stack_chk_fail.lo(.text.__init_ssp)"]; | |
common___stack_chk_guard[label="COM __stack_chk_guard", style="dotted"]; | |
o113 -> common___stack_chk_guard [label="__stack_chk_guard", style="dotted"] | |
o113 -> o238 [label="memcpy"] | |
o102[label="<f0>10|<f1> 999-libmusl.a::__init_tls.lo(.bss.main_tls)"]; | |
o271[label="<f0>8|<f1> 999-libmusl.a::strerror.lo(.rodata.errmsg)"]; | |
o139[label="<f0>4|<f1> 999-libmusl.a::libc.lo(.bss.__progname_full)"]; | |
o267[label="<f0>4|<f1> 999-libmusl.a::strerror.lo(.text.__strerror_l)"]; | |
o267 -> o272 [label="" , color="green"] | |
o267 -> o271 [label="" , color="green"] | |
o267 -> o404 [label="__lctrans"] | |
o62[label="<f0>1|<f1> 13-init.o(.text)"]; | |
o62 -> o47 [label="hello"] | |
o62 -> o66 [label="" , color="green"] | |
o150[label="<f0>4|<f1> 999-libmusl.a::uname.lo(.text.uname)"]; | |
o150 -> o182 [label="__syscall_ret"] | |
o292[label="<f0>4|<f1> 999-libmusl.a::__signbitl.lo(.text.__signbitl)"]; | |
o31[label="<f0>7|<f1> 999-libmusl.a::__libc_start_main.lo(.text.__init_libc)"]; | |
o31 -> o86 [label="__environ"] | |
common___libc[label="COM __libc", style="dotted"]; | |
o31 -> common___libc [label="__libc", style="dotted"] | |
common___hwcap[label="COM __hwcap", style="dotted"]; | |
o31 -> common___hwcap [label="__hwcap", style="dotted"] | |
common___sysinfo[label="COM __sysinfo", style="dotted"]; | |
o31 -> common___sysinfo [label="__sysinfo", style="dotted"] | |
o31 -> o30 [label=".LC0" , color="green"] | |
o31 -> o139 [label="__progname_full"] | |
o31 -> o140 [label="__progname"] | |
o31 -> o100 [label="__init_tls" , style="dashed"] | |
o31 -> o113 [label="__init_ssp"] | |
o31 -> o30 [label=".LC1" , color="green"] | |
o338[label="<f0>5|<f1> 999-libmusl.a::__stdio_close.lo(.text.__stdio_close)"]; | |
o338 -> o337 [label="__aio_close" , style="dashed"] | |
o338 -> o182 [label="__syscall_ret"] | |
o238[label="<f0>1|<f1> 999-libmusl.a::memcpy.lo(.text)"]; | |
o126[label="<f0>5|<f1> 999-libmusl.a::exit.lo(.text.libc_exit_fini)"]; | |
missing___fini_array_start[label="UND __fini_array_start", color="red", style="dashed", fontcolor="red"]; | |
o126 -> missing___fini_array_start [label="__fini_array_start", color="red", fontcolor="red" , style="dotted"] | |
missing___fini_array_end[label="UND __fini_array_end", color="red", style="dashed", fontcolor="red"]; | |
o126 -> missing___fini_array_end [label="__fini_array_end", color="red", fontcolor="red" , style="dotted"] | |
o126 -> o125 [label="_fini" , style="dashed"] | |
o417[label="<f0>4|<f1> 999-libmusl.a::wcrtomb.lo(.text.wcrtomb)"]; | |
o417 -> o257 [label="__errno_location"] | |
o220[label="<f0>15|<f1> 999-libmusl.a::vfprintf.lo(.text.fmt_fp)"]; | |
o220 -> o292 [label="__signbitl"] | |
o220 -> o219 [label=".LC1" , color="green"] | |
o220 -> o282 [label="__fpclassifyl"] | |
o220 -> o219 [label=".LC2" , color="green"] | |
o220 -> o219 [label=".LC3" , color="green"] | |
o220 -> o217 [label="" , color="green"] | |
o220 -> o215 [label="" , color="green"] | |
o220 -> o302 [label="frexpl"] | |
o220 -> o230 [label=".LC13" , color="green"] | |
o220 -> o230 [label=".LC6" , color="green"] | |
o220 -> o213 [label="" , color="green"] | |
o220 -> o228 [label="" , color="green"] | |
o220 -> o230 [label=".LC14" , color="green"] | |
o220 -> o230 [label=".LC15" , color="green"] | |
o220 -> o230 [label=".LC7" , color="green"] | |
o220 -> o231 [label=".LC8" , color="green"] | |
o220 -> o230 [label=".LC9" , color="green"] | |
o220 -> o230 [label=".LC11" , color="green"] | |
o220 -> o219 [label=".LC16" , color="green"] | |
o220 -> o219 [label=".LC5" , color="green"] | |
o220 -> o219 [label=".LC4" , color="green"] | |
o219[label="<f0>14|<f1> 999-libmusl.a::vfprintf.lo(.rodata.str1.1)"]; | |
o98[label="<f0>6|<f1> 999-libmusl.a::__init_tls.lo(.text.__copy_tls)"]; | |
common___libc[label="COM __libc", style="dotted"]; | |
o98 -> common___libc [label="__libc", style="dotted"] | |
o98 -> o238 [label="memcpy"] | |
o28[label="<f0>4|<f1> 999-libmusl.a::__libc_start_main.lo(.text.dummy)"]; | |
o485[label="<f0>4|<f1> 999-libmusl.a::ofl.lo(.text.__ofl_lock)"]; | |
o485 -> o489 [label="" , color="green"] | |
o485 -> o500 [label="__lock"] | |
o485 -> o490 [label="" , color="green"] | |
o349[label="<f0>4|<f1> 999-libmusl.a::__stdio_seek.lo(.text.__stdio_seek)"]; | |
o349 -> o182 [label="__syscall_ret"] | |
o304[label="<f0>6|<f1> 999-libmusl.a::frexpl.lo(.rodata.cst4)"]; | |
o428[label="<f0>4|<f1> 999-libmusl.a::__stdio_write.lo(.text.__stdio_write)"]; | |
o428 -> o182 [label="__syscall_ret"] | |
o13[label="<f0>1|<f1> 10-main.o(.text)"]; | |
o13 -> o62 [label="init"] | |
o13 -> o150 [label="uname"] | |
o13 -> o47 [label="hello"] | |
o13 -> o161 [label="printf"] | |
o13 -> o115 [label="__stack_chk_fail"] | |
o197[label="<f0>8|<f1> 999-libmusl.a::stdout.lo(.data.rel.f)"]; | |
o197 -> o338 [label="__stdio_close"] | |
o197 -> o360 [label="__stdout_write"] | |
o197 -> o349 [label="__stdio_seek"] | |
o197 -> o199 [label="" , color="green"] | |
o213[label="<f0>8|<f1> 999-libmusl.a::vfprintf.lo(.text.fmt_u)"]; | |
o182[label="<f0>4|<f1> 999-libmusl.a::syscall_ret.lo(.text.__syscall_ret)"]; | |
o182 -> o257 [label="__errno_location"] | |
o193[label="<f0>4|<f1> 999-libmusl.a::stdout.lo(.data.rel.local.__stdout_used)"]; | |
o193 -> o197 [label="" , color="green"] | |
o96[label="<f0>4|<f1> 999-libmusl.a::__init_tls.lo(.text.__init_tp)"]; | |
o96 -> o246 [label="__set_thread_area"] | |
common___libc[label="COM __libc", style="dotted"]; | |
o96 -> common___libc [label="__libc", style="dotted"] | |
o257[label="<f0>4|<f1> 999-libmusl.a::__errno_location.lo(.text.__errno_location)"]; | |
o471[label="<f0>4|<f1> 999-libmusl.a::__stdio_exit.lo(.text.close_file)"]; | |
o471 -> o325 [label="__lockfile"] | |
o35[label="<f0>11|<f1> 999-libmusl.a::__libc_start_main.lo(.text.__libc_start_main)"]; | |
o35 -> o31 [label="__init_libc"] | |
o35 -> o33 [label="__libc_start_init" , style="dashed"] | |
o35 -> o128 [label="exit"] | |
o161[label="<f0>4|<f1> 999-libmusl.a::printf.lo(.text.printf)"]; | |
o161 -> o195 [label="stdout"] | |
o161 -> o226 [label="vfprintf"] | |
o325[label="<f0>4|<f1> 999-libmusl.a::__lockfile.lo(.text.__lockfile)"]; | |
o325 -> o461 [label="__wait"] | |
o231[label="<f0>26|<f1> 999-libmusl.a::vfprintf.lo(.rodata.cst16)"]; | |
o337[label="<f0>4|<f1> 999-libmusl.a::__stdio_close.lo(.text.dummy)"]; | |
o451[label="<f0>4|<f1> 999-libmusl.a::memchr.lo(.text.memchr)"]; | |
o66[label="<f0>5|<f1> 13-init.o(.rodata)"]; | |
o214[label="<f0>9|<f1> 999-libmusl.a::vfprintf.lo(.text.getint)"]; | |
o500[label="<f0>4|<f1> 999-libmusl.a::__lock.lo(.text.__lock)"]; | |
common___libc[label="COM __libc", style="dotted"]; | |
o500 -> common___libc [label="__libc", style="dotted"] | |
o500 -> o461 [label="__wait"] | |
o222[label="<f0>17|<f1> 999-libmusl.a::vfprintf.lo(.text.printf_core)"]; | |
o222 -> o215 [label="" , color="green"] | |
o222 -> o257 [label="__errno_location"] | |
o222 -> o214 [label="" , color="green"] | |
o222 -> o229 [label="" , color="green"] | |
o222 -> o209 [label="" , color="green"] | |
o222 -> o224 [label="" , color="green"] | |
o222 -> o228 [label="" , color="green"] | |
o222 -> o219 [label=".LC17" , color="green"] | |
o222 -> o213 [label="" , color="green"] | |
o222 -> o269 [label="strerror"] | |
o222 -> o219 [label=".LC18" , color="green"] | |
o222 -> o384 [label="strnlen"] | |
o222 -> o314 [label="wctomb"] | |
o222 -> o220 [label="" , color="green"] | |
o222 -> o217 [label="" , color="green"] | |
o302[label="<f0>4|<f1> 999-libmusl.a::frexpl.lo(.text.frexpl)"]; | |
o302 -> o304 [label=".LC1" , color="green"] | |
o327[label="<f0>6|<f1> 999-libmusl.a::__lockfile.lo(.text.__unlockfile)"]; | |
o30[label="<f0>6|<f1> 999-libmusl.a::__libc_start_main.lo(.rodata.str1.1)"]; | |
o384[label="<f0>4|<f1> 999-libmusl.a::strnlen.lo(.text.strnlen)"]; | |
o384 -> o451 [label="memchr"] | |
o226[label="<f0>21|<f1> 999-libmusl.a::vfprintf.lo(.text.vfprintf)"]; | |
o226 -> o222 [label="" , color="green"] | |
o226 -> o325 [label="__lockfile"] | |
o226 -> o327 [label="__unlockfile"] | |
o215[label="<f0>10|<f1> 999-libmusl.a::vfprintf.lo(.text.out)"]; | |
o215 -> o371 [label="__fwritex"] | |
o230[label="<f0>25|<f1> 999-libmusl.a::vfprintf.lo(.rodata.cst4)"]; | |
o128[label="<f0>7|<f1> 999-libmusl.a::exit.lo(.text.exit)"]; | |
o128 -> o125 [label="__funcs_on_exit" , style="dashed"] | |
o128 -> o126 [label="__libc_exit_fini" , style="dashed"] | |
o128 -> o473 [label="__stdio_exit"] | |
o128 -> o172 [label="_Exit"] | |
o209[label="<f0>4|<f1> 999-libmusl.a::vfprintf.lo(.text.pop_arg)"]; | |
o209 -> o211 [label="" , color="green"] | |
o439[label="<f0>4|<f1> 999-libmusl.a::__towrite.lo(.text.__towrite)"]; | |
o199[label="<f0>10|<f1> 999-libmusl.a::stdout.lo(.bss.buf)"]; | |
o272[label="<f0>9|<f1> 999-libmusl.a::strerror.lo(.rodata.errid)"]; | |
o33[label="<f0>9|<f1> 999-libmusl.a::__libc_start_main.lo(.text.libc_start_init)"]; | |
missing___init_array_end[label="UND __init_array_end", color="red", style="dashed", fontcolor="red"]; | |
o33 -> missing___init_array_end [label="__init_array_end", color="red", fontcolor="red" , style="dotted"] | |
missing___init_array_start[label="UND __init_array_start", color="red", style="dashed", fontcolor="red"]; | |
o33 -> missing___init_array_start [label="__init_array_start", color="red", fontcolor="red" , style="dotted"] | |
o33 -> o28 [label="_init" , style="dashed"] | |
o360[label="<f0>4|<f1> 999-libmusl.a::__stdout_write.lo(.text.__stdout_write)"]; | |
o360 -> o428 [label="__stdio_write"] | |
o229[label="<f0>24|<f1> 999-libmusl.a::vfprintf.lo(.rodata.states)"]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment