On Wed, Jul 03, 2019 at 05:39:53PM -0400, Frank Ch. Eigler wrote: > Hi - > > > This is actually with dynamically linked binaries -- the size increase > > is because we link libebl.a directly into all of the binaries in > > addition to libdw.so: > > > > objdump_LDADD = $(libasm) $(libebl) $(libdw) $(libelf) $(libeu) > > $(argp_LDADD > > Is there some reason to keep doing that? > > - FChE
Yes: $ make -C src make: Entering directory '/home/osandov/dev/elfutils/src' CCLD objdump /bin/ld: objdump.o: in function `show_relocs_x': /home/osandov/dev/elfutils/src/objdump.c:352: undefined reference to `ebl_reloc_type_name' /bin/ld: objdump.o: in function `handle_elf': /home/osandov/dev/elfutils/src/objdump.c:755: undefined reference to `ebl_openbackend' /bin/ld: /home/osandov/dev/elfutils/src/objdump.c:757: undefined reference to `ebl_backend_name' /bin/ld: /home/osandov/dev/elfutils/src/objdump.c:788: undefined reference to `ebl_closebackend' collect2: error: ld returned 1 exit status make: *** [Makefile:624: objdump] Error 1 make: Leaving directory '/home/osandov/dev/elfutils/src' Some of the binaries use libebl, and although libebl is linked into libdw.so, the libebl symbols are not exported by libdw. So, libebl is linked in statically for the binaries. This is why I suggested exporting those symbols from libdw.so. (I also considered adding a libebl.so, but that would have a circular dependency with libdw.so, so they might as well be combined).