final.c (profile_function): Do not emit profile counters in the data section, if NO_PROFILE_COUNTERS is defined.

* final.c (profile_function): Do not emit profile counters in
	the data section, if NO_PROFILE_COUNTERS is defined.
	* tm.texi: Document NO_PROFILE_COUNTERS.  Update doc for
	FUNCTION_PROFILER.

	* config/i386/linux.h (NO_PROFILE_COUNTERS): Define.
	(FUNCTION_PROFILER): Just emit a call to mcount.

From-SVN: r35005
This commit is contained in:
Zack Weinberg 2000-07-13 04:40:23 +00:00 committed by Zack Weinberg
parent 6e993bdb62
commit dcacfa04fe
3 changed files with 21 additions and 11 deletions

View file

@ -1,3 +1,13 @@
2000-07-12 Zack Weinberg <zack@wolery.cumb.org>
* final.c (profile_function): Do not emit profile counters in
the data section, if NO_PROFILE_COUNTERS is defined.
* tm.texi: Document NO_PROFILE_COUNTERS. Update doc for
FUNCTION_PROFILER.
* config/i386/linux.h (NO_PROFILE_COUNTERS): Define.
(FUNCTION_PROFILER): Just emit a call to mcount.
2000-07-12 Zack Weinberg <zack@wolery.cumb.org>
* tradcpp.c (main): Rename 'perror' label to 'sys_error'.

View file

@ -54,23 +54,19 @@ Boston, MA 02111-1307, USA. */
#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
/* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */
/* Output assembler code to FILE to call the profiler.
To the best of my knowledge, no Linux libc has required the label
argument to mcount. */
#define NO_PROFILE_COUNTERS
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
{ \
if (flag_pic) \
{ \
fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \
LPREFIX, (LABELNO)); \
fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
} \
fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \
else \
{ \
fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
fprintf (FILE, "\tcall mcount\n"); \
} \
fprintf (FILE, "\tcall\tmcount\n"); \
}
#undef SIZE_TYPE

View file

@ -1705,7 +1705,9 @@ static void
profile_function (file)
FILE *file;
{
#ifndef NO_PROFILE_COUNTERS
int align = MIN (BIGGEST_ALIGNMENT, LONG_TYPE_SIZE);
#endif
#if defined(ASM_OUTPUT_REG_PUSH)
#if defined(STRUCT_VALUE_INCOMING_REGNUM) || defined(STRUCT_VALUE_REGNUM)
int sval = current_function_returns_struct;
@ -1715,10 +1717,12 @@ profile_function (file)
#endif
#endif /* ASM_OUTPUT_REG_PUSH */
#ifndef NO_PROFILE_COUNTERS
data_section ();
ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
ASM_OUTPUT_INTERNAL_LABEL (file, "LP", profile_label_no);
assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, 1);
#endif
function_section (current_function_decl);