X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Flibcoff.h;h=db5e2904f6b7584946d0366a4c0170c8a42678f9;hb=fc3e1e3c7e5d81ec71176b7015e1f0b5d81d751f;hp=629a34a6fe50bf2354235c767b52f672df0eb4b2;hpb=53e09e0aaf3d13e4b893744e2fe79edde7edfd20;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/libcoff.h b/bfd/libcoff.h index 629a34a6fe..db5e2904f6 100644 --- a/bfd/libcoff.h +++ b/bfd/libcoff.h @@ -4,7 +4,7 @@ /* BFD COFF object file private structure. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Cygnus Support. @@ -12,7 +12,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -22,7 +22,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #include "bfdlink.h" @@ -109,6 +110,9 @@ typedef struct coff_tdata used by ARM code. */ flagword flags; + /* coff-stgo32 EXE stub header after BFD tdata has been allocated. Its data + is kept in internal_filehdr.go32stub beforehand. */ + char *go32stub; } coff_data_type; /* Tdata for pe image files. */ @@ -120,8 +124,6 @@ typedef struct pe_tdata int has_reloc_section; bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *); flagword real_flags; - int target_subsystem; - bfd_boolean force_minimum_alignment; } pe_data_type; #define pe_data(bfd) ((bfd)->tdata.pe_obj_data) @@ -168,7 +170,8 @@ struct xcoff_tdata /* Used by the XCOFF backend linker. */ asection **csects; - unsigned long *debug_indices; + long *debug_indices; + unsigned int *lineno_counts; unsigned int import_file_id; }; @@ -218,8 +221,7 @@ struct xcoff_section_tdata /* The lineno_count field for the enclosing section, because we are going to clobber it there. */ unsigned int lineno_count; - /* The first and one past the last symbol indices for symbols used - by this csect. */ + /* The first and last symbol indices for symbols used by this csect. */ unsigned long first_symndx; unsigned long last_symndx; }; @@ -256,7 +258,7 @@ struct coff_link_hash_entry unsigned short type; /* Symbol class. */ - unsigned char class; + unsigned char symbol_class; /* Number of auxiliary entries. */ char numaux; @@ -349,8 +351,10 @@ extern asymbol *coff_bfd_make_debug_symbol extern bfd_boolean coff_find_nearest_line (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **, unsigned int *); +extern bfd_boolean coff_find_inliner_info + (bfd *, const char **, const char **, unsigned int *); extern int coff_sizeof_headers - (bfd *, bfd_boolean); + (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_coff_reloc16_relax_section (bfd *, asection *, struct bfd_link_info *, bfd_boolean *); extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents @@ -394,7 +398,7 @@ struct coff_debug_merge_type struct coff_debug_merge_type *next; /* Class of type. */ - int class; + int type_class; /* Symbol index where this type is defined. */ long indx; @@ -423,7 +427,8 @@ struct coff_debug_merge_hash_table /* Initialize a COFF debug merge hash table. */ #define coff_debug_merge_hash_table_init(table) \ - (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc)) + (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \ + sizeof (struct coff_debug_merge_hash_entry))) /* Free a COFF debug merge hash table. */ @@ -539,7 +544,8 @@ extern bfd_boolean _bfd_coff_link_hash_table_init (struct coff_link_hash_table *, bfd *, struct bfd_hash_entry *(*) (struct bfd_hash_entry *, struct bfd_hash_table *, - const char *)); + const char *), + unsigned int); extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create (bfd *); extern const char *_bfd_coff_internal_syment_name @@ -588,18 +594,19 @@ extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_xcoff_bfd_final_link (bfd *, struct bfd_link_info *); +extern bfd_boolean _bfd_xcoff_define_common_symbol + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *); extern bfd_boolean _bfd_ppc_xcoff_relocate_section (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, struct internal_reloc *, struct internal_syment *, asection **); -/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the +/* Functions in coff-ppc.c. FIXME: These are called by pe.em in the linker, and so should start with bfd and be declared in bfd.h. */ extern bfd_boolean ppc_allocate_toc_section (struct bfd_link_info *); extern bfd_boolean ppc_process_before_allocation (bfd *, struct bfd_link_info *); - /* Extracted from coffcode.h. */ typedef struct coff_ptr_struct { @@ -710,7 +717,11 @@ typedef struct unsigned int _bfd_linesz; unsigned int _bfd_filnmlen; bfd_boolean _bfd_coff_long_filenames; + bfd_boolean _bfd_coff_long_section_names; + bfd_boolean (*_bfd_coff_set_long_section_names) + (bfd *, int); + unsigned int _bfd_coff_default_section_alignment_power; bfd_boolean _bfd_coff_force_symnames_in_strings; unsigned int _bfd_coff_debug_string_prefix_length; @@ -797,6 +808,9 @@ typedef struct bfd_boolean (*_bfd_coff_final_link_postscript) (bfd *, struct coff_final_link_info *); + bfd_boolean (*_bfd_coff_print_pdata) + (bfd *, void *); + } bfd_coff_backend_data; #define coff_backend_info(abfd) \ @@ -844,6 +858,8 @@ typedef struct (coff_backend_info (abfd)->_bfd_coff_long_filenames) #define bfd_coff_long_section_names(abfd) \ (coff_backend_info (abfd)->_bfd_coff_long_section_names) +#define bfd_coff_set_long_section_names(abfd, enable) \ + ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable)) #define bfd_coff_default_section_alignment_power(abfd) \ (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) #define bfd_coff_swap_filehdr_in(abfd, i,o) \ @@ -929,3 +945,12 @@ typedef struct #define bfd_coff_final_link_postscript(a,p) \ ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p)) +#define bfd_coff_have_print_pdata(a) \ + (coff_backend_info (a)->_bfd_coff_print_pdata) +#define bfd_coff_print_pdata(a,p) \ + ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p)) + +/* Macro: Returns true if the bfd is a PE executable as opposed to a + PE object file. */ +#define bfd_pei_p(abfd) \ + (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))