]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/output.h
Update copyright years.
[thirdparty/gcc.git] / gcc / output.h
index b2f0cc168ebfb36fca5b21a1e72961384d23dadf..c54d0c6e0aa67e4fcc602bf0fbdc9c921e4b5cd1 100644 (file)
@@ -1,6 +1,6 @@
 /* Declarations for insn-output.c and other code to write to asm_out_file.
    These functions are defined in final.c, and varasm.c.
-   Copyright (C) 1987-2018 Free Software Foundation, Inc.
+   Copyright (C) 1987-2022 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -167,6 +167,7 @@ extern int decode_reg_name (const char *);
 extern int decode_reg_name_and_count (const char *, int *);
 
 extern void do_assemble_alias (tree, tree);
+extern void do_assemble_symver (tree, tree);
 
 extern void default_assemble_visibility (tree, int);
 
@@ -236,6 +237,12 @@ extern void assemble_label (FILE *, const char *);
    addition of an underscore).  */
 extern void assemble_name_raw (FILE *, const char *);
 
+/* Return NAME that should actually be emitted, looking through
+   transparent aliases.  If NAME refers to an entity that is also
+   represented as a tree (like a function or variable), mark the entity
+   as referenced.  */
+extern const char *assemble_name_resolve (const char *);
+
 /* Like assemble_name_raw, but should be used when NAME might refer to
    an entity that is also represented as a tree (like a function or
    variable).  If NAME does refer to such an entity, that entity will
@@ -342,6 +349,9 @@ extern bool decl_readonly_section (const_tree, int);
    given a constant expression.  */
 extern int compute_reloc_for_constant (tree);
 
+/* This can be used to compute RELOC for get_variable_section.  */
+extern int compute_reloc_for_var (tree);
+
 /* User label prefix in effect for this compilation.  */
 extern const char *user_label_prefix;
 
@@ -355,39 +365,53 @@ extern void default_function_switched_text_sections (FILE *, tree, bool);
 extern void no_asm_to_stream (FILE *);
 
 /* Flags controlling properties of a section.  */
-#define SECTION_ENTSIZE         0x000ff        /* entity size in section */
-#define SECTION_CODE    0x00100        /* contains code */
-#define SECTION_WRITE   0x00200        /* data is writable */
-#define SECTION_DEBUG   0x00400        /* contains debug data */
-#define SECTION_LINKONCE 0x00800       /* is linkonce */
-#define SECTION_SMALL   0x01000        /* contains "small data" */
-#define SECTION_BSS     0x02000        /* contains zeros only */
-#define SECTION_FORGET  0x04000        /* forget that we've entered the section */
-#define SECTION_MERGE   0x08000        /* contains mergeable data */
-#define SECTION_STRINGS  0x10000       /* contains zero terminated strings without
-                                          embedded zeros */
-#define SECTION_OVERRIDE 0x20000       /* allow override of default flags */
-#define SECTION_TLS     0x40000        /* contains thread-local storage */
-#define SECTION_NOTYPE  0x80000        /* don't output @progbits */
-#define SECTION_DECLARED 0x100000      /* section has been used */
-#define SECTION_STYLE_MASK 0x600000    /* bits used for SECTION_STYLE */
-#define SECTION_COMMON   0x800000      /* contains common data */
-#define SECTION_RELRO   0x1000000      /* data is readonly after relocation processing */
-#define SECTION_EXCLUDE  0x2000000     /* discarded by the linker */
-#define SECTION_MACH_DEP 0x4000000     /* subsequent bits reserved for target */
-
-/* This SECTION_STYLE is used for unnamed sections that we can switch
-   to using a special assembler directive.  */
-#define SECTION_UNNAMED         0x000000
-
-/* This SECTION_STYLE is used for named sections that we can switch
-   to using a general section directive.  */
-#define SECTION_NAMED   0x200000
-
-/* This SECTION_STYLE is used for sections that we cannot switch to at
-   all.  The choice of section is implied by the directive that we use
-   to declare the object.  */
-#define SECTION_NOSWITCH 0x400000
+enum section_flag
+{
+  /* This SECTION_STYLE is used for unnamed sections that we can switch
+     to using a special assembler directive.  */
+  SECTION_UNNAMED = 0,
+
+  SECTION_ENTSIZE = (1UL << 8) - 1,    /* entity size in section */
+  SECTION_CODE = 1UL << 8,             /* contains code */
+  SECTION_WRITE = 1UL << 9,            /* data is writable */
+
+  SECTION_DEBUG = 1UL << 10,           /* contains debug data */
+  SECTION_LINKONCE = 1UL << 11,                /* is linkonce */
+  SECTION_SMALL = 1UL << 12,           /* contains "small data" */
+  SECTION_BSS = 1UL << 13,             /* contains zeros only */
+  SECTION_MERGE = 1UL << 14,           /* contains mergeable data */
+  SECTION_STRINGS = 1UL << 15,         /* contains zero terminated strings
+                                          without embedded zeros */
+  SECTION_OVERRIDE = 1UL << 16,                /* allow override of default flags */
+  SECTION_TLS = 1UL << 17,             /* contains thread-local storage */
+  SECTION_NOTYPE = 1UL << 18,          /* don't output @progbits */
+  SECTION_DECLARED = 1UL << 19,                /* section has been used */
+
+  /* This SECTION_STYLE is used for named sections that we can switch
+     to using a general section directive.  */
+  SECTION_NAMED = 1UL << 20,
+
+  /* This SECTION_STYLE is used for sections that we cannot switch to at
+     all.  The choice of section is implied by the directive that we use
+     to declare the object.  */
+  SECTION_NOSWITCH = 1UL << 21,
+
+  /* bits used for SECTION_STYLE */
+  SECTION_STYLE_MASK = SECTION_NAMED | SECTION_NOSWITCH,
+
+  SECTION_COMMON = 1UL << 22,          /* contains common data */
+  SECTION_RELRO = 1UL << 23,           /* data is readonly after
+                                          relocation processing */
+  SECTION_EXCLUDE = 1UL << 24,         /* discarded by the linker */
+  SECTION_RETAIN = 1UL << 25,          /* retained by the linker.  */
+  SECTION_LINK_ORDER = 1UL << 26,      /* section needs link-order.  */
+
+  /* NB: The maximum SECTION_MACH_DEP is (1UL << 28) since AVR needs 4 bits
+     in SECTION_MACH_DEP.  */
+  SECTION_MACH_DEP = 1UL << 27,
+
+  /* subsequent bits reserved for target */
+};
 
 /* A helper function for default_elf_select_section and
    default_elf_unique_section.  Categorizes the DECL.  */
