[GTK] Use FTL by default when LLVM 3.7 is available
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Nov 2015 13:02:00 +0000 (13:02 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Nov 2015 13:02:00 +0000 (13:02 +0000)
https://bugs.webkit.org/show_bug.cgi?id=142128

Reviewed by Csaba Osztrogonác.

.:

Enable FTL by default when architecture is X86_64. It requires
LLVM 3.7, but can be disabled manually as a cmake configure
argument.

* Source/cmake/FindLLVM.cmake: In debian llvm-config is only
available if the metapackage is installed and it points to
llvm-config-3.5. So, here we check first if the llvm-config is
from a recent enough version, and if not we check several
llvm-config-<version> programs, so this should work on any distro.
* Source/cmake/OptionsGTK.cmake: Enable FTL by default when
target architecture is X86_64, and check the LLVM is at least
3.7. The option is now public, since we want people to be able to
disable it manually.

Source/JavaScriptCore:

* PlatformGTK.cmake: Install libllvmForJSC.so.
* llvm/InitializeLLVMLinux.cpp:
(JSC::getLLVMInitializerFunction): For developer build try to load first
libllvmForJSC.so from standard paths since not installed binaries
have the RPATH set. If it fails try the installed one. For
production buils load always the installed one.

Tools:

* Scripts/run-javascriptcore-tests: Enable FTL for GTK+ port when
architecture is x86_64.
* Scripts/update-webkit-libs-jhbuild:
(cleanJhbuild): Remove also the separate Build directory used by
GTK+ port now.
* Scripts/webkitdirs.pm:
(isX86_64):
* Scripts/webkitperl/FeatureList.pm: Enable FTL by default for
GTK+ port when architecture is x86_64.
* gtk/jhbuild-optional.modules: Remove llvm.
* gtk/jhbuild.modules: Add llvm 3.7 and include it as dependecy
only when architecture is x86_64.
* gtk/jhbuildrc: Set a buildroot to use a separate build
directory. LLVM 3.7 fails to build if configure script is run from
source dir. Since it's not possible to use a separate build dir
only for llvm, we do it now globally. Modules not supporting non
source build dirs are marked in the moduleset. Also set x86_64
condition when the architecture is x86_64.
* gtk/patches/llvm-elf-add-stackmaps-arm64.patch: Removed.
* gtk/patches/llvm-elf-add-stackmaps.patch: Removed.
* gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch: Removed.
* gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch: Removed.
* jhbuild/jhbuild-wrapper: Use a newer jhbuild version to be able
to use conditions.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@192469 268f45cc-cd09-0410-ab3c-d52691b4dbfc

19 files changed:
ChangeLog
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/PlatformGTK.cmake
Source/JavaScriptCore/llvm/InitializeLLVMLinux.cpp
Source/cmake/FindLLVM.cmake
Source/cmake/OptionsGTK.cmake
Tools/ChangeLog
Tools/Scripts/run-javascriptcore-tests
Tools/Scripts/update-webkit-libs-jhbuild
Tools/Scripts/webkitdirs.pm
Tools/Scripts/webkitperl/FeatureList.pm
Tools/gtk/jhbuild-optional.modules
Tools/gtk/jhbuild.modules
Tools/gtk/jhbuildrc
Tools/gtk/patches/llvm-elf-add-stackmaps-arm64.patch [deleted file]
Tools/gtk/patches/llvm-elf-add-stackmaps.patch [deleted file]
Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch [deleted file]
Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch [deleted file]
Tools/jhbuild/jhbuild-wrapper

index 2ba1d4a..eef9453 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2015-11-16  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Use FTL by default when LLVM 3.7 is available
+        https://bugs.webkit.org/show_bug.cgi?id=142128
+
+        Reviewed by Csaba Osztrogonác.
+
+        Enable FTL by default when architecture is X86_64. It requires
+        LLVM 3.7, but can be disabled manually as a cmake configure
+        argument.
+
+        * Source/cmake/FindLLVM.cmake: In debian llvm-config is only
+        available if the metapackage is installed and it points to
+        llvm-config-3.5. So, here we check first if the llvm-config is
+        from a recent enough version, and if not we check several
+        llvm-config-<version> programs, so this should work on any distro.
+        * Source/cmake/OptionsGTK.cmake: Enable FTL by default when
+        target architecture is X86_64, and check the LLVM is at least
+        3.7. The option is now public, since we want people to be able to
+        disable it manually.
+
 2015-11-11  Anders Carlsson  <andersca@apple.com>
 
         Enable cross-platform context menus by default
index cf0f4df..4d47fbb 100644 (file)
@@ -1,3 +1,17 @@
+2015-11-16  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Use FTL by default when LLVM 3.7 is available
+        https://bugs.webkit.org/show_bug.cgi?id=142128
+
+        Reviewed by Csaba Osztrogonác.
+
+        * PlatformGTK.cmake: Install libllvmForJSC.so.
+        * llvm/InitializeLLVMLinux.cpp:
+        (JSC::getLLVMInitializerFunction): For developer build try to load first
+        libllvmForJSC.so from standard paths since not installed binaries
+        have the RPATH set. If it fails try the installed one. For
+        production buils load always the installed one.
+
 2015-11-15  Saam barati  <sbarati@apple.com>
 
         64-bit in the DFG: non tail Calls unnecessarily store the argument count twice on the callee frame and tails calls unnecessarily store it once
index 4ad1c1a..cb22151 100644 (file)
@@ -38,7 +38,14 @@ if (ENABLE_INTROSPECTION)
     )
 endif ()
 
