BFD_INIT_MAGIC
authorAlan Modra <amodra@gmail.com>
Mon, 15 Oct 2018 05:40:27 +0000 (16:10 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 15 Oct 2018 11:41:58 +0000 (22:11 +1030)
commitbf2dd8d7cf4114b8a60dbb83b340f76b9b2474d1
tree0ba71a654d503cc47523f3bf878d9e1d9c2c2d58
parentdc86962bf15e7b8dfdcebc17d83b9b48be0bd9cb
BFD_INIT_MAGIC

This patch performs a run-time test that a shared libbfd.so has been
compiled with the same size bfd_vma as that of apps using the library.
On a 32-bit host it is easily possible to have one libbfd.so compiled
to support 64-bit targets (or configured with --enable-64-bit-bfd)
while another only supports 32-bit targets.  The two libraries will
have differently sized bfd_vma types, and if the wrong one is loaded
all sorts of weird behaviour might be seen.

bfd/
PR 23534
* init.c (BFD_INIT_MAGIC): Define.
(bfd_init): Return BFD_INIT_MAGIC.
bfd-in2.h: Regenerate.
binutils/
PR 23534
* addr2line.c (main): Exit with fatal error if bfd_init
returns an unexpected value.
* ar.c (main): Likewise.
* dlltool.c (identify_dll_for_implib): Likewise.
* nm.c (main): Likewise.
* objcopy.c (main): Likewise.
* objdump.c (main): Likewise.
* size.c (main): Likewise.
* strings.c (main): Likewise.
* windmc.c (main): Likewise.
* windres.c (main): Likewise.
gas/
PR 23534
* as.c (main): Exit with fatal error if bfd_init returns an
unexpected value.
ld/
PR 23534
* ldmain.c (main): Exit with fatal error if bfd_init returns
an unexpected value.
18 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/init.c
binutils/ChangeLog
binutils/addr2line.c
binutils/ar.c
binutils/dlltool.c
binutils/nm.c
binutils/objcopy.c
binutils/objdump.c
binutils/size.c
binutils/strings.c
binutils/windmc.c
binutils/windres.c
gas/ChangeLog
gas/as.c
ld/ChangeLog
ld/ldmain.c