[PATCH 2/5] s390: Fix missing .size directives.

Marcin Kościelnicki koriakin@0x04.net
Sat Jan 2 19:16:00 GMT 2016


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.
---
 gcc/ChangeLog          | 5 +++++
 gcc/config/s390/s390.c | 4 +++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2c572a7..6aef3f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
 2016-01-02  Marcin Kościelnicki  <koriakin@0x04.net>
 
+	* config/s390/s390.c (s390_asm_declare_function_size): Add code
+	to actually emit the .size directive.
+
+2016-01-02  Marcin Kościelnicki  <koriakin@0x04.net>
+
 	* config/s390/s390.md (pool_section_start): Use switch_to_section
 	to select proper read-only data section instead of hardcoding .rodata.
 	(pool_section_end): Use switch_to_section to match the above.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 16045f0..9dc8d1e 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -6834,8 +6834,10 @@ s390_asm_output_function_prefix (FILE *asm_out_file,
 
 void
 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");
-- 
2.6.4



More information about the Gcc-patches mailing list