Home

dynsym

The dynsym is the dynamic symbol table of an ELF (Executable and Linkable Format) file, stored in the section named .dynsym. It contains symbols that may be resolved at load time or at runtime by the dynamic linker, such as imported functions from shared libraries or exported symbols from the object itself.

Each entry in dynsym is an Elf32_Sym or Elf64_Sym, depending on architecture. A symbol entry includes st_name

The actual symbol names are stored in the separate string table .dynstr; st_name points to the name’s

Dynsym is contrasted with the static symbol table .symtab, which is used by the linker at link

Tools such as readelf -s, nm -D, or objdump -t can display dynamic symbols from the .dynsym

(an
index
into
the
dynamic
string
table,
.dynstr),
st_value,
st_size,
st_info
(binding
and
type),
st_other
(visibility),
and
st_shndx
(the
section
index
or
a
special
value
such
as
SHN_UNDEF).
A
symbol
with
st_shndx
set
to
SHN_UNDEF
represents
an
undefined
reference
to
be
resolved
by
the
dynamic
linker.
offset
within
that
table.
Dynsym
entries
are
used
by
the
dynamic
linker
to
resolve
relocations
(REL/RELA)
and
to
support
lazy
binding
through
the
procedure
linkage
table
(PLT).
time
for
statically
linked
binaries.
Many
dynamically
linked
executables
and
shared
libraries
may
omit
or
strip
.symtab,
while
dynsym
is
required
for
dynamic
linking.
section.
In
modern
ELF
files,
symbol
versioning
information
may
accompany
dynsym
data
via
separate
sections
(e.g.,
.gnu.version),
but
version
numbers
are
not
stored
directly
in
the
symbol
entries
themselves.