@@ -446,7 +470,7 @@ struct GTY(()) named_section {
 
 /* A callback that writes the assembly code for switching to an unnamed
    section.  The argument provides callback-specific data.  */
-typedef void (*unnamed_section_callback) (const void *);
+typedef void (*unnamed_section_callback) (const char *);
 
 /* Information about a SECTION_UNNAMED section.  */
 struct GTY(()) unnamed_section {
@@ -454,8 +478,8 @@ struct GTY(()) unnamed_section {
 
   /* The callback used to switch to the section, and the data that
      should be passed to the callback.  */
-  unnamed_section_callback GTY ((skip)) callback;
-  const void *GTY ((skip)) data;
+  unnamed_section_callback GTY ((callback)) callback;
+  const char *data;
 
   /* The next entry in the chain of unnamed sections.  */
   section *next;
@@ -479,7 +503,7 @@ struct GTY(()) noswitch_section {
   struct section_common common;
 
   /* The callback used to assemble decls in this section.  */
-  noswitch_section_callback GTY ((skip)) callback;
+  noswitch_section_callback GTY ((callback)) callback;
 };
 
 /* Information about a section, which may be named or unnamed.  */
@@ -514,9 +538,10 @@ extern GTY(()) section *bss_noswitch_section;
 extern GTY(()) section *in_section;
 extern GTY(()) bool in_cold_section_p;
 
-extern section *get_unnamed_section (unsigned int, void (*) (const void *),
-                                    const void *);
-extern section *get_section (const char *, unsigned int, tree);
+extern section *get_unnamed_section (unsigned int, void (*) (const char *),
+                                    const char *);
+extern section *get_section (const char *, unsigned int, tree,
+                            bool not_existing = false);
 extern section *get_named_section (tree, const char *, int);
 extern section *get_variable_section (tree, bool);
 extern void place_block_symbol (rtx);
@@ -535,8 +560,8 @@ extern void switch_to_other_text_partition (void);
 extern section *get_cdtor_priority_section (int, bool);
 
 extern bool unlikely_text_section_p (section *);
-extern void switch_to_section (section *);
-extern void output_section_asm_op (const void *);
+extern void switch_to_section (section *, tree = nullptr);
+extern void output_section_asm_op (const char *);
 
 extern void record_tm_clone_pair (tree, tree);
 extern void finish_tm_clone_pairs (void);
@@ -564,8 +589,8 @@ extern void default_ctor_section_asm_out_constructor (rtx, int);
 extern section *default_select_section (tree, int, unsigned HOST_WIDE_INT);
 extern section *default_elf_select_section (tree, int, unsigned HOST_WIDE_INT);
 extern void default_unique_section (tree, int);
-extern section *default_function_rodata_section (tree);
-extern section *default_no_function_rodata_section (tree);
+extern section *default_function_rodata_section (tree, bool);
+extern section *default_no_function_rodata_section (tree, bool);
 extern section *default_clone_table_section (void);
 extern section *default_select_rtx_section (machine_mode, rtx,
                                            unsigned HOST_WIDE_INT);
@@ -604,7 +629,7 @@ extern int maybe_assemble_visibility (tree);
 
 extern int default_address_cost (rtx, machine_mode, addr_space_t, bool);
 
-/* Output stack usage information.  */
+/* Stack usage.  */
 extern void output_stack_usage (void);
 
 #endif /* ! GCC_OUTPUT_H */