One I’ve had hanging around in my local trees for a long time. We have been emitting two section switches in the Darwin's file end function by outputting the asm directly. This means that varasm’s tracking of the section switched is not updated which could matter if we elect to reorder some of the file end operations in support of LTO actions.
tested on powerpc-darwin9, x86_64-darwin18 applied to mainline Iain gcc/ 2019-05-18 Iain Sandoe <i...@sandoe.co.uk> * config/darwin.c (darwin_file_end): Use switch_to_section () instead of direct output of the asm. diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index f62f1c7..17e1801 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -2939,12 +2939,10 @@ darwin_file_end (void) if (flag_objc_abi >= 2) { flags = 16; - output_section_asm_op - (darwin_sections[objc2_image_info_section]->unnamed.data); + switch_to_section (darwin_sections[objc2_image_info_section]); } else - output_section_asm_op - (darwin_sections[objc_image_info_section]->unnamed.data); + switch_to_section (darwin_sections[objc_image_info_section]); ASM_OUTPUT_ALIGN (asm_out_file, 2); fputs ("L_OBJC_ImageInfo:\n", asm_out_file);