ffmpeg | branch: master | James Almer <jamr...@gmail.com> | Thu Mar 29 20:40:07 2018 -0300| [23f447294487958e0c7e8c01b9f9abedb1c7ba78] | committer: James Almer
Merge commit 'ea2f72a2c14c67a3b35dac6426d1e3c0fae33fd5' * commit 'ea2f72a2c14c67a3b35dac6426d1e3c0fae33fd5': configure: Don't assume a 16 byte aligned stack on BSDs on i386 Merged-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=23f447294487958e0c7e8c01b9f9abedb1c7ba78 --- configure | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/configure b/configure index f2aa2f5262..fc65f1024f 100755 --- a/configure +++ b/configure @@ -6522,16 +6522,35 @@ elif enabled gcc; then check_cflags -Wformat check_cflags -fdiagnostics-color=auto enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized + if enabled x86_32; then + case $target_os in + *bsd*) + # BSDs don't guarantee a 16 byte aligned stack, but we can + # request GCC to try to maintain 16 byte alignment throughout + # function calls. Library entry points that might call assembly + # functions align the stack. (The parameter means 2^4 bytes.) + check_cflags -mpreferred-stack-boundary=4 + ;; + esac + fi elif enabled llvm_gcc; then check_cflags -mllvm -stack-alignment=16 elif enabled clang; then - if [ "$target_os" = "mingw32" -o "$target_os" = "win32" ] && enabled x86_32; then + if enabled x86_32; then # Clang doesn't support maintaining alignment without assuming the # same alignment in every function. If 16 byte alignment would be # enabled, one would also have to either add attribute_align_arg on # every single entry point into the libraries or enable -mstackrealign # (doing stack realignment in every single function). - disable aligned_stack + case $target_os in + mingw32|win32|*bsd*) + disable aligned_stack + ;; + *) + check_cflags -mllvm -stack-alignment=16 + check_cflags -mstack-alignment=16 + ;; + esac else check_cflags -mllvm -stack-alignment=16 check_cflags -mstack-alignment=16 ====================================================================== diff --cc configure index f2aa2f5262,78a2065208..fc65f1024f --- a/configure +++ b/configure @@@ -6518,10 -4952,22 +6518,21 @@@ elif enabled gcc; the check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes check_cflags -Werror=return-type - check_cflags -Werror=declaration-after-statement check_cflags -Werror=vla - check_cflags -Werror=format-security + check_cflags -Wformat check_cflags -fdiagnostics-color=auto enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized + if enabled x86_32; then + case $target_os in + *bsd*) + # BSDs don't guarantee a 16 byte aligned stack, but we can + # request GCC to try to maintain 16 byte alignment throughout + # function calls. Library entry points that might call assembly + # functions align the stack. (The parameter means 2^4 bytes.) + check_cflags -mpreferred-stack-boundary=4 + ;; + esac + fi elif enabled llvm_gcc; then check_cflags -mllvm -stack-alignment=16 elif enabled clang; then @@@ -6531,10 -4977,16 +6542,18 @@@ # enabled, one would also have to either add attribute_align_arg on # every single entry point into the libraries or enable -mstackrealign # (doing stack realignment in every single function). - disable aligned_stack + case $target_os in + mingw32|win32|*bsd*) + disable aligned_stack + ;; + *) + check_cflags -mllvm -stack-alignment=16 ++ check_cflags -mstack-alignment=16 + ;; + esac else check_cflags -mllvm -stack-alignment=16 + check_cflags -mstack-alignment=16 fi check_cflags -Qunused-arguments check_cflags -Werror=implicit-function-declaration _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog