Copy over the ASM_DECLARE_FUNCTION_SIZE macro from linux64.h. This macro

declares the proper size of a function. Without this macro recent GNU as will
complain about with:
'Error: .size expression for main does not evaluate to a constant.'

Up to now we produce this:

.L.main:
 	....
	.size   main, .-main

With the macro defined the output is this:

.L.main:
 	....
	.size   main,.-.L.main

This affects only the 64-bit compiler.
Tested with world and kernel on both, 32 and 64-bit powerpc.
This commit is contained in:
Andreas Tobler 2011-11-16 21:22:51 +00:00
parent 355a415e92
commit 8e803f5a7c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=227586

View File

@ -253,3 +253,22 @@ extern int dot_symbols;
#undef NEED_INDICATE_EXEC_STACK
#define NEED_INDICATE_EXEC_STACK 1
/* This is how to declare the size of a function. */
#undef ASM_DECLARE_FUNCTION_SIZE
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do \
{ \
if (!flag_inhibit_size_directive) \
{ \
fputs ("\t.size\t", (FILE)); \
if (TARGET_64BIT && DOT_SYMBOLS) \
putc ('.', (FILE)); \
assemble_name ((FILE), (FNAME)); \
fputs (",.-", (FILE)); \
rs6000_output_function_entry (FILE, FNAME); \
putc ('\n', (FILE)); \
} \
} \
while (0)