On 01/02/2016 08:16 PM, Marcin Kościelnicki wrote:
> It seems at some point the .size hook was hijacked to emit some
> machine-specific directives, and the actual .size directive was
> forgotten.  This caused problems for split-stack support, since
> linker couldn't scan the function body for non-split-stack calls.
> 
> gcc/ChangeLog:
> 
>       * config/s390/s390.c (s390_asm_declare_function_size): Add code
>       to actually emit the .size directive.

...

>  s390_asm_declare_function_size (FILE *asm_out_file,
> -                             const char *fnname ATTRIBUTE_UNUSED, tree decl)
> +                             const char *fnname, tree decl)
>  {
> +  if (!flag_inhibit_size_directive)
> +    ASM_OUTPUT_MEASURED_SIZE (asm_out_file, fnname);
>    if (DECL_FUNCTION_SPECIFIC_TARGET (decl) == NULL)
>      return;
>    fprintf (asm_out_file, "\t.machine pop\n");

It would be good to use the original ASM_DECLARE_FUNCTION_SIZE macro from 
config/elfos.h here.  This
probably would require to change its name in s390.h first and then use it from
s390_asm_declare_function_size. Not really beautiful but at least changes to 
the original macro
would not require adjusting our backend.

-Andreas-

Reply via email to