[FFmpeg-cvslog] configure: Don't assume an aligned stack on clang on windows

Martin Storsjö git at videolan.org
Fri Mar 30 02:36:19 EEST 2018

ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Tue Mar 13 00:13:55 2018 +0200| [847190ebd99ffd57dc89bd568a33bf2d5c424129] | committer: Martin Storsjö

configure: Don't assume an aligned stack on clang on windows

If we'd enable a 16 byte aligned stack, clang/llvm would also assume
that alignment everywhere and produce code that strictly requires it.
That would require adding realignment (via attribute_align_arg) on every
single public library function or enable -mstackrealign (which does the
same on every single function).

Also relatedly; the parameter currently tested (-mllvm
-stack-alignment=16) hasn't actually been supported for quite some
time; current clang versions use -mstack-alignment=16 for the same.
Actually testing for that parameter would be a different change
though, since it has a real risk of changing behaviour on any other
platform where clang is used.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=847190ebd99ffd57dc89bd568a33bf2d5c424129

 configure | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 42465edf94..95e6006440 100755
--- a/configure
+++ b/configure
@@ -4960,7 +4960,16 @@ elif enabled gcc; then
 elif enabled llvm_gcc; then
     check_cflags -mllvm -stack-alignment=16
 elif enabled clang; then
-    check_cflags -mllvm -stack-alignment=16
+    if [ "$target_os" = "mingw32" -o "$target_os" = "win32" ] && 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
+    else
+        check_cflags -mllvm -stack-alignment=16
+    fi
     check_cflags -Qunused-arguments
     check_cflags -Werror=implicit-function-declaration
     check_cflags -Werror=missing-prototypes

More information about the ffmpeg-cvslog mailing list