aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/sourcebuild.texi
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-12-02 05:32:37 -0800
committerH.J. Lu <hjl.tools@gmail.com>2020-12-02 05:32:37 -0800
commit694d4a6d0c466d0fbc97920a9c6641a7b349ca35 (patch)
tree9ef8e10abea2aa46892a2af8db490bc3c1e585a6 /gcc/doc/sourcebuild.texi
parenta1ebd4f9f71adbb17b2f187c67f2fb49f0a8fe51 (diff)
downloadgcc-694d4a6d0c466d0fbc97920a9c6641a7b349ca35.zip
gcc-694d4a6d0c466d0fbc97920a9c6641a7b349ca35.tar.gz
gcc-694d4a6d0c466d0fbc97920a9c6641a7b349ca35.tar.bz2
Use the section flag 'o' for __patchable_function_entries
This commit in GNU binutils 2.35: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=b7d072167715829eed0622616f6ae0182900de3e added the section flag 'o' to .section directive: .section __patchable_function_entries,"awo",@progbits,foo which specifies the symbol name which the section references. Assembler creates a unique __patchable_function_entries section with the section, where foo is defined, as its linked-to section. Linker keeps a section if its linked-to section is kept during garbage collection. This patch checks assembler support for the section flag 'o' and uses it to implement __patchable_function_entries section. Since Solaris may use GNU assembler with Solairs ld. Even if GNU assembler supports the section flag 'o', it doesn't mean that Solairs ld supports it. This feature is disabled for Solairs targets. gcc/ PR middle-end/93195 PR middle-end/93197 * configure.ac (HAVE_GAS_SECTION_LINK_ORDER): New. Define 1 if the assembler supports the section flag 'o' for specifying section with link-order. * output.h (SECTION_LINK_ORDER): New. Defined to 0x8000000. (SECTION_MACH_DEP): Changed from 0x8000000 to 0x10000000. * targhooks.c (default_print_patchable_function_entry): Pass SECTION_LINK_ORDER to switch_to_section if the section flag 'o' works. Pass current_function_decl to switch_to_section. * varasm.c (default_elf_asm_named_section): Use 'o' flag for SECTION_LINK_ORDER if assembler supports it. * config.in: Regenerated. * configure: Likewise. * doc/sourcebuild.texi: Document o_flag_in_section. gcc/testsuite/ PR middle-end/93195 * g++.dg/pr93195a.C: New test. * g++.dg/pr93195b.C: Likewise. * lib/target-supports.exp (check_effective_target_o_flag_in_section): New proc.
Diffstat (limited to 'gcc/doc/sourcebuild.texi')
-rw-r--r--gcc/doc/sourcebuild.texi3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 55538c3..586dce7 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2548,6 +2548,9 @@ Target supports the @code{noinit} variable attribute.
@item nonpic
Target does not generate PIC by default.
+@item o_flag_in_section
+Target supports the 'o' flag in .section directive in assembly inputs.
+
@item offload_gcn
Target has been configured for OpenACC/OpenMP offloading on AMD GCN.