title: Where are GDB symbols coming from?
body: <p>When I load Fedora 28's <code>/usr/bin/ls</code> file into GDB, I can access to the symbol <code>abformat_init</code>, even if it is not present as a string nor in the symbols table of the binary file.</p>
  
  <pre><code>$ file /usr/bin/ls
  /usr/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d6d0ea6be508665f5586e90a30819d090710842f, stripped, too many notes (256)
  $ readelf -S /usr/bin/ls | grep abformat
  $ nm /usr/bin/ls
  nm: /usr/bin/ls: no symbols
  $ strings /usr/bin/ls | grep abformat
  $ gdb /usr/bin/ls
  [...]
  Reading symbols from /usr/bin/ls...Reading symbols from /usr/bin/ls...(no debugging symbols found)...done.
  (no debugging symbols found)...done.
  Missing separate debuginfos, use: dnf debuginfo-install coreutils-8.29-7.fc28.x86_64
  (gdb) info symbol abformat_init 
  abformat_init in section .text of /usr/bin/ls
  </code></pre>
  
  <p>Where does this symbol comes from? Is there a program that allows to extract them outside of GDB?</p>