Make "show remote exec-file" inferior-aware
[deliverable/binutils-gdb.git] / gas / subsegs.h
index 2d3a100cb5da3bea46fafd20b0367be0524c4924..0848bb8dcd1431d6fac287eb251078ce5411960d 100644 (file)
@@ -1,12 +1,11 @@
 /* subsegs.h -> subsegs.c
 /* subsegs.h -> subsegs.c
-
-   Copyright (C) 1987, 1992, 1993, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1987-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This file is part of GAS, the GNU Assembler.
 
    GAS 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, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
@@ -15,8 +14,9 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with GAS; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   along with GAS; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 /*
  * For every sub-segment the user mentions in the ASsembler program,
 
 /*
  * For every sub-segment the user mentions in the ASsembler program,
  * represent code fragments, for that sub-segment, forward chained.
  */
 
  * represent code fragments, for that sub-segment, forward chained.
  */
 
+#include "obstack.h"
+
+struct frch_cfi_data;
+
 struct frchain                 /* control building of a frag chain */
 {                              /* FRCH = FRagment CHain control */
   struct frag *frch_root;      /* 1st struct frag in chain, or NULL */
   struct frag *frch_last;      /* last struct frag in chain, or NULL */
   struct frchain *frch_next;   /* next in chain of struct frchain-s */
 struct frchain                 /* control building of a frag chain */
 {                              /* FRCH = FRagment CHain control */
   struct frag *frch_root;      /* 1st struct frag in chain, or NULL */
   struct frag *frch_last;      /* last struct frag in chain, or NULL */
   struct frchain *frch_next;   /* next in chain of struct frchain-s */
-  segT frch_seg;               /* SEG_TEXT or SEG_DATA. */
   subsegT frch_subseg;         /* subsegment number of this chain */
   subsegT frch_subseg;         /* subsegment number of this chain */
-#ifdef BFD_ASSEMBLER
   fixS *fix_root;              /* Root of fixups for this subsegment.  */
   fixS *fix_tail;              /* Last fixup for this subsegment.  */
   fixS *fix_root;              /* Root of fixups for this subsegment.  */
   fixS *fix_tail;              /* Last fixup for this subsegment.  */
-#endif
   struct obstack frch_obstack; /* for objects in this frag chain */
   struct obstack frch_obstack; /* for objects in this frag chain */
+  fragS *frch_frag_now;                /* frag_now for this subsegment */
+  struct frch_cfi_data *frch_cfi_data;
 };
 
 typedef struct frchain frchainS;
 
 };
 
 typedef struct frchain frchainS;
 
-/* All subsegments' chains hang off here.  NULL means no frchains yet.  */
-extern frchainS *frchain_root;
-
-/* Frchain we are assembling into now That is, the current segment's
-   frag chain, even if it contains no (complete) frags. */
+/* Frchain we are assembling into now.  That is, the current segment's
+   frag chain, even if it contains no (complete) frags.  */
 extern frchainS *frchain_now;
 
 extern frchainS *frchain_now;
 
-
-typedef struct
-{
+typedef struct segment_info_struct {
   frchainS *frchainP;
   frchainS *frchainP;
-  int hadone : 1;
+  unsigned int hadone : 1;
 
   /* This field is set if this is a .bss section which does not really
      have any contents.  Once upon a time a .bss section did not have
      any frags, but that is no longer true.  This field prevent the
      SEC_HAS_CONTENTS flag from being set for the section even if
      there are frags.  */
 
   /* This field is set if this is a .bss section which does not really
      have any contents.  Once upon a time a .bss section did not have
      any frags, but that is no longer true.  This field prevent the
      SEC_HAS_CONTENTS flag from being set for the section even if
      there are frags.  */
-  int bss : 1;
+  unsigned int bss : 1;
 
   int user_stuff;
 
 
   int user_stuff;
 
-  /* Fixups for this segment.  If BFD_ASSEMBLER, this is only valid
-     after the frchains are run together.  */
+  /* Fixups for this segment.  This is only valid after the frchains
+     are run together.  */
   fixS *fix_root;
   fixS *fix_tail;
 
   fixS *fix_root;
   fixS *fix_tail;
 
-#if defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER)
-  struct internal_scnhdr scnhdr;
-#endif
   symbolS *dot;
 
   struct lineno_list *lineno_list_head;
   struct lineno_list *lineno_list_tail;
 
   symbolS *dot;
 
   struct lineno_list *lineno_list_head;
   struct lineno_list *lineno_list_tail;
 
-#ifdef BFD_ASSEMBLER
   /* Which BFD section does this gas segment correspond to?  */
   asection *bfd_section;
 
   /* NULL, or pointer to the gas symbol that is the section symbol for
      this section.  sym->bsym and bfd_section->symbol should be the same.  */
   symbolS *sym;
   /* Which BFD section does this gas segment correspond to?  */
   asection *bfd_section;
 
   /* NULL, or pointer to the gas symbol that is the section symbol for
      this section.  sym->bsym and bfd_section->symbol should be the same.  */
   symbolS *sym;
-#endif
 
 
-  union
-    {
-      /* Current size of section holding stabs strings.  */
-      unsigned long stab_string_size;
-      /* Initial frag for ELF.  */
-      char *p;
-    }
+  /* Used by dwarf2dbg.c for this section's line table entries.  */
+  void *dwarf2_line_seg;
+
+  union {
+    /* Current size of section holding stabs strings.  */
+    unsigned long stab_string_size;
+    /* Initial frag for ELF.  */
+    char *p;
+  }
   stabu;
 
 #ifdef NEED_LITERAL_POOL
   unsigned long literal_pool_size;
 #endif
   stabu;
 
 #ifdef NEED_LITERAL_POOL
   unsigned long literal_pool_size;
 #endif
-} segment_info_type;
 
 
-#ifdef BFD_ASSEMBLER
-
-extern segment_info_type *seg_info PARAMS ((segT));
-extern symbolS *section_symbol PARAMS ((segT));
-
-#else /* ! BFD_ASSEMBLER */
-
-#ifdef MANY_SEGMENTS
-
-extern segment_info_type segment_info[];
-
-#define seg_info(SEC)  (&segment_info[SEC])
-
-#else
+#ifdef TC_SEGMENT_INFO_TYPE
+  TC_SEGMENT_INFO_TYPE tc_segment_info_data;
+#endif
+} segment_info_type;
 
 
-/* Sentinel for frchain crawling.  Points to the 1st data-segment
-   frchain.  (Which is pointed to by the last text-segment frchain.) */
-extern frchainS *data0_frchainP;
-extern frchainS *bss0_frchainP;
 
 
-#endif
+#define seg_info(sec) \
+  ((segment_info_type *) bfd_section_userdata (sec))
 
 
-#endif /* ! BFD_ASSEMBLER */
+extern symbolS *section_symbol (segT);
 
 
-/* end of subsegs.h */
+extern void subsegs_print_statistics (FILE *);
This page took 0.024871 seconds and 4 git commands to generate.