+if (ENABLE_FTL_JIT)
+    install(TARGETS llvmForJSC
+            DESTINATION "${LIB_INSTALL_DIR}/javascriptcoregtk-${WEBKITGTK_API_VERSION}"
+    )
+endif ()
+
 add_definitions(-DSTATICALLY_LINKED_WITH_WTF)
+add_definitions(-DLIBDIR="${LIB_INSTALL_DIR}")
 
 list(APPEND JavaScriptCore_LIBRARIES
     ${GLIB_LIBRARIES}
index 9e06dda..af9a5e2 100644 (file)
 
 #include "InitializeLLVMPOSIX.h"
 
+#if PLATFORM(GTK)
+#include <wtf/glib/GUniquePtr.h>
+#endif
+
 namespace JSC {
 
 LLVMInitializerFunction getLLVMInitializerFunction(bool verbose)
 {
+#if PLATFORM(GTK)
+#if ENABLE(DEVELOPER_MODE)
+    LLVMInitializerFunction function = getLLVMInitializerFunctionPOSIX("libllvmForJSC.so", verbose);
+    if (function)
+        return function;
+#endif
+    static const char* libllvmForJSCInstalledPath = LIBDIR G_DIR_SEPARATOR_S "javascriptcoregtk-" WEBKITGTK_API_VERSION_STRING G_DIR_SEPARATOR_S;
+    GUniquePtr<char> libllvmForJSCFilename(g_build_filename(libllvmForJSCInstalledPath, "libllvmForJSC.so", nullptr));
+    return getLLVMInitializerFunctionPOSIX(libllvmForJSCFilename.get(), verbose);
+#else
     return getLLVMInitializerFunctionPOSIX("libllvmForJSC.so", verbose);
+#endif
 }
 
 } // namespace JSC
index 9a651ca..31e2055 100644 (file)
@@ -7,9 +7,19 @@
 #  LLVM_INCLUDE_DIRS - include directories for the llvm headers.
 #  LLVM_STATIC_LIBRARIES - list of paths for the static llvm libraries.
 
-find_program(LLVM_CONFIG_EXE NAMES "llvm-config")
 
-execute_process(COMMAND ${LLVM_CONFIG_EXE} --version OUTPUT_VARIABLE LLVM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+foreach (_program_name llvm-config llvm-config-3.7 llvm-config-3.6 llvm-config-3.5)
+    find_program(LLVM_CONFIG_EXE NAMES ${_program_name})
+    if (LLVM_CONFIG_EXE)
+        execute_process(COMMAND ${LLVM_CONFIG_EXE} --version OUTPUT_VARIABLE LLVM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+        if ("${LLVM_VERSION}" VERSION_LESS "${LLVM_FIND_VERSION}")
+            unset(LLVM_CONFIG_EXE CACHE)
+        else ()
+            break ()
+        endif ()
+    endif ()
+endforeach ()
+
 execute_process(COMMAND ${LLVM_CONFIG_EXE} --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE)
 execute_process(COMMAND ${LLVM_CONFIG_EXE} --libfiles OUTPUT_VARIABLE LLVM_STATIC_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
 execute_process(COMMAND ${LLVM_CONFIG_EXE} --system-libs OUTPUT_VARIABLE LLVM_SYSTEM_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
index a80e1b6..8f8705e 100644 (file)
@@ -66,6 +66,12 @@ if (NOT OPENGL_FOUND AND OPENGLES2_FOUND)
     set(ENABLE_GLES2_DEFAULT ON)
 endif ()
 
+if (WTF_CPU_X86_64)
+    set(ENABLE_FTL_DEFAULT ON)
+else ()
+    set(ENABLE_FTL_DEFAULT OFF)
+endif ()
+
 WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT})
 WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF)
 WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON)
@@ -119,6 +125,7 @@ endif ()
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCELERATED_2D_CANVAS PUBLIC OFF)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CREDENTIAL_STORAGE PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${ENABLE_FTL_DEFAULT})
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PUBLIC ON)
@@ -248,11 +255,15 @@ if (ENABLE_CREDENTIAL_STORAGE)
 endif ()
 
 if (ENABLE_FTL_JIT)
