diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-01-27 11:49:23 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-01-27 11:50:13 +0100 |
commit | 686b1cdfdc46a476056fe4df6e8186be8c889aca (patch) | |
tree | 54e80c05d7ddd8255a5f59820d4e750f70f54673 | |
parent | 530b1d688761db46b33d26864d3a0684cc82e0f9 (diff) | |
download | gcc-686b1cdfdc46a476056fe4df6e8186be8c889aca.tar.gz |
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.
-rw-r--r-- | libgcc/config/i386/resms64.h | 5 | ||||
-rw-r--r-- | libgcc/config/i386/resms64f.h | 5 | ||||
-rw-r--r-- | libgcc/config/i386/resms64fx.h | 5 | ||||
-rw-r--r-- | libgcc/config/i386/resms64x.h | 5 | ||||
-rw-r--r-- | libgcc/config/i386/savms64.h | 5 | ||||
-rw-r--r-- | libgcc/config/i386/savms64f.h | 5 |
6 files changed, 30 insertions, 0 deletions
diff --git a/libgcc/config/i386/resms64.h b/libgcc/config/i386/resms64.h index f56c85c10b2..71f04b380e5 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 99b6f9a8faf..004f7978f19 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 e4642576205..6dc0019a784 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 73d83e6a79e..fa32093f214 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 b6c91d5df71..885880060ae 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 605dbc04827..9c80bb80247 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 |