From a75a9cf2fddefec93b7682d7698fb35138e7c8a6 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@chromium.org>
Date: Tue, 25 Sep 2012 00:37:11 -0400
Subject: [PATCH] check for x32 targets

Add configure detection of the new x32 ABI as well as support in asm.

Change-Id: Ic66a069599adeb81062090e3f11b71ee1fb97cb8
---
 build/make/configure.sh       |  5 +++++
 vpx_ports/x86_abi_support.asm | 10 ++++++++++
 2 files changed, 15 insertions(+)

diff --git a/build/make/configure.sh b/build/make/configure.sh
index eeb959a29f..05bbabe777 100755
--- a/build/make/configure.sh
+++ b/build/make/configure.sh
@@ -989,6 +989,11 @@ process_common_toolchain() {
     x86*)
         bits=32
         enabled x86_64 && bits=64
+        check_cpp <<EOF && bits=x32
+#ifndef __ILP32__
+#error "not x32"
+#endif
+EOF
         soft_enable runtime_cpu_detect
         soft_enable mmx
         soft_enable sse
diff --git a/vpx_ports/x86_abi_support.asm b/vpx_ports/x86_abi_support.asm
index e1a540ce76..0c9fe37740 100644
--- a/vpx_ports/x86_abi_support.asm
+++ b/vpx_ports/x86_abi_support.asm
@@ -88,6 +88,8 @@
 %define sym(x) x
 %elifidn __OUTPUT_FORMAT__,elf64
 %define sym(x) x
+%elifidn __OUTPUT_FORMAT__,elfx32
+%define sym(x) x
 %elifidn __OUTPUT_FORMAT__,x64
 %define sym(x) x
 %else
@@ -110,6 +112,8 @@
     %define PRIVATE :hidden
   %elifidn __OUTPUT_FORMAT__,elf64
     %define PRIVATE :hidden
+  %elifidn __OUTPUT_FORMAT__,elfx32
+    %define PRIVATE :hidden
   %elifidn __OUTPUT_FORMAT__,x64
     %define PRIVATE
   %else
@@ -223,6 +227,9 @@
   %ifidn __OUTPUT_FORMAT__,elf64
     %define WRT_PLT wrt ..plt
     %define HIDDEN_DATA(x) x:data hidden
+  %elifidn __OUTPUT_FORMAT__,elfx32
+    %define WRT_PLT wrt ..plt
+    %define HIDDEN_DATA(x) x:data hidden
   %else
     %define HIDDEN_DATA(x) x
   %endif
@@ -364,5 +371,8 @@ section .text
 %elifidn __OUTPUT_FORMAT__,elf64
 section .note.GNU-stack noalloc noexec nowrite progbits
 section .text
+%elifidn __OUTPUT_FORMAT__,elfx32
+section .note.GNU-stack noalloc noexec nowrite progbits
+section .text
 %endif
 
-- 
GitLab