Binaries and libraries may use the .gnu_debuglink functionality to store debug information in a separate debug file. Tools that parse debug information (like addr2line) should follow the debuglink automatically.
GNU binutils 2.17.50 addr2line:
% addr2line -e /bin/ls 0x4023d0 ??:0
GNU binutils 2.25 addr2line:
% /usr/local/bin/addr2line -e /bin/ls 0x4023d0 /tank/emaste/src/git-stable-10/bin/ls/ls.c:155
elftoolchain addr2line:
% /tank/emaste/src/elftoolchain/addr2line/addr2line -e /bin/ls 0x4023d0 ??:0