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.
PR binutils/17512
* coffcode.h (coff_set_arch_mach_hook): Check return value from
bfd_malloc.
(coff_slurp_line_table): Return FALSE if the line number
information was corrupt.
(coff_slurp_symbol_table): Return FALSE if the symbol information
was corrupt.
* mach-o.c (bfd_mach_o_bfd_copy_private_header_data): Always
initialise the fields of the dyld_info structure.
(bfd_mach_o_build_exec_seg_command): Replace assertion with an
error message and a return value.
(bfd_mach_o_layout_commands): Change the function to boolean.
Return FALSE if the function fails.
(bfd_mach_o_build_commands): Fail if bfd_mach_o_layout_commands
fails.
(bfd_mach_o_read_command): Fail if an unrecognised command is
encountered.
* peXXigen.c (_bfd_XXi_swap_aouthdr_in): Set bfd_error if the
read fails.
(slurp_symtab): Check the return from bfd_malloc.
(_bfd_XX_bfd_copy_private_bfd_data_common): Fail if the copy
encountered an error.
(_bfd_XXi_final_link_postscript): Fail if a section could not be
copied.
* peicode.h (pe_bfd_object_p): Fail if the header could not be
swapped in.
* tekhex.c (first_phase): Fail if the section is too big.
* versados.c (struct esdid): Add content_size field.
(process_otr): Use and check the new field.
(versados_get_section_contents): Check that the section exists and
that the requested data is available.
PR binutils/17512
* addr2line.c (main): Call bfd_set_error_program_name.
* ar.c (main): Likewise.
* coffdump.c (main): Likewise.
* cxxfilt.c (main): Likewise.
* dlltool.c (main): Likewise.
* nlmconv.c (main): Likewise.
* nm.c (main): Likewise.
* objdump.c (main): Likewise.
* size.c (main): Likewise.
* srconv.c (main): Likewise.
* strings.c (main): Likewise.
* sysdump.c (main): Likewise.
* windmc.c (main): Likewise.
* windres.c (main): Likewise.
* objcopy.c (main): Likewise.
(copy_relocations_in_section): Check for relocs without associated
symbol pointers.
output deterministic. time.h include is no longer needed.
* resres.c (res_append_resource): Likewise.
* pe-dll.c (fill_edata): Only use a real timestamp if
--insert-timestamp was used.
* emultempl/pe.em: Add the --insert-timestamp option.
* emultempl/pep.em: Likewise for 64bit.
* ld.texinfo: Document the --insert-timestamp option.
* libcoff-in.h: Add insert_timestamp flag to the pe_data struct.
* libcoff.h: Regenerate.
* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Only use a real
timestamp if --insert-timestamp was used.
* windres.c (enum option_values): New enum.
(long_options): Use separate option number for --include-dir
option.
(main): Separate backwards compatibility check from code to
implement --include-dir. Check to see if directory exists and do
not complain if it does.
of input file, if not specified in input file itself; all callers
updated; `binary_architecture' hack removed.
(copy_archive, copy_file): New parameter `input_arch', for
`copy_object' usage.
(copy_main): Accept `-B' (`--binary-architecture') option also
for any arch-less input ifile format, not only `binary'; remove
bfd_external_binary_architecture hack; instead, add `input_arch'
to calls to `copy_file'.
* windres.c, windmc.c : Obsolete and useless external references
to `bfd_external_binary_architecture' or `bfd_external_machine'
removed.
* binary.c (binary_object_p): Remove bfd_external_binary_architecture
hack. objcopy `-B' (`--binary-architecture') option is now handled
in a generic way.
* windres.c (set_endianess): Get architecture name
for internal target names like "pe-arm-wince-little".
(find_arch_match): New helper.
* ChangeLog: Reset it.
* ChangeLog-2008: Moved old ChangeLog.
* resrc.c (read_rc_file): Rename e to edit, and c to dir.
Pass dir to windres_add_include_dir. Add comments.
(close_input_stream): Check pclose error, and call fatal if
the preprocessor failed.
* windres.c (windres_add_include_dir): Assert that p is non-NULL,
and not an empty string.
* rclex.l (YY_NO_UNPUT): Define.
* rcparse.y (null_unichar): New static var.
(res_null_text): Use it rather than attempting to init from wchar_t.
* windres.c: Include assert.h and time.h before getopt.h.
Include config.h and unistd.h too.
objcopy.c (add_redefine_syms_file): Change error messages to use
<filename>:<linenumber>: format for easier parsing by automatic tools.
srconv.c (show_usage): Fix spelling typo.
windres.c (format_from_filename): Suggest the use of -J instead of -I if the
file type cannot be determined.
(new_directive, assemble_file, main): Likewise.
(process_def_file, new_directive): Make static.
(inform): Rewrite using VA_FIXEDARG.
* dllwrap.c (mybasename): Add missing prototype.
(strhash, main): Likewise.
(inform): Rewrite using VA_FIXEDARG.
(warn): Likewise.
(cleanup_and_exit): Use old style function definition.
(strhash): Likewise.
* windres.c (define_resource): Use one memset to clear all of
struct res_resource.