-    find_package(LLVM)
-    if (NOT LLVM_FOUND)
-        message(FATAL_ERROR "LLVM is needed for ENABLE_FTL_JIT")
+    if (WTF_CPU_X86_64)
+        find_package(LLVM 3.7)
+        if (NOT LLVM_FOUND)
+            message(FATAL_ERROR "LLVM 3.7 is required for ENABLE_FTL_JIT")
+        endif ()
+        SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
+    else ()
+        message(FATAL_ERROR "FTL is only supported for X86_64")
     endif ()
-    SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
 endif ()
 
 if (ENABLE_GAMEPAD_DEPRECATED)
index 2a4e966..d22552a 100644 (file)
@@ -1,3 +1,35 @@
+2015-11-16  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Use FTL by default when LLVM 3.7 is available
+        https://bugs.webkit.org/show_bug.cgi?id=142128
+
+        Reviewed by Csaba Osztrogonác.
+
+        * Scripts/run-javascriptcore-tests: Enable FTL for GTK+ port when
+        architecture is x86_64.
+        * Scripts/update-webkit-libs-jhbuild:
+        (cleanJhbuild): Remove also the separate Build directory used by
+        GTK+ port now.
+        * Scripts/webkitdirs.pm:
+        (isX86_64):
+        * Scripts/webkitperl/FeatureList.pm: Enable FTL by default for
+        GTK+ port when architecture is x86_64.
+        * gtk/jhbuild-optional.modules: Remove llvm.
+        * gtk/jhbuild.modules: Add llvm 3.7 and include it as dependecy
+        only when architecture is x86_64.
+        * gtk/jhbuildrc: Set a buildroot to use a separate build
+        directory. LLVM 3.7 fails to build if configure script is run from
+        source dir. Since it's not possible to use a separate build dir
+        only for llvm, we do it now globally. Modules not supporting non
+        source build dirs are marked in the moduleset. Also set x86_64
+        condition when the architecture is x86_64.
+        * gtk/patches/llvm-elf-add-stackmaps-arm64.patch: Removed.
+        * gtk/patches/llvm-elf-add-stackmaps.patch: Removed.
+        * gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch: Removed.
+        * gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch: Removed.
+        * jhbuild/jhbuild-wrapper: Use a newer jhbuild version to be able
+        to use conditions.
+
 2015-11-15  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r192462.
index acb8e41..ce81fa0 100755 (executable)
@@ -62,7 +62,7 @@ my $envVars = "";
 my $gmallocPath = undef;
 my $gmallocDefaultPath = "/usr/lib/libgmalloc.dylib";
 
