PATCH: Add x86_64 PE+ bigobj format
Nicholas Clifton
nickc@redhat.com
Wed Mar 12 12:10:00 GMT 2014
Hi Tristan,
> bfd/
> * peicode.h (pe_ILF_object_p): Adjust, as the version number
> has been read.
> (pe_bfd_object_p): Also read version number to detect ILF.
> * pe-x86_64.c (COFF_WITH_PE_BIGOBJ): Define.
> (x86_64pe_bigobj_vec): Define
> * coffcode.h (bfd_coff_backend_data): Add _bfd_coff_max_nscns field.
> (bfd_coff_max_nscns): New macro.
> (coff_compute_section_file_positions): Use unsigned int for
> target_index. Compare with bfd_coff_max_nscns.
> (bfd_coff_std_swap_table, ticoff0_swap_table, ticoff1_swap_table):
> Set a value for _bfd_coff_max_nscns.
> (header_bigobj_classid): New constant.
> (coff_bigobj_swap_filehdr_in, coff_bigobj_swap_filehdr_out)
> (coff_bigobj_swap_sym_in, coff_bigobj_swap_sym_out)
> (coff_bigobj_swap_aux_in, coff_bigobj_swap_aux_out): New
> functions.
> (bigobj_swap_table): New table.
> * libcoff.h: Regenerate.
> * coff-sh.c (bfd_coff_small_swap_table): Likewise.
> * coff-alpha.c (alpha_ecoff_backend_data): Add value for
> _bfd_coff_max_nscns.
> * coff-mips.c (mips_ecoff_backend_data): Likewise.
> * coff-rs6000.c (bfd_xcoff_backend_data)
> (bfd_pmac_xcoff_backend_data): Likewise.
> * coff64-rs6000.c (bfd_xcoff_backend_data)
> (bfd_xcoff_aix5_backend_data): Likewise.
> * targets.c (x86_64pe_bigobj_vec): Declare.
> * configure.in (x86_64pe_bigobj_vec): New vector.
> * configure: Regenerate.
> * config.bfd: Add bigobj object format for Windows targets.
>
> gas/
> * config/tc-i386.c (use_big_obj): Declare.
> (OPTION_MBIG_OBJ): Define.
> (md_longopts): Add -mbig-obj option.
> (md_parse_option): Handle it.
> (md_show_usage): Display help for this option.
> (i386_target_format): Use bigobj for x86-64 if -mbig-obj.
> * doc/c-i386.texi: Document the option.
>
> gas/testsuite/
> * gas/pe/big-obj.d, gas/pe/big-obj.s: Add test.
> * gas/pe/pe.exp: Add test.
>
> include/
> * pe.h (struct external_ANON_OBJECT_HEADER_BIGOBJ): Declare.
> (FILHSZ_BIGOBJ): Define.
> (struct external_SYMBOL_EX): Declare.
> (SYMENT_BIGOBJ, SYMESZ_BIGOBJ): Define.
> (union external_AUX_SYMBOL_EX): Declare.
> (AUXENT_BIGOBJ, AUXESZ_BIGOBJ): Define.
> * internal.h (struct internal_filehdr): Change type
> of f_nscns.
Approved - please apply.
Cheers
Nick
More information about the Binutils
mailing list