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