Commit 95cc59f1 by Iain Sandoe Committed by Iain Sandoe

[Darwin, machopic 10/n] Rework X86 mcount stub code.

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
parent 038d7e1b
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.
......@@ -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
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment