[pushed] Darwin : Only emit Objective-C section switches for older linkers.

Message ID 0C613472-9D80-411A-B68B-4E48F938BBD1@sandoe.co.uk
State New
Headers show
Series
  • [pushed] Darwin : Only emit Objective-C section switches for older linkers.
Related show

Commit Message

Iain Sandoe Oct. 10, 2020, 4:26 p.m.
Hi
At one time, the system linkers needed to have at least a dummy
entry for every Objective-C section in use.  This removes the extra
emitted code when it is not needed by the linker.

tested across the supported Darwin range, and on x86_64-linux,
pushed to master,
thanks
Iain

gcc/ChangeLog:

	* config/darwin.c (output_objc_section_asm_op): Avoid extra
	objective-c section switches unless the linker needs them.
---
 gcc/config/darwin.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

-- 
2.24.1

Patch

diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index e101f8eb655..370ee5cedaa 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -136,7 +136,7 @@  output_objc_section_asm_op (const void *directive)
      order in the object.  The code below implements this by emitting
      a section header for each ObjC section the first time that an ObjC
      section is requested.  */
-  if (! been_here)
+  if (darwin_symbol_stubs && ! been_here)
     {
       section *saved_in_section = in_section;
       static const enum darwin_section_enum tomark[] =
@@ -176,20 +176,21 @@  output_objc_section_asm_op (const void *directive)
 	{
 	  objc2_method_names_section,
 	  objc2_message_refs_section,
+	  objc2_selector_refs_section,
+	  objc2_ivar_section,
 	  objc2_classdefs_section,
 	  objc2_metadata_section,
 	  objc2_classrefs_section,
 	  objc2_class_names_section,
 	  objc2_classlist_section,
 	  objc2_categorylist_section,
-	  objc2_selector_refs_section,
 	  objc2_nonlazy_class_section,
 	  objc2_nonlazy_category_section,
 	  objc2_protocollist_section,
 	  objc2_protocolrefs_section,
 	  objc2_super_classrefs_section,
+	  objc2_constant_string_object_section,
 	  objc2_image_info_section,
-	  objc2_constant_string_object_section
 	} ;
       size_t i;