-my $enableFTL = isAppleMacWebKit();
+my $enableFTL = isAppleMacWebKit() || (isGtk() && isX86_64());
 my $createTarball = 0;
 my $remoteHost = 0;
 my $remoteConfigFile;
index 7b58bb6..3893daf 100755 (executable)
@@ -122,6 +122,11 @@ sub cleanJhbuild()
     if (system("rm -rf $jhbuildPath/Source") ne 0) {
         die "Cleaning jhbuild sources failed!";
     }
+
+    if (isGtk()) {
+        # GTK+ uses a separate build directory.
+        system("rm -rf $jhbuildPath/Build");
+    }
 }
 
 delete $ENV{AR_FLAGS} if exists $ENV{AR_FLAGS};
index 5329d16..7e43ba3 100755 (executable)
@@ -1157,6 +1157,11 @@ sub isARM()
     return ($Config{archname} =~ /^arm[v\-]/) || ($Config{archname} =~ /^aarch64[v\-]/);
 }
 
+sub isX86_64()
+{
+    return (architecture() eq "x86_64") || 0;
+}
+
 sub isCrossCompilation()
 {
   my $compiler = "";
index c7e0513..a5104e9 100644 (file)
@@ -458,7 +458,7 @@ my @features = (
       define => "ENABLE_XSLT", default => 1, value => \$xsltSupport },
 
     { option => "ftl-jit", desc => "Toggle FTLJIT support",
-      define => "ENABLE_FTL_JIT", default => 0, value => \$ftlJITSupport },
+      define => "ENABLE_FTL_JIT", default => (isGtk() && isX86_64()), value => \$ftlJITSupport },
 );
 
 sub getFeatureOptionList()
index 7a69f36..91fb829 100644 (file)
@@ -9,8 +9,6 @@
 
   <repository type="tarball" name="ftp.gnome.org"
       href="http://ftp.gnome.org"/>
-  <repository type="tarball" name="llvm.org"
-      href="http://llvm.org"/>
 
   <autotools id="libsecret" autogen-sh="configure">
     <branch repo="ftp.gnome.org"
     </dependencies>
   </autotools>
 
-  <autotools id="llvm"
-             autogenargs="--enable-optimized --disable-terminfo --disable-zlib --enable-targets=host --disable-backtraces --disable-crash-overrides --disable-expensive-checks --disable-debug-runtime --disable-assertions --enable-shared">
-    <branch repo="llvm.org"
-            module="/releases/3.5.0/llvm-3.5.0.src.tar.xz" version="3.5.0" checkoutdir="llvm-3.5.0"
-            hash="sha256:28e199f368ef0a4666708f31c7991ad3bcc3a578342b0306526dd35f07595c03">
-      <patch file="llvm-elf-allow-fde-references-outside-the-2gb-range.patch" strip="1"/>
-      <patch file="llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch" strip="1"/>
-      <patch file="llvm-elf-add-stackmaps.patch" strip="1"/>
-      <patch file="llvm-elf-add-stackmaps-arm64.patch" strip="1"/>
-    </branch>
-  </autotools>
-
 </moduleset>
index 1796666..a28adaa 100644 (file)
@@ -33,6 +33,9 @@
       <dep package="mesa"/>
       <dep package="openwebrtc"/>
       <dep package="libseccomp"/>
+      <if condition-set="x86_64">
+        <dep package="llvm"/>
+      </if>
     </dependencies>
   </metamodule>
 
@@ -63,6 +66,8 @@
       href="http://anongit.freedesktop.org/git"/>
   <repository type="tarball" name="people.freedesktop.org"
       href="http://people.freedesktop.org"/>
+  <repository type="tarball" name="llvm.org"
+      href="http://llvm.org"/>
 
   <autotools id="cairo"
              autogenargs="--enable-gl=yes --enable-egl=yes --enable-glx=yes ac_cv_func_rsvg_pixbuf_from_file=no"
     </branch>
   </autotools>
 
-  <autotools id="fonts"
+  <autotools id="fonts" supports-non-srcdir-builds="no"
              skip-autogen="true">
     <branch repo="github.com" module="mrobinson/webkitgtk-test-fonts.git" checkoutdir="webkitgtk-test-fonts" tag="0.0.5"/>
   </autotools>
 
