+2017-09-26 Joseph Myers <joseph@codesourcery.com>
+
+ * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
+ * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
+ * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
+ * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
+ Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
+ conditionals inside the function instead of around it. Call
+ file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
+ (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
+
2017-09-26 Richard Biener <rguenther@suse.de>
* graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
/* For the microblaze-*-linux* subtarget. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
#define HAVE_sync_compare_and_swaphi 1
#define HAVE_sync_compare_and_swapsi 1
#define HAVE_sync_compare_and_swapdi 1
+
+#undef NEED_INDICATE_EXEC_STACK
+#define NEED_INDICATE_EXEC_STACK 1
static void pa_hpux64_hpas_file_start (void) ATTRIBUTE_UNUSED;
static void output_deferred_plabels (void);
static void output_deferred_profile_counters (void) ATTRIBUTE_UNUSED;
-#ifdef ASM_OUTPUT_EXTERNAL_REAL
-static void pa_hpux_file_end (void);
-#endif
+static void pa_file_end (void);
static void pa_init_libfuncs (void);
static rtx pa_struct_value_rtx (tree, int);
static bool pa_pass_by_reference (cumulative_args_t, machine_mode,
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
#undef TARGET_ASM_FILE_END
-#ifdef ASM_OUTPUT_EXTERNAL_REAL
-#define TARGET_ASM_FILE_END pa_hpux_file_end
-#else
-#define TARGET_ASM_FILE_END output_deferred_plabels
-#endif
+#define TARGET_ASM_FILE_END pa_file_end
#undef TARGET_ASM_RELOC_RW_MASK
#define TARGET_ASM_RELOC_RW_MASK pa_reloc_rw_mask
extern_symbol p = {decl, name};
vec_safe_push (extern_symbols, p);
}
+#endif
/* Output text required at the end of an assembler file.
This includes deferred plabels and .import directives for
all external symbols that were actually referenced. */
static void
-pa_hpux_file_end (void)
+pa_file_end (void)
{
+#ifdef ASM_OUTPUT_EXTERNAL_REAL
unsigned int i;
extern_symbol *p;
if (!NO_DEFERRED_PROFILE_COUNTERS)
output_deferred_profile_counters ();
+#endif
output_deferred_plabels ();
+#ifdef ASM_OUTPUT_EXTERNAL_REAL
for (i = 0; vec_safe_iterate (extern_symbols, i, &p); i++)
{
tree decl = p->decl;
}
vec_free (extern_symbols);
-}
#endif
+ if (NEED_INDICATE_EXEC_STACK)
+ file_end_indicate_exec_stack ();
+}
+
/* Implement TARGET_CAN_CHANGE_MODE_CLASS. */
static bool
seven and four instructions, respectively. */
#define MAX_PCREL17F_OFFSET \
(flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
+
+#define NEED_INDICATE_EXEC_STACK 0
+2017-09-26 Joseph Myers <joseph@codesourcery.com>
+
+ * config/microblaze/crti.S, config/microblaze/crtn.S,
+ config/microblaze/divsi3.S, config/microblaze/moddi3.S,
+ config/microblaze/modsi3.S, config/microblaze/muldi3_hard.S,
+ config/microblaze/mulsi3.S,
+ config/microblaze/stack_overflow_exit.S,
+ config/microblaze/udivsi3.S, config/microblaze/umodsi3.S,
+ config/pa/milli64.S: Add .note.GNU-stack section.
+
2017-09-23 Daniel Santos <daniel.santos@pobox.com>
* configure.ac: Add Check for HAVE_AS_AVX.
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.section .init, "ax"
.global __init
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.section .init, "ax"
lw r15, r0, r1
rtsd r15, 8
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __divsi3
.ent __divsi3
.type __divsi3,@function
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __moddi3
.ent __moddi3
__moddi3:
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __modsi3
.ent __modsi3
.type __modsi3,@function
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl muldi3_hardproc
.ent muldi3_hardproc
muldi3_hardproc:
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __mulsi3
.ent __mulsi3
.type __mulsi3,@function
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl _stack_overflow_error
.data
.align 2
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __udivsi3
.ent __udivsi3
.type __udivsi3,@function
#
#######################################
+/* An executable stack is *not* required for these functions. */
+#ifdef __linux__
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
.globl __umodsi3
.ent __umodsi3
.type __umodsi3,@function
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+/* An executable stack is *not* required for these functions. */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
#ifdef pa64
.level 2.0w
#endif