X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Fcoffgrok.h;h=e5aedd8caf0623af1ed5eec9bd9c183ea0faac25;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=c063f1dc77aae99d49feb9703295b3d8a96b48d5;hpb=198beae2cfaf8ea8bfd554ef8d3d3feeabc33ed7;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/coffgrok.h b/binutils/coffgrok.h index c063f1dc77..e5aedd8caf 100644 --- a/binutils/coffgrok.h +++ b/binutils/coffgrok.h @@ -1,60 +1,61 @@ /* coffgrok.h - Copyright 2001 Free Software Foundation, Inc. + Copyright (C) 2001-2020 Free Software Foundation, Inc. -This file is part of GNU Binutils. + This file is part of GNU Binutils. -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 -(at your option) any later version. + 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 3 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -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 02111-1307, USA. */ + 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., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #define T_NULL 0 -#define T_VOID 1 /* function argument (only used by compiler) */ -#define T_CHAR 2 /* character */ -#define T_SHORT 3 /* short integer */ -#define T_INT 4 /* integer */ -#define T_LONG 5 /* long integer */ -#define T_FLOAT 6 /* floating point */ -#define T_DOUBLE 7 /* double word */ -#define T_STRUCT 8 /* structure */ -#define T_UNION 9 /* union */ -#define T_ENUM 10 /* enumeration */ -#define T_MOE 11 /* member of enumeration*/ -#define T_UCHAR 12 /* unsigned character */ -#define T_USHORT 13 /* unsigned short */ -#define T_UINT 14 /* unsigned integer */ -#define T_ULONG 15 /* unsigned long */ -#define T_LNGDBL 16 /* long double */ - - - struct coff_reloc - { - int offset; - struct coff_symbol *symbol; - int addend; - }; - - struct coff_section - { - char *name; - int code; - int data; - int address; - int number; /* 0..n, .text = 0 */ - int nrelocs; - int size; - struct coff_reloc *relocs; - struct bfd_section *bfd_section; - }; +#define T_VOID 1 /* Function argument (only used by compiler). */ +#define T_CHAR 2 /* Character */ +#define T_SHORT 3 /* Short integer */ +#define T_INT 4 /* Integer */ +#define T_LONG 5 /* Long integer */ +#define T_FLOAT 6 /* Floating point */ +#define T_DOUBLE 7 /* Double word */ +#define T_STRUCT 8 /* Structure */ +#define T_UNION 9 /* Union */ +#define T_ENUM 10 /* Enumeration */ +#define T_MOE 11 /* Member of enumeration*/ +#define T_UCHAR 12 /* Unsigned character */ +#define T_USHORT 13 /* Unsigned short */ +#define T_UINT 14 /* Unsigned integer */ +#define T_ULONG 15 /* Unsigned long */ +#define T_LNGDBL 16 /* Long double */ + + +struct coff_reloc +{ + int offset; + struct coff_symbol *symbol; + int addend; +}; + +struct coff_section +{ + char *name; + int code; + int data; + int address; + int number; /* 0..n, .text = 0 */ + unsigned int nrelocs; + int size; + struct coff_reloc *relocs; + struct bfd_section *bfd_section; +}; struct coff_ofile { @@ -67,7 +68,8 @@ struct coff_ofile struct coff_symbol *symbol_list_tail; }; -struct coff_isection { +struct coff_isection +{ int low; int high; int init; @@ -81,145 +83,139 @@ struct coff_sfile struct coff_sfile *next; /* Vector which maps where in each output section - the input file has it's data */ + the input file has it's data. */ struct coff_isection *section; - }; - - struct coff_type +struct coff_type { int size; enum { coff_pointer_type, coff_function_type, coff_array_type, coff_structdef_type, coff_basic_type, coff_structref_type, coff_enumref_type, coff_enumdef_type, coff_secdef_type - } type; + } type; + union { struct - { + { int address; int size; } asecdef; struct - { - int isstruct; - struct coff_scope *elements; - int idx; - } - astructdef; + { + int isstruct; + struct coff_scope *elements; + int idx; + } astructdef; + struct - { - struct coff_symbol *ref; - } astructref; + { + struct coff_symbol *ref; + } astructref; struct - { - struct coff_scope *elements; - int idx; - } aenumdef; + { + struct coff_scope *elements; + int idx; + } aenumdef; + struct - { - struct coff_symbol *ref; - } aenumref; + { + struct coff_symbol *ref; + } aenumref; struct - { - struct coff_type *points_to; - } pointer; + { + struct coff_type *points_to; + } pointer; + struct - { - int dim; - struct coff_type *array_of; - } array; + { + int dim; + struct coff_type *array_of; + } array; struct - { - struct coff_type *function_returns; - struct coff_scope *parameters; - struct coff_scope *code; - struct coff_line *lines; - } function; + { + struct coff_type * function_returns; + struct coff_scope * parameters; + struct coff_scope * code; + struct coff_line * lines; + } function; + int basic; /* One of T_VOID.. T_UINT */ - } u; + } u; }; +struct coff_line +{ + int nlines; + int * lines; + int * addresses; +}; + +struct coff_scope +{ + struct coff_section * sec; /* Which section. */ + int offset; /* Where. */ + int size; /* How big. */ + struct coff_scope * parent; /* One up. */ + struct coff_scope * next; /* Next along. */ + int nvars; + struct coff_symbol * vars_head; /* Symbols. */ + struct coff_symbol * vars_tail; + struct coff_scope * list_head; /* Children. */ + struct coff_scope * list_tail; +}; + +struct coff_visible +{ + enum coff_vis_type + { + coff_vis_ext_def, + coff_vis_ext_ref, + coff_vis_int_def, + coff_vis_common, + coff_vis_auto, + coff_vis_register, + coff_vis_tag, + coff_vis_member_of_struct, + coff_vis_member_of_enum, + coff_vis_autoparam, + coff_vis_regparam, + } type; +}; + +struct coff_where +{ + enum + { + coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown, + coff_where_strtag, coff_where_member_of_struct, + coff_where_member_of_enum, coff_where_entag, coff_where_typedef + } where; + + int offset; + int bitoffset; + int bitsize; + struct coff_section *section; +}; + +struct coff_symbol +{ + char * name; + int tag; + struct coff_type * type; + struct coff_where * where; + struct coff_visible * visible; + struct coff_symbol * next; + struct coff_symbol * next_in_ofile_list; /* For the ofile list. */ + int number; + int er_number; + struct coff_sfile * sfile; +}; - struct coff_line - { - int nlines; - int *lines; - int *addresses; - }; - - - struct coff_scope - { - struct coff_section *sec; /* What section */ - int offset; /* where */ - int size; /* How big */ - struct coff_scope *parent; /* one up */ - - struct coff_scope *next; /*next along */ - - int nvars; - - struct coff_symbol *vars_head; /* symbols */ - struct coff_symbol *vars_tail; - - struct coff_scope *list_head; /* children */ - struct coff_scope *list_tail; - - }; - - - struct coff_visible - { - enum coff_vis_type - { - coff_vis_ext_def, - coff_vis_ext_ref, - coff_vis_int_def, - coff_vis_common, - coff_vis_auto, - coff_vis_register, - coff_vis_tag, - coff_vis_member_of_struct, - coff_vis_member_of_enum, - coff_vis_autoparam, - coff_vis_regparam, - } type; - }; - - struct coff_where - { - enum - { - coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown, - coff_where_strtag, coff_where_member_of_struct, - coff_where_member_of_enum, coff_where_entag, coff_where_typedef - - } where; - int offset; - int bitoffset; - int bitsize; - struct coff_section *section; - }; - - struct coff_symbol - { - char *name; - int tag; - struct coff_type *type; - struct coff_where *where; - struct coff_visible *visible; - struct coff_symbol *next; - struct coff_symbol *next_in_ofile_list; /* For the ofile list */ - int number; - int er_number; - struct coff_sfile *sfile; - }; - -struct coff_ofile *coff_grok PARAMS ((bfd *)); +struct coff_ofile * coff_grok (bfd *);