-  <autotools id="dicts"
+  <autotools id="dicts" supports-non-srcdir-builds="no"
              skip-autogen="true">
     <branch repo="github.com" module="mrobinson/webkitgtk-test-dicts.git" checkoutdir="webkitgtk-test-dicts" tag="0.0.1"/>
   </autotools>
              md5sum="f5898b29bbfd70502831a212d9249d10"/>
   </autotools>
 
-  <autotools id="libseccomp" autogen-sh="./autogen.sh; ./configure">
+  <autotools id="libseccomp" supports-non-srcdir-builds="no" autogen-sh="./autogen.sh; ./configure">
     <branch repo="github.com" module="seccomp/libseccomp.git" tag="v2.2.3"/>
   </autotools>
 
     </branch>
   </autotools>
 
-  <autotools id="gnome-icon-theme-symbolic" autogen-sh="configure">
+  <autotools id="gnome-icon-theme-symbolic" supports-non-srcdir-builds="no" autogen-sh="configure">
     <dependencies>
       <dep package="gtk+"/>
     </dependencies>
     </dependencies>
   </autotools>
 
-  <autotools id="libxml2"
+  <autotools id="libxml2" supports-non-srcdir-builds="no"
              autogen-sh="./autogen.sh; ./configure --with-python=no">
     <branch module="/sources/libxml2-2.9.1.tar.gz" version="2.9.1"
             repo="xmlsoft.org"
     </branch>
   </autotools>
 
-  <autotools id="libusrsctp" autogen-sh="./bootstrap; ./configure --disable-warnings-as-errors">
+  <autotools id="libusrsctp" supports-non-srcdir-builds="no" autogen-sh="./bootstrap; ./configure --disable-warnings-as-errors">
     <branch repo="github.com" module="sctplab/usrsctp.git" checkoutdir="usrsctp" tag="078ff3252f73327e0ac11d6fd5eff62011f6646e"/>
    </autotools>
 
-   <autotools id="gst-plugins-openwebrtc" supports-parallel-builds="no" autogen-sh="./autogen.sh; ./configure">
+   <autotools id="gst-plugins-openwebrtc" supports-parallel-builds="no" supports-non-srcdir-builds="no" autogen-sh="./autogen.sh; ./configure">
      <dependencies>
        <dep package="gst-plugins-base"/>
        <dep package="libusrsctp"/>
     <branch repo="github.com" module="EricssonResearch/openwebrtc-gst-plugins.git" checkoutdir="gst-plugins-openwebrtc" tag="e359b67484af90f416ea35e301205d2b53c77a14"/>
    </autotools>
 
-   <autotools id="libnice">
+   <autotools id="libnice" supports-non-srcdir-builds="no">
     <dependencies>
       <dep package="gstreamer"/>
     </dependencies>
     <branch repo="github.com" module="EricssonResearch/openwebrtc.git" checkoutdir="openwebrtc" tag="13516c7f79a0c48bb411464f7613d4b426c70f5b"/>
   </autotools>
 
+  <autotools id="llvm"
+             autogenargs="--enable-optimized --disable-terminfo --disable-zlib --enable-targets=host --disable-backtraces --disable-crash-overrides --disable-expensive-checks --disable-debug-runtime --disable-assertions --enable-shared">
+    <branch repo="llvm.org"
+            module="/releases/3.7.0/llvm-3.7.0.src.tar.xz" version="3.7.0" checkoutdir="llvm-3.7.0"
+            hash="sha256:ab45895f9dcdad1e140a3a79fd709f64b05ad7364e308c0e582c5b02e9cc3153"/>
+  </autotools>
+
   <!-- Dependencies listed below this point are not thought to affect test results, and are only
        included because they themselves depend on other dependencies built by jhbuild. -->
 
index 7277dae..88b7a77 100644 (file)
@@ -17,6 +17,7 @@
 
 import sys
 import os
+import platform
 
 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../jhbuild") )
 import jhbuildrc_common
@@ -33,7 +34,14 @@ module_makeargs['gtk+'] = 'LDFLAGS="-lm" ' + makeargs
 # annotations sooner rather than later.
 autogenargs='--enable-introspection'
 
