https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105169
--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #10) > Btw, a good example might be how we handle .vtable_map_vars for VTV which > uses handle_vtv_comdat_section instead of switch_to_section. It might have > more specialities but then it should serve as a recipie how to handle > non-ELF. So sth like the following would do the trick for ELF. But maybe better abstract a switch_to_comdat_section and re-use that from the vtv handler and this place to avoid touching in_section directly. diff --git a/gcc/targhooks.cc b/gcc/targhooks.cc index e22bc66a6c8..632c9486ccb 100644 --- a/gcc/targhooks.cc +++ b/gcc/targhooks.cc @@ -1995,8 +1995,13 @@ default_print_patchable_function_entry_1 (FILE *file, patch_area_number++; ASM_GENERATE_INTERNAL_LABEL (buf, "LPFE", patch_area_number); - switch_to_section (get_section ("__patchable_function_entries", - flags, current_function_decl)); + section *sect = get_section ("__patchable_function_entries", + flags, current_function_decl); + targetm.asm_out.named_section (sect->named.name, + sect->named.common.flags + | SECTION_LINKONCE, + current_function_decl); + in_section = sect; assemble_align (POINTER_SIZE); fputs (asm_op, file); assemble_name_raw (file, buf);