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-