aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-01-27 11:49:23 +0100
committerJakub Jelinek <jakub@redhat.com>2021-01-27 11:50:13 +0100
commit686b1cdfdc46a476056fe4df6e8186be8c889aca (patch)
tree54e80c05d7ddd8255a5f59820d4e750f70f54673 /libgcc
parent530b1d688761db46b33d26864d3a0684cc82e0f9 (diff)
downloadgcc-686b1cdfdc46a476056fe4df6e8186be8c889aca.zip
gcc-686b1cdfdc46a476056fe4df6e8186be8c889aca.tar.gz
gcc-686b1cdfdc46a476056fe4df6e8186be8c889aca.tar.bz2
libgcc, i386: Add .note.GNU-stack sections to the ms sse/avx sav/res
On Linux, GCC emits .note.GNU-stack sections when compiling code to mark the code as not needing or needing executable stack, missing section means unknown. But assembly files need to be marked manually. We already mark various *.S files in libgcc manually, but the avx_resms64f.o avx_resms64fx.o avx_resms64.o avx_resms64x.o avx_savms64f.o avx_savms64.o sse_resms64f.o sse_resms64fx.o sse_resms64.o sse_resms64x.o sse_savms64f.o sse_savms64.o files aren't marked, so when something links it in, it will require executable stack. Nothing in the assembly requires executable stack though. 2021-01-27 Jakub Jelinek <jakub@redhat.com> * config/i386/savms64.h: Add .note.GNU-stack section on Linux. * config/i386/savms64f.h: Likewise. * config/i386/resms64.h: Likewise. * config/i386/resms64f.h: Likewise. * config/i386/resms64x.h: Likewise. * config/i386/resms64fx.h: Likewise.
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/config/i386/resms64.h5
-rw-r--r--libgcc/config/i386/resms64f.h5
-rw-r--r--libgcc/config/i386/resms64fx.h5
-rw-r--r--libgcc/config/i386/resms64x.h5
-rw-r--r--libgcc/config/i386/savms64.h5
-rw-r--r--libgcc/config/i386/savms64f.h5
6 files changed, 30 insertions, 0 deletions
diff --git a/libgcc/config/i386/resms64.h b/libgcc/config/i386/resms64.h
index f56c85c..71f04b3 100644
--- a/libgcc/config/i386/resms64.h
+++ b/libgcc/config/i386/resms64.h
@@ -57,3 +57,8 @@ MS2SYSV_STUB_END(resms64_17)
MS2SYSV_STUB_END(resms64_18)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif
diff --git a/libgcc/config/i386/resms64f.h b/libgcc/config/i386/resms64f.h
index 99b6f9a..004f797 100644
--- a/libgcc/config/i386/resms64f.h
+++ b/libgcc/config/i386/resms64f.h
@@ -55,3 +55,8 @@ MS2SYSV_STUB_END(resms64f_16)
MS2SYSV_STUB_END(resms64f_17)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif
diff --git a/libgcc/config/i386/resms64fx.h b/libgcc/config/i386/resms64fx.h
index e464257..6dc0019 100644
--- a/libgcc/config/i386/resms64fx.h
+++ b/libgcc/config/i386/resms64fx.h
@@ -62,3 +62,8 @@ MS2SYSV_STUB_END(resms64fx_16)
MS2SYSV_STUB_END(resms64fx_17)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif
diff --git a/libgcc/config/i386/resms64x.h b/libgcc/config/i386/resms64x.h
index 73d83e6a..fa32093 100644
--- a/libgcc/config/i386/resms64x.h
+++ b/libgcc/config/i386/resms64x.h
@@ -63,3 +63,8 @@ MS2SYSV_STUB_END(resms64x_17)
MS2SYSV_STUB_END(resms64x_18)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif
diff --git a/libgcc/config/i386/savms64.h b/libgcc/config/i386/savms64.h
index b6c91d5..8858800 100644
--- a/libgcc/config/i386/savms64.h
+++ b/libgcc/config/i386/savms64.h
@@ -57,3 +57,8 @@ MS2SYSV_STUB_END(savms64_17)
MS2SYSV_STUB_END(savms64_18)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif
diff --git a/libgcc/config/i386/savms64f.h b/libgcc/config/i386/savms64f.h
index 605dbc0..9c80bb8 100644
--- a/libgcc/config/i386/savms64f.h
+++ b/libgcc/config/i386/savms64f.h
@@ -55,3 +55,8 @@ MS2SYSV_STUB_END(savms64f_16)
MS2SYSV_STUB_END(savms64f_17)
#endif /* __x86_64__ */
+
+#if defined(__ELF__) && defined(__linux__)
+ .section .note.GNU-stack,"",@progbits
+ .previous
+#endif