[Darwin, machopic 10/n] Rework X86 mcount stub code.
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 9 Nov 2019 13:43:04 +0000 (13:43 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sat, 9 Nov 2019 13:43:04 +0000 (13:43 +0000)
When a stub is used to call the mcount function, the code is already
marking it as used unconditionally;  This is the only use of the so-
called validation outside darwin.{h,c}.  This moves the 'validation'
into darwin.c which is a step towards making validation routine local.

gcc/

2019-11-09  Iain Sandoe  <iain@sandoe.co.uk>

* config/darwin.c (machopic_mcount_stub_name): Validate the
symbol stub name when it is created.
* config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol
stub validation.

From-SVN: r278000

gcc/ChangeLog
gcc/config/darwin.c
gcc/config/i386/darwin.h

index ab59107..f82006a 100644 (file)
@@ -1,3 +1,10 @@
+2019-11-09  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * config/darwin.c (machopic_mcount_stub_name): Validate the
+       symbol stub name when it is created.
+       * config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol
+       stub validation.
+
 2019-11-09  Jakub Jelinek  <jakub@redhat.com>
 
        * symtab.c: Fix comment typos.
index c0fafed..f34be22 100644 (file)
@@ -601,15 +601,6 @@ machopic_indirection_name (rtx sym_ref, bool stub_p)
   return p->ptr_name;
 }
 
-/* Return the name of the stub for the mcount function.  */
-
-const char*
-machopic_mcount_stub_name (void)
-{
-  rtx symbol = gen_rtx_SYMBOL_REF (Pmode, "*mcount");
-  return machopic_indirection_name (symbol, /*stub_p=*/true);
-}
-
 /* If NAME is the name of a stub or a non-lazy pointer , mark the stub
    or non-lazy pointer as used -- and mark the object to which the
    pointer/stub refers as used as well, since the pointer/stub will
@@ -2155,6 +2146,20 @@ darwin_emit_except_table_label (FILE *file)
                               except_table_label_num++);
   ASM_OUTPUT_LABEL (file, section_start_label);
 }
+
+/* Return, and mark as used, the name of the stub for the mcount function.
+   Currently, this is only called by X86 code in the expansion of the
+   FUNCTION_PROFILER macro, when stubs are enabled.  */
+
+const char*
+machopic_mcount_stub_name (void)
+{
+  rtx symbol = gen_rtx_SYMBOL_REF (Pmode, "*mcount");
+  const char *name = machopic_indirection_name (symbol, /*stub_p=*/true);
+  machopic_validate_stub_or_non_lazy_ptr (name);
+  return name;
+}
+
 /* Generate a PC-relative reference to a Mach-O non-lazy-symbol.  */
 
 void
index bdb36f0..d1e53ef 100644 (file)
@@ -239,7 +239,8 @@ along with GCC; see the file COPYING3.  If not see
 #undef TARGET_ASM_OUTPUT_IDENT
 #define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive
 
-/* Darwin profiling -- call mcount.  */
+/* Darwin profiling -- call mcount.
+   If we need a stub, then we unconditionally mark it as used.  */
 #undef FUNCTION_PROFILER
 #define FUNCTION_PROFILER(FILE, LABELNO)                               \
   do {                                                                 \
@@ -248,7 +249,6 @@ along with GCC; see the file COPYING3.  If not see
       {                                                                        \
        const char *name = machopic_mcount_stub_name ();                \
        fprintf (FILE, "\tcall %s\n", name+1);  /*  skip '&'  */        \
-       machopic_validate_stub_or_non_lazy_ptr (name);                  \
       }                                                                        \
     else fprintf (FILE, "\tcall mcount\n");                            \
   } while (0)