+# LLVM requires that builddir != srcdir, and it's not possible to do that in jhbuild only
+# for a module, so we do it here globally since it's a good idea for all other modules as well.
+buildroot = os.path.join(os.path.dirname(checkoutroot), "Build")
+
 if use_lib64:
     os.environ['LLVMPIPE_LIBGL_PATH'] = os.path.abspath(os.path.join(checkoutroot, 'Mesa', 'lib64', 'gallium'))
 else:
     os.environ['LLVMPIPE_LIBGL_PATH'] = os.path.abspath(os.path.join(checkoutroot, 'Mesa', 'lib', 'gallium'))
+
+if 'x86_64' in platform.machine():
+    conditions.add('x86_64')
diff --git a/Tools/gtk/patches/llvm-elf-add-stackmaps-arm64.patch b/Tools/gtk/patches/llvm-elf-add-stackmaps-arm64.patch
deleted file mode 100644 (file)
index caa8c1f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/lib/Target/AArch64/AArch64AsmPrinter.cpp b/lib/Target/AArch64/AArch64AsmPrinter.cpp
-index 8bee4f5..bfbbaac 100644
---- a/lib/Target/AArch64/AArch64AsmPrinter.cpp
-+++ b/lib/Target/AArch64/AArch64AsmPrinter.cpp
-@@ -154,6 +154,8 @@ void AArch64AsmPrinter::EmitEndOfAsmFile(Module &M) {
-       }
-       Stubs.clear();
-     }
-+
-+    SM.serializeToStackMapSection();
-   }
- }
diff --git a/Tools/gtk/patches/llvm-elf-add-stackmaps.patch b/Tools/gtk/patches/llvm-elf-add-stackmaps.patch
deleted file mode 100644 (file)
index 877214d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-commit ec9de4677ac61f2164d7c80cae5da0008189efa3
-Author: Philip Reames <listmail@philipreames.com>
-Date:   Fri Aug 1 18:47:09 2014 +0000
-
-    Add support for StackMap section for ELF/Linux systems
-    
-    This patch adds code to emits the StackMap section on ELF systems. This section is required to support llvm.experimental.stackmap and llvm.experimental.patchpoint intrinsics.
-    
-    Reviewers: ributzka, echristo
-    
-    Differential Revision: http://reviews.llvm.org/D4574
-    
-    
-    
-    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214538 91177308-0d34-0410-b5e6-96231b3b80d8
-
-diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp
-index df5787c..da707d8 100644
---- a/lib/MC/MCObjectFileInfo.cpp
-+++ b/lib/MC/MCObjectFileInfo.cpp
-@@ -583,6 +583,12 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
-   DwarfAddrSection =
-     Ctx->getELFSection(".debug_addr", ELF::SHT_PROGBITS, 0,
-                        SectionKind::getMetadata());
-+
-+  StackMapSection =
-+    Ctx->getELFSection(".llvm_stackmaps", ELF::SHT_PROGBITS,
-+                       ELF::SHF_ALLOC,
-+                       SectionKind::getMetadata());
-+
- }
-diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp
-index 3c22e88..fc0d408 100644
---- a/lib/Target/X86/X86AsmPrinter.cpp
-+++ b/lib/Target/X86/X86AsmPrinter.cpp
-@@ -736,6 +736,8 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) {
-       }
-       Stubs.clear();
-     }
-+
-+    SM.serializeToStackMapSection();
-   }
- }
diff --git a/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch b/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range-arm64.patch
deleted file mode 100644 (file)
index be4412a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp
-index 7886ab6..96929e5 100644
---- a/lib/MC/MCObjectFileInfo.cpp
-+++ b/lib/MC/MCObjectFileInfo.cpp
-@@ -284,6 +284,17 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
-         ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr;
-     }
-     break;
-+  case Triple::aarch64:
-+    if (RelocM == Reloc::PIC_) {
-+      FDECFIEncoding = dwarf::DW_EH_PE_pcrel |
-+        ((CMModel == CodeModel::Small || CMModel == CodeModel::Medium)
-+         ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8);
-+    } else {
-+      FDECFIEncoding =
-+        (CMModel == CodeModel::Small || CMModel == CodeModel::Medium)
-+        ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr;
-+    }
-+    break;
-   default:
-     FDECFIEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
-     break;
diff --git a/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch b/Tools/gtk/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch
deleted file mode 100644 (file)
index 63004eb..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-commit 21bcdeb1d65b4be0d716693f3dcabd2e8a7c6386
-Author: Joerg Sonnenberger <joerg@bec.de>
-Date:   Tue Nov 25 13:37:55 2014 +0000
-
-    Reapply 222538 and update tests to explicitly request small code model
-    and PIC:
-    
-    Allow FDE references outside the +/-2GB range supported by PC relative
-    offsets for code models other than small/medium. For JIT application,
-    memory layout is less controlled and can result in truncations
-    otherwise.
-    
-    Patch from Akos Kiss.
-    
-    Differential Revision: http://reviews.llvm.org/D6079
-    
-    
-    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222760 91177308-0d34-0410-b5e6-96231b3b80d8
-
-diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp
-index 7886ab6..96929e5 100644
---- a/lib/MC/MCObjectFileInfo.cpp
-+++ b/lib/MC/MCObjectFileInfo.cpp
-@@ -273,6 +273,17 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
-   case Triple::mips64el:
-     FDECFIEncoding = dwarf::DW_EH_PE_sdata8;
-     break;
-+  case Triple::x86_64:
-+    if (RelocM == Reloc::PIC_) {
-+      FDECFIEncoding = dwarf::DW_EH_PE_pcrel |
-+        ((CMModel == CodeModel::Small || CMModel == CodeModel::Medium)
-+         ? dwarf::DW_EH_PE_sdata4 : dwarf::DW_EH_PE_sdata8);
-+    } else {
-+      FDECFIEncoding =
-+        (CMModel == CodeModel::Small || CMModel == CodeModel::Medium)
-+        ? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr;
-+    }
-+    break;
-   default:
-     FDECFIEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
-     break;
-diff --git a/test/MC/ELF/cfi-adjust-cfa-offset.s b/test/MC/ELF/cfi-adjust-cfa-offset.s
-index 9d639f7..f31a6b0 100644
---- a/test/MC/ELF/cfi-adjust-cfa-offset.s
-+++ b/test/MC/ELF/cfi-adjust-cfa-offset.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-advance-loc2.s b/test/MC/ELF/cfi-advance-loc2.s
-index 98caa018..c11ccaf 100644
---- a/test/MC/ELF/cfi-advance-loc2.s
-+++ b/test/MC/ELF/cfi-advance-loc2.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- // test that this produces a correctly encoded cfi_advance_loc2
-diff --git a/test/MC/ELF/cfi-def-cfa-offset.s b/test/MC/ELF/cfi-def-cfa-offset.s
-index 59f7400..93158ce 100644
---- a/test/MC/ELF/cfi-def-cfa-offset.s
-+++ b/test/MC/ELF/cfi-def-cfa-offset.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-def-cfa-register.s b/test/MC/ELF/cfi-def-cfa-register.s
-index 178ba32..8c55053 100644
---- a/test/MC/ELF/cfi-def-cfa-register.s
-+++ b/test/MC/ELF/cfi-def-cfa-register.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-def-cfa.s b/test/MC/ELF/cfi-def-cfa.s
-index dfb0d4b..f0b4934 100644
---- a/test/MC/ELF/cfi-def-cfa.s
-+++ b/test/MC/ELF/cfi-def-cfa.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-escape.s b/test/MC/ELF/cfi-escape.s
-index 5394ee4..3b76746 100644
---- a/test/MC/ELF/cfi-escape.s
-+++ b/test/MC/ELF/cfi-escape.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-offset.s b/test/MC/ELF/cfi-offset.s
-index a65b4fc..02f31ba 100644
---- a/test/MC/ELF/cfi-offset.s
-+++ b/test/MC/ELF/cfi-offset.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-register.s b/test/MC/ELF/cfi-register.s
-index 9441770..3433bef 100644
---- a/test/MC/ELF/cfi-register.s
-+++ b/test/MC/ELF/cfi-register.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-rel-offset.s b/test/MC/ELF/cfi-rel-offset.s
-index 0dc69c8..f51b2d3 100644
---- a/test/MC/ELF/cfi-rel-offset.s
-+++ b/test/MC/ELF/cfi-rel-offset.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-rel-offset2.s b/test/MC/ELF/cfi-rel-offset2.s
-index 360e7b0..0ce8d03 100644
---- a/test/MC/ELF/cfi-rel-offset2.s
-+++ b/test/MC/ELF/cfi-rel-offset2.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-remember.s b/test/MC/ELF/cfi-remember.s
-index 3a38948..c98695a 100644
---- a/test/MC/ELF/cfi-remember.s
-+++ b/test/MC/ELF/cfi-remember.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-restore.s b/test/MC/ELF/cfi-restore.s
-index e225797..99a74e7 100644
---- a/test/MC/ELF/cfi-restore.s
-+++ b/test/MC/ELF/cfi-restore.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-same-value.s b/test/MC/ELF/cfi-same-value.s
-index 2d37f4d..b7329d1 100644
---- a/test/MC/ELF/cfi-same-value.s
-+++ b/test/MC/ELF/cfi-same-value.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-signal-frame.s b/test/MC/ELF/cfi-signal-frame.s
-index 98deb0a..9558d7b 100644
---- a/test/MC/ELF/cfi-signal-frame.s
-+++ b/test/MC/ELF/cfi-signal-frame.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sd | FileCheck %s
- f:
-         .cfi_startproc
-diff --git a/test/MC/ELF/cfi-undefined.s b/test/MC/ELF/cfi-undefined.s
-index 568b315..09000c9 100644
---- a/test/MC/ELF/cfi-undefined.s
-+++ b/test/MC/ELF/cfi-undefined.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f:
-       .cfi_startproc
-diff --git a/test/MC/ELF/cfi-window-save.s b/test/MC/ELF/cfi-window-save.s
-index b083901..dd20164 100644
---- a/test/MC/ELF/cfi-window-save.s
-+++ b/test/MC/ELF/cfi-window-save.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- # Should use SPARC as the target to test this. However, SPARC does not
- # use MC yet.
-diff --git a/test/MC/ELF/cfi-zero-addr-delta.s b/test/MC/ELF/cfi-zero-addr-delta.s
-index 8662839..61118ec 100644
---- a/test/MC/ELF/cfi-zero-addr-delta.s
-+++ b/test/MC/ELF/cfi-zero-addr-delta.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- // Test that we don't produce a DW_CFA_advance_loc 0
-diff --git a/test/MC/ELF/cfi.s b/test/MC/ELF/cfi.s
-index 21be615..42b0189 100644
---- a/test/MC/ELF/cfi.s
-+++ b/test/MC/ELF/cfi.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr -sd | FileCheck %s
-+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -s -sr -sd | FileCheck %s
- f1:
-         .cfi_startproc
-diff --git a/test/MC/ELF/pr19430.s b/test/MC/ELF/pr19430.s
-index a1e5246..528193d 100644
---- a/test/MC/ELF/pr19430.s
-+++ b/test/MC/ELF/pr19430.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r | FileCheck %s
-+// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-readobj -r | FileCheck %s
- // Test that we can use .cfi_startproc without a global symbol.
-diff --git a/test/MC/X86/fde-reloc.s b/test/MC/X86/fde-reloc.s
-index 63ac976..9b5de15 100644
---- a/test/MC/X86/fde-reloc.s
-+++ b/test/MC/X86/fde-reloc.s
-@@ -1,4 +1,6 @@
--// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s
-+// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux \
-+// RUN: -relocation-model=pic -code-model=small \
-+// RUN: | llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s
- // RUN: llvm-mc -filetype=obj %s -o - -triple i686-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=I686 %s
- // PR15448
index 4cb3149..84f9965 100755 (executable)
@@ -24,7 +24,7 @@ import shlex
 import subprocess
 import sys
 
-jhbuild_revision = 'c0cb46177d79189ffe0f760703c732f1c7ea8b29'
+jhbuild_revision = '3.12.0'
 
 def determine_platform():
     if '--efl' in sys.argv: