X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=gcc%2Foutput.h;h=c54d0c6e0aa67e4fcc602bf0fbdc9c921e4b5cd1;hb=7adcbafe45f8001b698967defe682687b52c0007;hp=729c52099e6b6fa0362e7b9fdf6728ec7874ad24;hpb=6fbec038f7a7ddf29f074943611b53210d17c40c;p=thirdparty%2Fgcc.git diff --git a/gcc/output.h b/gcc/output.h index 729c52099e6b..c54d0c6e0aa6 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -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-2020 Free Software Foundation, Inc. + Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GCC. @@ -349,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; @@ -362,43 +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_RETAIN 0x4000000 /* retained by the linker. */ - -/* NB: The maximum SECTION_MACH_DEP is 0x10000000 since AVR needs 4 bits - in SECTION_MACH_DEP. */ -#define SECTION_MACH_DEP 0x8000000 /* 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. */ @@ -457,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 { @@ -465,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; @@ -490,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. */ @@ -525,8 +538,8 @@ 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_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); @@ -547,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);