forked from Imagelibrary/binutils-gdb
Add pe/x86_64 bigobj file format.
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/coff/ * 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.
This commit is contained in:
committed by
Tristan Gingold
parent
5e3a2c38d7
commit
167ad85bf0
@@ -358,6 +358,85 @@ typedef struct
|
||||
#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
|
||||
#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
|
||||
|
||||
/* Bigobj header. */
|
||||
struct external_ANON_OBJECT_HEADER_BIGOBJ
|
||||
{
|
||||
/* ANON_OBJECT_HEADER_V2 header. */
|
||||
char Sig1[2];
|
||||
char Sig2[2];
|
||||
char Version[2];
|
||||
char Machine[2];
|
||||
char TimeDateStamp[4];
|
||||
char ClassID[16];
|
||||
char SizeOfData[4];
|
||||
char Flags[4];
|
||||
char MetaDataSize[4];
|
||||
char MetaDataOffset[4];
|
||||
|
||||
/* BIGOBJ specific. */
|
||||
char NumberOfSections[4];
|
||||
char PointerToSymbolTable[4];
|
||||
char NumberOfSymbols[4];
|
||||
};
|
||||
|
||||
#define FILHSZ_BIGOBJ (14 * 4)
|
||||
|
||||
struct external_SYMBOL_EX
|
||||
{
|
||||
union
|
||||
{
|
||||
char e_name[E_SYMNMLEN];
|
||||
|
||||
struct
|
||||
{
|
||||
char e_zeroes[4];
|
||||
char e_offset[4];
|
||||
} e;
|
||||
} e;
|
||||
|
||||
char e_value[4];
|
||||
char e_scnum[4];
|
||||
char e_type[2];
|
||||
char e_sclass[1];
|
||||
char e_numaux[1];
|
||||
} ATTRIBUTE_PACKED ;
|
||||
|
||||
#define SYMENT_BIGOBJ struct external_SYMBOL_EX
|
||||
#define SYMESZ_BIGOBJ 20
|
||||
|
||||
#define FILNMLEN_BIGOBJ 20
|
||||
|
||||
union external_AUX_SYMBOL_EX
|
||||
{
|
||||
struct
|
||||
{
|
||||
char WeakDefaultSymIndex[4];
|
||||
char WeakSearchType[4];
|
||||
char rgbReserved[12];
|
||||
} Sym;
|
||||
|
||||
struct
|
||||
{
|
||||
char Name[FILNMLEN_BIGOBJ];
|
||||
} File;
|
||||
|
||||
struct
|
||||
{
|
||||
char Length[4]; /* section length */
|
||||
char NumberOfRelocations[2]; /* # relocation entries */
|
||||
char NumberOfLinenumbers[2]; /* # line numbers */
|
||||
char Checksum[4]; /* section COMDAT checksum */
|
||||
char Number[2]; /* COMDAT associated section index */
|
||||
char Selection[1]; /* COMDAT selection number */
|
||||
char bReserved[1];
|
||||
char HighNumber[2]; /* High bits of COMDAT associated sec. */
|
||||
char rgbReserved[2];
|
||||
} Section;
|
||||
} ATTRIBUTE_PACKED;
|
||||
|
||||
#define AUXENT_BIGOBJ union external_AUX_SYMBOL_EX
|
||||
#define AUXESZ_BIGOBJ 20
|
||||
|
||||
/* .pdata/.xdata defines and structures for x64 PE+ for exception handling. */
|
||||
|
||||
/* .pdata in exception directory. */
|
||||
|
||||
Reference in New Issue
Block a user