summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2019-05-04 01:29:20 +0000
committer Eric Hameleers <alien@slackware.com>2019-05-04 08:59:47 +0200
commit125048ad7d212c1f226b709697505b0ee6a079e4 (patch)
tree4d930a5b4d508518dedfc25375251fe24dda7b92
parentfe8c535f50697455b55b8ded880317ac33910704 (diff)
downloadcurrent-20190504012920.tar.gz
current-20190504012920.tar.xz
Sat May 4 01:29:20 UTC 201920190504012920
d/gcc-9.1.0-x86_64-1.txz: Upgraded. d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded. d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded. d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded. d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded. d/gcc-go-9.1.0-x86_64-1.txz: Upgraded. Shared library .so-version bump. d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded. d/libtool-2.4.6-x86_64-11.txz: Rebuilt. Recompiled to update embedded GCC version number. d/llvm-8.0.0-x86_64-2.txz: Rebuilt. Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf. d/swig-4.0.0-x86_64-1.txz: Upgraded. l/glib2-2.60.2-x86_64-1.txz: Upgraded. l/qt-4.8.7-x86_64-13.txz: Rebuilt. Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and possibly other projects that use qt4).
-rw-r--r--ChangeLog.rss31
-rw-r--r--ChangeLog.txt19
-rw-r--r--FILELIST.TXT315
-rwxr-xr-xrecompress.sh73
-rwxr-xr-xsource/d/gcc/gcc.SlackBuild12
-rw-r--r--source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch351
-rw-r--r--source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch577
-rw-r--r--source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch45
-rw-r--r--source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch194
-rw-r--r--source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch269
-rw-r--r--source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch167
-rw-r--r--source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch103
-rw-r--r--source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch58
-rwxr-xr-xsource/d/libtool/libtool.SlackBuild2
-rwxr-xr-xsource/d/llvm/llvm.SlackBuild3
-rwxr-xr-xsource/d/swig/swig.SlackBuild10
-rw-r--r--source/l/qt/patches/qt-4.8-poll.patch812
-rw-r--r--source/l/qt/patches/qt-aarch64.patch514
-rw-r--r--source/l/qt/patches/qt-cupsEnumDests.patch238
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch84
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch69
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch41
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch20
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch36
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch (renamed from source/l/qt/qt.qtreeview.crash.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch27
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch10
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch13
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch (renamed from source/l/qt/qt.icu4c.nodebug.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch12
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch14
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch16
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch24
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch84
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch (renamed from source/l/qt/qt.QTBUG-35459.diff)2
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch29
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch19
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch22
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch19
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch12
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch28
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch16
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch (renamed from source/l/qt/qt.QTBUG-22829.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch (renamed from source/l/qt/qt.qclipboard_fix_recursive.patch)8
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch (renamed from source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch (renamed from source/l/qt/qt.qclipboard_delay.patch)4
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch31
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch351
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch (renamed from source/l/qt/qt.qsystemtrayicon-plugin-system.diff)92
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch (renamed from source/l/qt/qt.QT_VERSION_CHECK.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch137
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch12
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch45
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch (renamed from source/l/qt/qt.gcc6.diff)4
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch13
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch (renamed from source/l/qt/qt.icu59.c++11.diff)0
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch28
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch13
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch (renamed from source/l/qt/qt4.openssl-1.1.diff)622
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch40
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch12
-rw-r--r--source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch17
-rw-r--r--source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch50
-rw-r--r--source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch12
-rwxr-xr-xsource/l/qt/qt-nowebkit.SlackBuild98
-rw-r--r--source/l/qt/qt.alsa-1.1.diff12
-rw-r--r--source/l/qt/qt.fix.broken.gif.crash.diff16
-rw-r--r--source/l/qt/qt.icu59.patch11
-rw-r--r--source/l/qt/qt.mysql.h.diff12
-rw-r--r--source/l/qt/qt.webkit-no_Werror.patch11
70 files changed, 3628 insertions, 2413 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index 55750d135..81c6ba725 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,37 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Thu, 2 May 2019 21:37:38 GMT</pubDate>
- <lastBuildDate>Fri, 3 May 2019 06:59:42 GMT</lastBuildDate>
+ <pubDate>Sat, 4 May 2019 01:29:20 GMT</pubDate>
+ <lastBuildDate>Sat, 4 May 2019 06:59:43 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.11</generator>
<item>
+ <title>Sat, 4 May 2019 01:29:20 GMT</title>
+ <pubDate>Sat, 4 May 2019 01:29:20 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20190504012920</link>
+ <guid isPermaLink="false">20190504012920</guid>
+ <description>
+ <![CDATA[<pre>
+d/gcc-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-go-9.1.0-x86_64-1.txz: Upgraded.
+ Shared library .so-version bump.
+d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded.
+d/libtool-2.4.6-x86_64-11.txz: Rebuilt.
+ Recompiled to update embedded GCC version number.
+d/llvm-8.0.0-x86_64-2.txz: Rebuilt.
+ Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf.
+d/swig-4.0.0-x86_64-1.txz: Upgraded.
+l/glib2-2.60.2-x86_64-1.txz: Upgraded.
+l/qt-4.8.7-x86_64-13.txz: Rebuilt.
+ Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and
+ possibly other projects that use qt4).
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Thu, 2 May 2019 21:37:38 GMT</title>
<pubDate>Thu, 2 May 2019 21:37:38 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20190502213738</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index a7f1aafad..904487d6b 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,22 @@
+Sat May 4 01:29:20 UTC 2019
+d/gcc-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded.
+d/gcc-go-9.1.0-x86_64-1.txz: Upgraded.
+ Shared library .so-version bump.
+d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded.
+d/libtool-2.4.6-x86_64-11.txz: Rebuilt.
+ Recompiled to update embedded GCC version number.
+d/llvm-8.0.0-x86_64-2.txz: Rebuilt.
+ Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf.
+d/swig-4.0.0-x86_64-1.txz: Upgraded.
+l/glib2-2.60.2-x86_64-1.txz: Upgraded.
+l/qt-4.8.7-x86_64-13.txz: Rebuilt.
+ Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and
+ possibly other projects that use qt4).
++--------------------------+
Thu May 2 21:37:38 UTC 2019
a/kernel-firmware-20190502_92e17d0-noarch-1.txz: Upgraded.
a/kernel-generic-4.19.38-x86_64-1.txz: Upgraded.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index 1e9e2f375..cc62e8da0 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Thu May 2 21:50:06 UTC 2019
+Sat May 4 01:41:14 UTC 2019
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2019-05-02 21:37 .
+drwxr-xr-x 12 root root 4096 2019-05-04 01:29 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 14341 2018-11-29 05:40 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 913678 2019-05-01 20:01 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-05-01 20:01 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 913680 2019-05-02 21:50 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-05-02 21:50 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 620320 2019-05-02 21:37 ./ChangeLog.txt
+-rw-r--r-- 1 root root 621130 2019-05-04 01:29 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2019-05-02 21:37 ./EFI/BOOT
-rw-r--r-- 1 root root 1253376 2018-02-24 20:49 ./EFI/BOOT/bootx64.efi
@@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2019-05-02 21:37 ./EFI/BOOT
-rwxr-xr-x 1 root root 2494 2018-02-24 20:49 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1201679 2019-05-01 20:00 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1201681 2019-05-02 21:50 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 732383 2019-05-02 21:47 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 732382 2019-05-04 01:39 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3635 2019-05-02 20:16 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@@ -786,11 +786,11 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
-drwxr-xr-x 18 root root 4096 2019-05-02 21:48 ./slackware64
--rw-r--r-- 1 root root 290566 2019-05-02 21:48 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-05-02 21:48 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 361941 2019-05-02 21:45 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 3647716 2019-05-02 21:46 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2019-05-04 01:39 ./slackware64
+-rw-r--r-- 1 root root 290563 2019-05-04 01:39 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-05-04 01:39 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 361940 2019-05-04 01:36 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 3654325 2019-05-04 01:37 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
drwxr-xr-x 2 root root 28672 2019-05-02 21:45 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt
@@ -1389,7 +1389,7 @@ drwxr-xr-x 2 root root 20480 2019-05-01 19:56 ./slackware64/ap
-rw-r--r-- 1 root root 506 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txt
-rw-r--r-- 1 root root 3008036 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d
+drwxr-xr-x 2 root root 20480 2019-05-04 01:36 ./slackware64/d
-rw-r--r-- 1 root root 360 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txt
-rw-r--r-- 1 root root 3072512 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txz.asc
@@ -1432,27 +1432,27 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d
-rw-r--r-- 1 root root 371 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txt
-rw-r--r-- 1 root root 281556 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txz.asc
--rw-r--r-- 1 root root 310 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 16669668 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 512 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 6924580 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 255 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 9545388 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 584 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 8295264 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 414 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 14882592 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 572 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 12448652 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txz.asc
--rw-r--r-- 1 root root 463 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txt
--rw-r--r-- 1 root root 7043852 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 310 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 17163092 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 512 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 7146428 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 255 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 9941572 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 584 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 8543852 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 414 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 15270596 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 572 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 13098060 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 463 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txt
+-rw-r--r-- 1 root root 7226736 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 749 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txt
-rw-r--r-- 1 root root 4202232 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txz
-rw-r--r-- 1 root root 163 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txz.asc
@@ -1488,12 +1488,12 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d
-rw-r--r-- 1 root root 332 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txt
-rw-r--r-- 1 root root 915264 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txz
-rw-r--r-- 1 root root 163 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txz.asc
--rw-r--r-- 1 root root 498 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txt
--rw-r--r-- 1 root root 428564 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txz
--rw-r--r-- 1 root root 163 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txz.asc
--rw-r--r-- 1 root root 367 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txt
--rw-r--r-- 1 root root 61203300 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 498 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txt
+-rw-r--r-- 1 root root 428532 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txz
+-rw-r--r-- 1 root root 163 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txz.asc
+-rw-r--r-- 1 root root 367 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txt
+-rw-r--r-- 1 root root 60938696 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txz
+-rw-r--r-- 1 root root 163 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txz.asc
-rw-r--r-- 1 root root 473 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txt
-rw-r--r-- 1 root root 211152 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txz.asc
@@ -1574,9 +1574,9 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d
-rw-r--r-- 1 root root 547 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txt
-rw-r--r-- 1 root root 4850688 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 559 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txt
--rw-r--r-- 1 root root 2604416 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txz
--rw-r--r-- 1 root root 163 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 559 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txt
+-rw-r--r-- 1 root root 2653016 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 728 2018-11-21 20:59 ./slackware64/d/tagfile
-rw-r--r-- 1 root root 394 2019-04-08 22:31 ./slackware64/d/vala-0.44.3-x86_64-1.txt
-rw-r--r-- 1 root root 2129716 2019-04-08 22:31 ./slackware64/d/vala-0.44.3-x86_64-1.txz
@@ -2454,7 +2454,7 @@ drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag.ez
-rw-r--r-- 1 root root 1500 2018-03-01 07:54 ./slackware64/kdei/tagfile
-drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l
+drwxr-xr-x 2 root root 69632 2019-05-04 01:36 ./slackware64/l
-rw-r--r-- 1 root root 338 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txt
-rw-r--r-- 1 root root 149752 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz.asc
@@ -2674,9 +2674,9 @@ drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l
-rw-r--r-- 1 root root 300 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txt
-rw-r--r-- 1 root root 110244 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txz.asc
--rw-r--r-- 1 root root 407 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txt
--rw-r--r-- 1 root root 3798900 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txz
--rw-r--r-- 1 root root 163 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 407 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txt
+-rw-r--r-- 1 root root 3803628 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 387 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txt
-rw-r--r-- 1 root root 5417112 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txz
-rw-r--r-- 1 root root 163 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txz.asc
@@ -3296,9 +3296,9 @@ drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l
-rw-r--r-- 1 root root 510 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txt
-rw-r--r-- 1 root root 81152 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 263 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txt
--rw-r--r-- 1 root root 32847256 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txz
--rw-r--r-- 1 root root 163 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txz.asc
+-rw-r--r-- 1 root root 263 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txt
+-rw-r--r-- 1 root root 32883680 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txz
+-rw-r--r-- 1 root root 163 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txz.asc
-rw-r--r-- 1 root root 545 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txt
-rw-r--r-- 1 root root 249828 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txz.asc
@@ -5001,11 +5001,11 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
-drwxr-xr-x 19 root root 4096 2019-05-02 21:50 ./source
--rw-r--r-- 1 root root 463020 2019-05-02 21:50 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-05-02 21:50 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 654209 2019-05-02 21:49 ./source/FILE_LIST
--rw-r--r-- 1 root root 16729052 2019-05-02 21:49 ./source/MANIFEST.bz2
+drwxr-xr-x 19 root root 4096 2019-05-04 01:41 ./source
+-rw-r--r-- 1 root root 465913 2019-05-04 01:41 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-05-04 01:41 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 657497 2019-05-04 01:40 ./source/FILE_LIST
+-rw-r--r-- 1 root root 16785770 2019-05-04 01:40 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
drwxr-xr-x 111 root root 4096 2019-03-16 20:25 ./source/a
-rw-r--r-- 1 root root 877 2018-11-21 18:49 ./source/a/FTBFSlog
@@ -6481,7 +6481,7 @@ drwxr-xr-x 2 root root 4096 2019-02-04 20:23 ./source/ap/zsh
-rwxr-xr-x 1 root root 4342 2018-09-18 22:04 ./source/ap/zsh/zsh.SlackBuild
-rw-r--r-- 1 root root 23 2018-09-14 17:50 ./source/ap/zsh/zsh.url
-rwxr-xr-x 1 root root 11921 2018-04-23 19:29 ./source/buildlist-from-changelog.sh
-drwxr-xr-x 57 root root 4096 2019-04-19 19:13 ./source/d
+drwxr-xr-x 57 root root 4096 2019-05-03 22:23 ./source/d
drwxr-xr-x 2 root root 4096 2019-04-14 18:02 ./source/d/Cython
-rw-r--r-- 1 root root 1587999 2019-04-14 10:41 ./source/d/Cython/Cython-0.29.7.tar.lz
-rwxr-xr-x 1 root root 2740 2019-02-28 19:24 ./source/d/Cython/Cython.SlackBuild
@@ -6570,24 +6570,15 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/flex
-rw-r--r-- 1 root root 473 2017-05-06 20:49 ./source/d/flex/flex-2.6.4.tar.lz.sig
-rwxr-xr-x 1 root root 4301 2018-09-18 22:04 ./source/d/flex/flex.SlackBuild
-rw-r--r-- 1 root root 823 2018-02-27 06:13 ./source/d/flex/slack-desc
-drwxr-xr-x 3 root root 4096 2019-03-04 21:23 ./source/d/gcc
+drwxr-xr-x 3 root root 4096 2019-05-03 18:35 ./source/d/gcc
-rw-r--r-- 1 root root 224 2015-08-03 18:13 ./source/d/gcc/c89.sh
-rw-r--r-- 1 root root 215 2015-08-03 18:13 ./source/d/gcc/c99.sh
-rwxr-xr-x 1 root root 2966 2018-06-26 19:14 ./source/d/gcc/fetch-from-svn-and-prep-tarball.sh
--rw-r--r-- 1 root root 63694700 2019-02-22 14:51 ./source/d/gcc/gcc-8.3.0.tar.xz
--rw-r--r-- 1 root root 65 2019-02-22 14:51 ./source/d/gcc/gcc-8.3.0.tar.xz.sig
+-rw-r--r-- 1 root root 70546856 2019-05-03 08:42 ./source/d/gcc/gcc-9.1.0.tar.xz
+-rw-r--r-- 1 root root 65 2019-05-03 08:42 ./source/d/gcc/gcc-9.1.0.tar.xz.sig
-rw-r--r-- 1 root root 535 2018-05-02 17:26 ./source/d/gcc/gcc-no_fixincludes.diff.gz
--rwxr-xr-x 1 root root 21564 2019-03-04 18:52 ./source/d/gcc/gcc.SlackBuild
-drwxr-xr-x 3 root root 4096 2019-03-04 18:46 ./source/d/gcc/patches
-drwxr-xr-x 2 root root 4096 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline
--rw-r--r-- 1 root root 3288 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch.gz
--rw-r--r-- 1 root root 6427 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch.gz
--rw-r--r-- 1 root root 774 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch.gz
--rw-r--r-- 1 root root 1515 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch.gz
--rw-r--r-- 1 root root 2658 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch.gz
--rw-r--r-- 1 root root 1659 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch.gz
--rw-r--r-- 1 root root 1396 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch.gz
--rw-r--r-- 1 root root 886 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch.gz
+-rwxr-xr-x 1 root root 20462 2019-05-03 17:28 ./source/d/gcc/gcc.SlackBuild
+drwxr-xr-x 2 root root 4096 2019-05-03 17:28 ./source/d/gcc/patches
-rw-r--r-- 1 root root 761 2018-06-26 01:39 ./source/d/gcc/slack-desc.gcc
-rw-r--r-- 1 root root 968 2018-02-27 06:13 ./source/d/gcc/slack-desc.gcc-brig
-rw-r--r-- 1 root root 710 2018-06-26 01:38 ./source/d/gcc/slack-desc.gcc-g++
@@ -6652,7 +6643,7 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/libtool
-rw-r--r-- 1 root root 385 2009-05-30 01:28 ./source/d/libtool/doinst.sh.gz
-rw-r--r-- 1 root root 973080 2015-02-16 10:16 ./source/d/libtool/libtool-2.4.6.tar.xz
-rw-r--r-- 1 root root 181 2015-02-16 10:16 ./source/d/libtool/libtool-2.4.6.tar.xz.sig
--rwxr-xr-x 1 root root 3668 2019-02-23 17:53 ./source/d/libtool/libtool.SlackBuild
+-rwxr-xr-x 1 root root 3668 2019-05-03 23:09 ./source/d/libtool/libtool.SlackBuild
-rw-r--r-- 1 root root 522 2014-10-28 16:01 ./source/d/libtool/libtool.no.moved.warning.diff.gz
-rw-r--r-- 1 root root 953 2018-02-27 06:13 ./source/d/libtool/slack-desc
drwxr-xr-x 2 root root 4096 2019-03-20 18:11 ./source/d/llvm
@@ -6665,7 +6656,7 @@ drwxr-xr-x 2 root root 4096 2019-03-20 18:11 ./source/d/llvm
-rw-r--r-- 1 root root 539040 2019-03-20 09:30 ./source/d/llvm/libcxxabi-8.0.0.src.tar.xz
-rw-r--r-- 1 root root 19602332 2019-03-20 09:30 ./source/d/llvm/lldb-8.0.0.src.tar.xz
-rw-r--r-- 1 root root 30503732 2019-03-20 09:30 ./source/d/llvm/llvm-8.0.0.src.tar.xz
--rwxr-xr-x 1 root root 9837 2019-03-20 18:11 ./source/d/llvm/llvm.SlackBuild
+-rwxr-xr-x 1 root root 9867 2019-05-02 22:40 ./source/d/llvm/llvm.SlackBuild
-rw-r--r-- 1 root root 452 2019-03-20 18:09 ./source/d/llvm/llvm.url
-rw-r--r-- 1 root root 415 2018-09-01 10:21 ./source/d/llvm/n_clang_allow_BUILD_SHARED_LIBRARY.patch.gz
-rw-r--r-- 1 root root 934384 2019-03-20 09:30 ./source/d/llvm/openmp-8.0.0.src.tar.xz
@@ -6833,10 +6824,10 @@ drwxr-xr-x 2 root root 4096 2019-04-25 18:08 ./source/d/subversion
-rw-r--r-- 1 root root 6548688 2019-04-23 20:20 ./source/d/subversion/subversion-1.12.0.tar.lz
-rwxr-xr-x 1 root root 6454 2019-04-25 18:09 ./source/d/subversion/subversion.SlackBuild
-rw-r--r-- 1 root root 470715 2019-04-25 06:03 ./source/d/subversion/svn-book-html.tar.bz2
-drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/swig
+drwxr-xr-x 2 root root 4096 2019-05-03 17:54 ./source/d/swig
-rw-r--r-- 1 root root 1013 2018-02-27 06:13 ./source/d/swig/slack-desc
--rw-r--r-- 1 root root 6002428 2017-01-27 23:54 ./source/d/swig/swig-3.0.12.tar.xz
--rwxr-xr-x 1 root root 3993 2018-09-18 22:04 ./source/d/swig/swig.SlackBuild
+-rw-r--r-- 1 root root 5833795 2019-04-28 18:54 ./source/d/swig/swig-4.0.0.tar.lz
+-rwxr-xr-x 1 root root 4010 2019-05-03 18:03 ./source/d/swig/swig.SlackBuild
-rw-r--r-- 1 root root 87 2013-06-05 09:05 ./source/d/swig/swig.url
drwxr-xr-x 2 root root 4096 2019-04-08 22:29 ./source/d/vala
-rw-r--r-- 1 root root 1718 2019-03-10 18:11 ./source/d/vala/disable-graphviz.patch.gz
@@ -8070,7 +8061,7 @@ drwxr-xr-x 2 root root 4096 2018-02-27 06:35 ./source/kdei/kde-l10n/slack
-rw-r--r-- 1 root root 648 2018-02-27 06:35 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa
-rw-r--r-- 1 root root 698 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN
-rw-r--r-- 1 root root 687 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW
-drwxr-xr-x 318 root root 12288 2019-04-27 19:35 ./source/l
+drwxr-xr-x 318 root root 12288 2019-05-03 22:25 ./source/l
drwxr-xr-x 3 root root 4096 2018-09-18 22:04 ./source/l/ConsoleKit2
-rw-r--r-- 1 root root 705880 2015-08-10 06:49 ./source/l/ConsoleKit2/ConsoleKit2-1.0.0.tar.xz
-rwxr-xr-x 1 root root 5326 2018-09-18 22:04 ./source/l/ConsoleKit2/ConsoleKit2.SlackBuild
@@ -8464,9 +8455,9 @@ drwxr-xr-x 2 root root 4096 2019-05-02 17:39 ./source/l/glib-networking
-rw-r--r-- 1 root root 346080 2001-03-15 14:59 ./source/l/glib/glib-1.2.10.tar.bz2
-rwxr-xr-x 1 root root 5427 2018-04-23 17:20 ./source/l/glib/glib.SlackBuild
-rw-r--r-- 1 root root 754 2018-02-27 06:12 ./source/l/glib/slack-desc
-drwxr-xr-x 2 root root 4096 2019-04-15 17:58 ./source/l/glib2
+drwxr-xr-x 2 root root 4096 2019-05-03 22:29 ./source/l/glib2
-rw-r--r-- 1 root root 516 2011-11-06 22:03 ./source/l/glib2/doinst.sh.gz
--rw-r--r-- 1 root root 4586668 2019-04-15 13:01 ./source/l/glib2/glib-2.60.1.tar.xz
+-rw-r--r-- 1 root root 4587388 2019-05-03 15:51 ./source/l/glib2/glib-2.60.2.tar.xz
-rwxr-xr-x 1 root root 5404 2019-03-04 22:08 ./source/l/glib2/glib2.SlackBuild
-rw-r--r-- 1 root root 898 2018-11-20 19:30 ./source/l/glib2/glib2.slackware.localtime.diff.gz
-rw-r--r-- 1 root root 999 2011-03-27 21:04 ./source/l/glib2/libglib2.csh
@@ -9553,7 +9544,7 @@ drwxr-xr-x 2 root root 4096 2019-02-28 19:27 ./source/l/qjson
-rw-r--r-- 1 root root 78461 2016-11-29 15:44 ./source/l/qjson/qjson-0.9.0.tar.lz
-rwxr-xr-x 1 root root 3480 2019-02-28 19:27 ./source/l/qjson/qjson.SlackBuild
-rw-r--r-- 1 root root 963 2018-11-29 19:17 ./source/l/qjson/slack-desc
-drwxr-xr-x 4 root root 4096 2019-03-28 21:45 ./source/l/qt
+drwxr-xr-x 5 root root 4096 2019-05-03 19:16 ./source/l/qt
drwxr-xr-x 2 root root 4096 2019-04-22 01:39 ./source/l/qt-gstreamer
-rw-r--r-- 1 root root 110 2009-08-31 04:24 ./source/l/qt-gstreamer/doinst.sh.gz
-rw-r--r-- 1 root root 313632 2014-07-08 18:41 ./source/l/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz
@@ -9563,29 +9554,61 @@ drwxr-xr-x 2 root root 4096 2019-04-22 01:39 ./source/l/qt-gstreamer
-rw-r--r-- 1 root root 348 2014-04-25 19:03 ./source/l/qt/Qt.pc
-rw-r--r-- 1 root root 327 2010-11-21 00:00 ./source/l/qt/README
-rw-r--r-- 1 root root 150 2011-12-16 11:41 ./source/l/qt/doinst.sh.gz
+drwxr-xr-x 2 root root 4096 2019-05-03 19:13 ./source/l/qt/patches
+-rw-r--r-- 1 root root 5820 2019-04-20 13:03 ./source/l/qt/patches/qt-4.8-poll.patch.gz
+-rw-r--r-- 1 root root 6444 2019-04-20 13:03 ./source/l/qt/patches/qt-aarch64.patch.gz
+-rw-r--r-- 1 root root 2358 2019-04-20 13:03 ./source/l/qt/patches/qt-cupsEnumDests.patch.gz
+-rw-r--r-- 1 root root 951 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch.gz
+-rw-r--r-- 1 root root 853 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch.gz
+-rw-r--r-- 1 root root 589 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch.gz
+-rw-r--r-- 1 root root 440 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch.gz
+-rw-r--r-- 1 root root 479 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch.gz
+-rw-r--r-- 1 root root 395 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch.gz
+-rw-r--r-- 1 root root 598 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch.gz
+-rw-r--r-- 1 root root 319 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch.gz
+-rw-r--r-- 1 root root 373 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch.gz
+-rw-r--r-- 1 root root 507 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch.gz
+-rw-r--r-- 1 root root 454 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch.gz
+-rw-r--r-- 1 root root 514 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch.gz
+-rw-r--r-- 1 root root 448 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch.gz
+-rw-r--r-- 1 root root 568 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch.gz
+-rw-r--r-- 1 root root 1359 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch.gz
+-rw-r--r-- 1 root root 400 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch.gz
+-rw-r--r-- 1 root root 641 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch.gz
+-rw-r--r-- 1 root root 520 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch.gz
+-rw-r--r-- 1 root root 622 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch.gz
+-rw-r--r-- 1 root root 535 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch.gz
+-rw-r--r-- 1 root root 382 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch.gz
+-rw-r--r-- 1 root root 717 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch.gz
+-rw-r--r-- 1 root root 480 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch.gz
+-rw-r--r-- 1 root root 502 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch.gz
+-rw-r--r-- 1 root root 1180 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch.gz
+-rw-r--r-- 1 root root 969 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch.gz
+-rw-r--r-- 1 root root 304 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch.gz
+-rw-r--r-- 1 root root 552 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch.gz
+-rw-r--r-- 1 root root 3023 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch.gz
+-rw-r--r-- 1 root root 9758 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch.gz
+-rw-r--r-- 1 root root 401 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch.gz
+-rw-r--r-- 1 root root 1224 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch.gz
+-rw-r--r-- 1 root root 387 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch.gz
+-rw-r--r-- 1 root root 653 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch.gz
+-rw-r--r-- 1 root root 599 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch.gz
+-rw-r--r-- 1 root root 367 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch.gz
+-rw-r--r-- 1 root root 616 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch.gz
+-rw-r--r-- 1 root root 503 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch.gz
+-rw-r--r-- 1 root root 300 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch.gz
+-rw-r--r-- 1 root root 6083 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch.gz
+-rw-r--r-- 1 root root 823 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch.gz
+-rw-r--r-- 1 root root 357 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch.gz
+-rw-r--r-- 1 root root 394 2019-04-20 13:03 ./source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch.gz
+-rw-r--r-- 1 root root 401 2019-04-20 13:03 ./source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch.gz
+-rw-r--r-- 1 root root 344 2019-04-20 13:03 ./source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch.gz
drwxr-xr-x 2 root root 4096 2008-10-03 13:21 ./source/l/qt/profile.d
-rw-r--r-- 1 root root 661 2008-10-03 20:23 ./source/l/qt/profile.d/qt4.csh
-rw-r--r-- 1 root root 561 2008-10-03 20:23 ./source/l/qt/profile.d/qt4.sh
-rw-r--r-- 1 root root 194364792 2015-05-25 14:57 ./source/l/qt/qt-everywhere-opensource-src-4.8.7.tar.xz
--rwxr-xr-x 1 root root 12967 2019-03-28 21:45 ./source/l/qt/qt-nowebkit.SlackBuild
--rw-r--r-- 1 root root 469 2017-03-21 13:24 ./source/l/qt/qt.QTBUG-22829.diff.gz
--rw-r--r-- 1 root root 368 2017-03-21 13:24 ./source/l/qt/qt.QTBUG-35459.diff.gz
--rw-r--r-- 1 root root 368 2017-03-21 13:24 ./source/l/qt/qt.QT_VERSION_CHECK.diff.gz
+-rwxr-xr-x 1 root root 16133 2019-05-03 21:03 ./source/l/qt/qt-nowebkit.SlackBuild
-rwxr-xr-x 1 root root 4340 2018-04-23 17:20 ./source/l/qt/qt.SlackBuild
--rw-r--r-- 1 root root 329 2017-03-21 13:24 ./source/l/qt/qt.alsa-1.1.diff.gz
--rw-r--r-- 1 root root 328 2014-04-25 18:43 ./source/l/qt/qt.fix.broken.gif.crash.diff.gz
--rw-r--r-- 1 root root 565 2017-03-21 13:24 ./source/l/qt/qt.gcc6.diff.gz
--rw-r--r-- 1 root root 963 2015-01-24 13:32 ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff.gz
--rw-r--r-- 1 root root 475 2017-10-26 15:06 ./source/l/qt/qt.icu4c.nodebug.diff.gz
--rw-r--r-- 1 root root 589 2018-01-31 19:29 ./source/l/qt/qt.icu59.c++11.diff.gz
--rw-r--r-- 1 root root 252 2017-08-12 13:51 ./source/l/qt/qt.icu59.patch.gz
--rw-r--r-- 1 root root 277 2008-04-03 01:53 ./source/l/qt/qt.mysql.h.diff.gz
--rw-r--r-- 1 root root 279 2015-01-24 14:30 ./source/l/qt/qt.qclipboard_delay.patch.gz
--rw-r--r-- 1 root root 1164 2015-01-24 14:29 ./source/l/qt/qt.qclipboard_fix_recursive.patch.gz
--rw-r--r-- 1 root root 9652 2015-01-24 14:21 ./source/l/qt/qt.qsystemtrayicon-plugin-system.diff.gz
--rw-r--r-- 1 root root 347 2017-03-21 13:24 ./source/l/qt/qt.qtreeview.crash.diff.gz
--rw-r--r-- 1 root root 479 2012-12-02 15:54 ./source/l/qt/qt.webkit-no_Werror.patch.gz
--rw-r--r-- 1 root root 5459 2018-05-06 19:48 ./source/l/qt/qt4.openssl-1.1.diff.gz
drwxr-xr-x 2 root root 4096 2018-02-27 06:12 ./source/l/qt/qtwebkit
-rw-r--r-- 1 root root 92 2015-04-27 09:54 ./source/l/qt/qtwebkit/doinst.sh.gz
-rw-r--r-- 1 root root 34279420 2015-04-25 12:14 ./source/l/qt/qtwebkit/qtwebkit-2.3.4.tar.xz
@@ -12398,55 +12421,55 @@ drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-firefox
-rw-r--r-- 1 root root 462 2009-07-01 06:05 ./source/xap/mozilla-firefox/mimeTypes.rdf.gz
-rw-r--r-- 1 root root 680 2009-07-01 13:28 ./source/xap/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff.gz
-rwxr-xr-x 1 root root 13818 2019-03-26 19:45 ./source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
--rw-r--r-- 1 root root 2748 2017-12-04 21:30 ./source/xap/mozilla-firefox/mozilla-firefox.desktop
--rw-r--r-- 1 root root 946 2018-11-03 19:51 ./source/xap/mozilla-firefox/slack-desc
--rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-firefox/unbreakdocs.diff.gz
-drwxr-xr-x 4 root root 4096 2019-03-26 23:02 ./source/xap/mozilla-thunderbird
-drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-thunderbird/autoconf
--rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz
--rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz
--rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./source/xap/mozilla-thunderbird/autoconf/autoconf.build
-drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold
--rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./source/xap/mozilla-thunderbird/gold/gold
-lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold/ld -> gold
--rw-r--r-- 1 root root 312 2012-03-28 18:01 ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch.gz
--rwxr-xr-x 1 root root 11782 2019-03-26 21:42 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
--rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.desktop
--rw-r--r-- 1 root root 1130 2018-02-27 06:47 ./source/xap/mozilla-thunderbird/slack-desc
--rw-r--r-- 1 root root 343 2017-06-14 23:43 ./source/xap/mozilla-thunderbird/tb.ui.scrollToClick.diff.gz
--rw-r--r-- 1 root root 288706632 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz
--rw-r--r-- 1 root root 836 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz.asc
--rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-thunderbird/unbreakdocs.diff.gz
-drwxr-xr-x 2 root root 4096 2019-02-07 21:33 ./source/xap/network-manager-applet
--rw-r--r-- 1 root root 207 2012-08-10 23:59 ./source/xap/network-manager-applet/doinst.sh.gz
--rw-r--r-- 1 root root 1551392 2019-02-07 09:25 ./source/xap/network-manager-applet/network-manager-applet-1.8.20.tar.xz
--rwxr-xr-x 1 root root 4192 2018-09-18 22:04 ./source/xap/network-manager-applet/network-manager-applet.SlackBuild
--rw-r--r-- 1 root root 829 2018-02-27 06:13 ./source/xap/network-manager-applet/slack-desc
-drwxr-xr-x 2 root root 4096 2018-10-24 20:33 ./source/xap/pan
--rw-r--r-- 1 root root 1659450 2018-05-20 20:41 ./source/xap/pan/pan-0.145.tar.lz
--rwxr-xr-x 1 root root 4431 2018-10-24 20:33 ./source/xap/pan/pan.SlackBuild
--rw-r--r-- 1 root root 752 2018-02-27 06:13 ./source/xap/pan/slack-desc
-drwxr-xr-x 2 root root 4096 2019-03-06 19:15 ./source/xap/pavucontrol
--rw-r--r-- 1 root root 120 2013-11-05 03:45 ./source/xap/pavucontrol/doinst.sh.gz
--rw-r--r-- 1 root root 164485 2019-03-05 15:50 ./source/xap/pavucontrol/pavucontrol-4.0.tar.lz
--rwxr-xr-x 1 root root 3343 2019-03-06 19:15 ./source/xap/pavucontrol/pavucontrol.SlackBuild
--rw-r--r-- 1 root root 969 2019-03-06 19:09 ./source/xap/pavucontrol/slack-desc
-drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/pidgin
--rw-r--r-- 1 root root 172 2016-01-04 03:06 ./source/xap/pidgin/doinst.sh.gz
--rw-r--r-- 1 root root 355 2012-05-02 03:59 ./source/xap/pidgin/fix-gmain_h-compile-error.diff.gz
--rw-r--r-- 1 root root 6641203 2018-03-09 02:25 ./source/xap/pidgin/pidgin-2.13.0.tar.lz
--rw-r--r-- 1 root root 604129 2010-05-18 16:51 ./source/xap/pidgin/pidgin-encryption-3.1.tar.gz
--rwxr-xr-x 1 root root 7550 2018-09-18 22:04 ./source/xap/pidgin/pidgin.SlackBuild
--rw-r--r-- 1 root root 920 2018-02-27 06:13 ./source/xap/pidgin/slack-desc
-drwxr-xr-x 2 root root 4096 2019-01-02 22:46 ./source/xap/rdesktop
--rw-r--r-- 1 root root 250484 2019-01-02 14:21 ./source/xap/rdesktop/rdesktop-1.8.4.tar.xz
--rwxr-xr-x 1 root root 3809 2019-01-02 22:46 ./source/xap/rdesktop/rdesktop.SlackBuild
--rw-r--r-- 1 root root 850 2018-02-27 06:13 ./source/xap/rdesktop/slack-desc
-drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/rxvt-unicode
--rw-r--r-- 1 root root 222 2018-03-31 17:18 ./source/xap/rxvt-unicode/rxvt-unicode-256color.desktop
--rw-r--r-- 1 root root 712702 2016-01-23 20:09 ./source/xap/rxvt-unicode/rxvt-unicode-9.22.tar.lz
--rwxr-xr-x 1 root root 5651 2018-11-30 21:13 ./source/xap/rxvt-unicode/rxvt-unicode.SlackBuild
--rw-r--r-- 1 root root 207 2018-03-31 17:17 ./source/xap/rxvt-unicode/rxvt-unicode.desktop
+-rw-r--r-- 1 root root 2748 2017-12-04 21:30 ./source/xap/mozilla-firefox/mozilla-firefox.desktop
+-rw-r--r-- 1 root root 946 2018-11-03 19:51 ./source/xap/mozilla-firefox/slack-desc
+-rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-firefox/unbreakdocs.diff.gz
+drwxr-xr-x 4 root root 4096 2019-03-26 23:02 ./source/xap/mozilla-thunderbird
+drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-thunderbird/autoconf
+-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz
+-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz
+-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./source/xap/mozilla-thunderbird/autoconf/autoconf.build
+drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold
+-rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./source/xap/mozilla-thunderbird/gold/gold
+lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold/ld -> gold
+-rw-r--r-- 1 root root 312 2012-03-28 18:01 ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch.gz
+-rwxr-xr-x 1 root root 11782 2019-03-26 21:42 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
+-rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.desktop
+-rw-r--r-- 1 root root 1130 2018-02-27 06:47 ./source/xap/mozilla-thunderbird/slack-desc
+-rw-r--r-- 1 root root 343 2017-06-14 23:43 ./source/xap/mozilla-thunderbird/tb.ui.scrollToClick.diff.gz
+-rw-r--r-- 1 root root 288706632 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz
+-rw-r--r-- 1 root root 836 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz.asc
+-rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-thunderbird/unbreakdocs.diff.gz
+drwxr-xr-x 2 root root 4096 2019-02-07 21:33 ./source/xap/network-manager-applet
+-rw-r--r-- 1 root root 207 2012-08-10 23:59 ./source/xap/network-manager-applet/doinst.sh.gz
+-rw-r--r-- 1 root root 1551392 2019-02-07 09:25 ./source/xap/network-manager-applet/network-manager-applet-1.8.20.tar.xz
+-rwxr-xr-x 1 root root 4192 2018-09-18 22:04 ./source/xap/network-manager-applet/network-manager-applet.SlackBuild
+-rw-r--r-- 1 root root 829 2018-02-27 06:13 ./source/xap/network-manager-applet/slack-desc
+drwxr-xr-x 2 root root 4096 2018-10-24 20:33 ./source/xap/pan
+-rw-r--r-- 1 root root 1659450 2018-05-20 20:41 ./source/xap/pan/pan-0.145.tar.lz
+-rwxr-xr-x 1 root root 4431 2018-10-24 20:33 ./source/xap/pan/pan.SlackBuild
+-rw-r--r-- 1 root root 752 2018-02-27 06:13 ./source/xap/pan/slack-desc
+drwxr-xr-x 2 root root 4096 2019-03-06 19:15 ./source/xap/pavucontrol
+-rw-r--r-- 1 root root 120 2013-11-05 03:45 ./source/xap/pavucontrol/doinst.sh.gz
+-rw-r--r-- 1 root root 164485 2019-03-05 15:50 ./source/xap/pavucontrol/pavucontrol-4.0.tar.lz
+-rwxr-xr-x 1 root root 3343 2019-03-06 19:15 ./source/xap/pavucontrol/pavucontrol.SlackBuild
+-rw-r--r-- 1 root root 969 2019-03-06 19:09 ./source/xap/pavucontrol/slack-desc
+drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/pidgin
+-rw-r--r-- 1 root root 172 2016-01-04 03:06 ./source/xap/pidgin/doinst.sh.gz
+-rw-r--r-- 1 root root 355 2012-05-02 03:59 ./source/xap/pidgin/fix-gmain_h-compile-error.diff.gz
+-rw-r--r-- 1 root root 6641203 2018-03-09 02:25 ./source/xap/pidgin/pidgin-2.13.0.tar.lz
+-rw-r--r-- 1 root root 604129 2010-05-18 16:51 ./source/xap/pidgin/pidgin-encryption-3.1.tar.gz
+-rwxr-xr-x 1 root root 7550 2018-09-18 22:04 ./source/xap/pidgin/pidgin.SlackBuild
+-rw-r--r-- 1 root root 920 2018-02-27 06:13 ./source/xap/pidgin/slack-desc
+drwxr-xr-x 2 root root 4096 2019-01-02 22:46 ./source/xap/rdesktop
+-rw-r--r-- 1 root root 250484 2019-01-02 14:21 ./source/xap/rdesktop/rdesktop-1.8.4.tar.xz
+-rwxr-xr-x 1 root root 3809 2019-01-02 22:46 ./source/xap/rdesktop/rdesktop.SlackBuild
+-rw-r--r-- 1 root root 850 2018-02-27 06:13 ./source/xap/rdesktop/slack-desc
+drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/rxvt-unicode
+-rw-r--r-- 1 root root 222 2018-03-31 17:18 ./source/xap/rxvt-unicode/rxvt-unicode-256color.desktop
+-rw-r--r-- 1 root root 712702 2016-01-23 20:09 ./source/xap/rxvt-unicode/rxvt-unicode-9.22.tar.lz
+-rwxr-xr-x 1 root root 5651 2018-11-30 21:13 ./source/xap/rxvt-unicode/rxvt-unicode.SlackBuild
+-rw-r--r-- 1 root root 207 2018-03-31 17:17 ./source/xap/rxvt-unicode/rxvt-unicode.desktop
-rw-r--r-- 1 root root 7758 2018-03-31 16:26 ./source/xap/rxvt-unicode/rxvt-unicode.utempter.diff.gz
-rw-r--r-- 1 root root 940 2018-03-31 16:58 ./source/xap/rxvt-unicode/slack-desc
drwxr-xr-x 2 root root 4096 2018-11-09 20:41 ./source/xap/sane
diff --git a/recompress.sh b/recompress.sh
index 78a6bfa7c..e854c3d49 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -45,14 +45,6 @@ gzip ./source/d/rust/link_libffi.diff
gzip ./source/d/vala/disable-graphviz.patch
gzip ./source/d/vala/no.gvc-compat.c.diff
gzip ./source/d/mercurial/doinst.sh
-gzip ./source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch
-gzip ./source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch
gzip ./source/d/gcc/gcc-no_fixincludes.diff
gzip ./source/d/doxygen/doxygen.9468ede.diff
gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch
@@ -819,26 +811,57 @@ gzip ./source/l/netpbm/netpbm-CVE-2017-2587.patch
gzip ./source/l/netpbm/netpbm-security-scripts.patch
gzip ./source/l/netpbm/netpbm-gcc4.patch
gzip ./source/l/netpbm/netpbm-noppmtompeg.patch
-gzip ./source/l/qt/qt.qtreeview.crash.diff
-gzip ./source/l/qt/qt.gcc6.diff
gzip ./source/l/qt/qtwebkit/qtwebkit.putByIndexBeyondVectorLengthWithArrayStorage.diff
gzip ./source/l/qt/qtwebkit/doinst.sh
-gzip ./source/l/qt/qt.qsystemtrayicon-plugin-system.diff
-gzip ./source/l/qt/qt.mysql.h.diff
-gzip ./source/l/qt/qt.icu59.patch
-gzip ./source/l/qt/qt.icu4c.nodebug.diff
-gzip ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff
-gzip ./source/l/qt/qt.webkit-no_Werror.patch
-gzip ./source/l/qt/qt.alsa-1.1.diff
-gzip ./source/l/qt/qt.icu59.c++11.diff
-gzip ./source/l/qt/qt.fix.broken.gif.crash.diff
-gzip ./source/l/qt/qt4.openssl-1.1.diff
-gzip ./source/l/qt/qt.QT_VERSION_CHECK.diff
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
+gzip ./source/l/qt/patches/qt-aarch64.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch
+gzip ./source/l/qt/patches/qt-4.8-poll.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
+gzip ./source/l/qt/patches/qt-cupsEnumDests.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
+gzip ./source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch
+gzip ./source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
+gzip ./source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch
+gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
gzip ./source/l/qt/doinst.sh
-gzip ./source/l/qt/qt.qclipboard_delay.patch
-gzip ./source/l/qt/qt.QTBUG-22829.diff
-gzip ./source/l/qt/qt.QTBUG-35459.diff
-gzip ./source/l/qt/qt.qclipboard_fix_recursive.patch
gzip ./source/l/hicolor-icon-theme/doinst.sh
gzip ./source/l/glib2/glib2.slackware.localtime.diff
gzip ./source/l/glib2/doinst.sh
diff --git a/source/d/gcc/gcc.SlackBuild b/source/d/gcc/gcc.SlackBuild
index d7443e819..6f93f767a 100755
--- a/source/d/gcc/gcc.SlackBuild
+++ b/source/d/gcc/gcc.SlackBuild
@@ -57,7 +57,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=gcc
SRCVER=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
VERSION=$(echo $SRCVER | cut -f 1 -d _)
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# How many jobs to run in parallel:
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
@@ -166,16 +166,6 @@ cat $CWD/slack-desc.gcc-brig > $PKG9/install/slack-desc
# Smite the fixincludes:
zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
- # Revert inline asm backport causing compile failures for "asm volatile":
- zcat $CWD/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/2-8-asm-inline.patch.gz | patch -p1 -R --verbose || exit 1
- zcat $CWD/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch.gz | patch -p1 -R --verbose || exit 1
-
# Fix perms/owners:
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
diff --git a/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch b/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch
deleted file mode 100644
index 1870b6ef2..000000000
--- a/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch
+++ /dev/null
@@ -1,351 +0,0 @@
-From patchwork Thu Dec 27 14:59:06 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [1/8] asm qualifiers (PR55681)
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13818
-Message-Id: <2ea395426865aeb7b02f16facf70908a852e7fbc.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:06 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-PR55681 observes that currently only one qualifier is allowed for
-inline asm, so that e.g. "volatile asm" is allowed, "const asm" is also
-okay (with a warning), but "const volatile asm" gives an error. Also
-"goto" has to be last.
-
-This patch changes things so that only "asm-qualifiers" are allowed,
-that is "volatile" and "goto", in any combination, in any order, but
-without repetitions.
-
-2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
-
- PR inline-asm/55681
- * doc/extend.texi (Basic Asm): Update grammar.
- (Extended Asm): Update grammar.
-
-gcc/c/
- PR inline-asm/55681
- * c-parser.c (c_parser_asm_statement): Update grammar. Allow any
- combination of volatile and goto, in any order, without repetitions.
-
-gcc/cp/
- PR inline-asm/55681
- * parser.c (cp_parser_asm_definition): Update grammar. Allow any
- combination of volatile and goto, in any order, without repetitions.
-
-gcc/testsuite/
- PR inline-asm/55681
- * gcc.dg/asm-qual-1.c: Test that "const" and "restrict" are refused.
- * gcc.dg/asm-qual-2.c: New test, test that asm-qualifiers are allowed
- in any order, but that duplicates are not allowed.
----
- gcc/c/c-parser.c | 74 +++++++++++++++++++++----------------
- gcc/cp/parser.c | 77 ++++++++++++++++++++++++++-------------
- gcc/doc/extend.texi | 8 ++--
- gcc/testsuite/gcc.dg/asm-qual-1.c | 10 +++--
- gcc/testsuite/gcc.dg/asm-qual-2.c | 21 +++++++++++
- 5 files changed, 127 insertions(+), 63 deletions(-)
- create mode 100644 gcc/testsuite/gcc.dg/asm-qual-2.c
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index 4772086..7ec53b3 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6261,60 +6261,72 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll,
- }
-
- /* Parse an asm statement, a GNU extension. This is a full-blown asm
-- statement with inputs, outputs, clobbers, and volatile tag
-+ statement with inputs, outputs, clobbers, and volatile and goto tag
- allowed.
-
-+ asm-qualifier:
-+ volatile
-+ goto
-+
-+ asm-qualifier-list:
-+ asm-qualifier-list asm-qualifier
-+ asm-qualifier
-+
- asm-statement:
-- asm type-qualifier[opt] ( asm-argument ) ;
-- asm type-qualifier[opt] goto ( asm-goto-argument ) ;
-+ asm asm-qualifier-list[opt] ( asm-argument ) ;
-
- asm-argument:
- asm-string-literal
- asm-string-literal : asm-operands[opt]
- asm-string-literal : asm-operands[opt] : asm-operands[opt]
-- asm-string-literal : asm-operands[opt] : asm-operands[opt] : asm-clobbers[opt]
--
-- asm-goto-argument:
-+ asm-string-literal : asm-operands[opt] : asm-operands[opt] \
-+ : asm-clobbers[opt]
- asm-string-literal : : asm-operands[opt] : asm-clobbers[opt] \
- : asm-goto-operands
-
-- Qualifiers other than volatile are accepted in the syntax but
-- warned for. */
-+ The form with asm-goto-operands is valid if and only if the
-+ asm-qualifier-list contains goto, and is the only allowed form in that case.
-+ Duplicate asm-qualifiers are not allowed. */
-
- static tree
- c_parser_asm_statement (c_parser *parser)
- {
- tree quals, str, outputs, inputs, clobbers, labels, ret;
-- bool simple, is_goto;
-+ bool simple, is_volatile, is_goto;
- location_t asm_loc = c_parser_peek_token (parser)->location;
- int section, nsections;
-
- gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM));
- c_parser_consume_token (parser);
-- if (c_parser_next_token_is_keyword (parser, RID_VOLATILE))
-- {
-- quals = c_parser_peek_token (parser)->value;
-- c_parser_consume_token (parser);
-- }
-- else if (c_parser_next_token_is_keyword (parser, RID_CONST)
-- || c_parser_next_token_is_keyword (parser, RID_RESTRICT))
-- {
-- warning_at (c_parser_peek_token (parser)->location,
-- 0,
-- "%E qualifier ignored on asm",
-- c_parser_peek_token (parser)->value);
-- quals = NULL_TREE;
-- c_parser_consume_token (parser);
-- }
-- else
-- quals = NULL_TREE;
-
-+ quals = NULL_TREE;
-+ is_volatile = false;
- is_goto = false;
-- if (c_parser_next_token_is_keyword (parser, RID_GOTO))
-- {
-- c_parser_consume_token (parser);
-- is_goto = true;
-- }
-+ for (bool done = false; !done; )
-+ switch (c_parser_peek_token (parser)->keyword)
-+ {
-+ case RID_VOLATILE:
-+ if (!is_volatile)
-+ {
-+ is_volatile = true;
-+ quals = c_parser_peek_token (parser)->value;
-+ c_parser_consume_token (parser);
-+ }
-+ else
-+ done = true;
-+ break;
-+ case RID_GOTO:
-+ if (!is_goto)
-+ {
-+ is_goto = true;
-+ c_parser_consume_token (parser);
-+ }
-+ else
-+ done = true;
-+ break;
-+ default:
-+ done = true;
-+ }
-
- /* ??? Follow the C++ parser rather than using the
- lex_untranslated_string kludge. */
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 9907180..3bc5795 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19067,22 +19067,34 @@ cp_parser_using_directive (cp_parser* parser)
-
- /* Parse an asm-definition.
-
-+ asm-qualifier:
-+ volatile
-+ goto
-+
-+ asm-qualifier-list:
-+ asm-qualifier
-+ asm-qualifier-list asm-qualifier
-+
- asm-definition:
- asm ( string-literal ) ;
-
- GNU Extension:
-
- asm-definition:
-- asm volatile [opt] ( string-literal ) ;
-- asm volatile [opt] ( string-literal : asm-operand-list [opt] ) ;
-- asm volatile [opt] ( string-literal : asm-operand-list [opt]
-- : asm-operand-list [opt] ) ;
-- asm volatile [opt] ( string-literal : asm-operand-list [opt]
-- : asm-operand-list [opt]
-+ asm asm-qualifier-list [opt] ( string-literal ) ;
-+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] ) ;
-+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt]
-+ : asm-operand-list [opt] ) ;
-+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt]
-+ : asm-operand-list [opt]
- : asm-clobber-list [opt] ) ;
-- asm volatile [opt] goto ( string-literal : : asm-operand-list [opt]
-- : asm-clobber-list [opt]
-- : asm-goto-list ) ; */
-+ asm asm-qualifier-list [opt] ( string-literal : : asm-operand-list [opt]
-+ : asm-clobber-list [opt]
-+ : asm-goto-list ) ;
-+
-+ The form with asm-goto-list is valid if and only if the asm-qualifier-list
-+ contains goto, and is the only allowed form in that case. No duplicates are
-+ allowed in an asm-qualifier-list. */
-
- static void
- cp_parser_asm_definition (cp_parser* parser)
-@@ -19111,23 +19123,36 @@ cp_parser_asm_definition (cp_parser* parser)
- }
-
- /* See if the next token is `volatile'. */
-- if (cp_parser_allow_gnu_extensions_p (parser)
-- && cp_lexer_next_token_is_keyword (parser->lexer, RID_VOLATILE))
-- {
-- /* Remember that we saw the `volatile' keyword. */
-- volatile_p = true;
-- /* Consume the token. */
-- cp_lexer_consume_token (parser->lexer);
-- }
-- if (cp_parser_allow_gnu_extensions_p (parser)
-- && parser->in_function_body
-- && cp_lexer_next_token_is_keyword (parser->lexer, RID_GOTO))
-- {
-- /* Remember that we saw the `goto' keyword. */
-- goto_p = true;
-- /* Consume the token. */
-- cp_lexer_consume_token (parser->lexer);
-- }
-+ if (cp_parser_allow_gnu_extensions_p (parser))
-+ for (bool done = false; !done ; )
-+ switch (cp_lexer_peek_token (parser->lexer)->keyword)
-+ {
-+ case RID_VOLATILE:
-+ if (!volatile_p)
-+ {
-+ /* Remember that we saw the `volatile' keyword. */
-+ volatile_p = true;
-+ /* Consume the token. */
-+ cp_lexer_consume_token (parser->lexer);
-+ }
-+ else
-+ done = true;
-+ break;
-+ case RID_GOTO:
-+ if (!goto_p && parser->in_function_body)
-+ {
-+ /* Remember that we saw the `goto' keyword. */
-+ goto_p = true;
-+ /* Consume the token. */
-+ cp_lexer_consume_token (parser->lexer);
-+ }
-+ else
-+ done = true;
-+ break;
-+ default:
-+ done = true;
-+ }
-+
- /* Look for the opening `('. */
- if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
- return;
-diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
-index afde889..40b1989 100644
---- a/gcc/doc/extend.texi
-+++ b/gcc/doc/extend.texi
-@@ -8147,7 +8147,7 @@ for a C symbol, or to place a C variable in a specific register.
- A basic @code{asm} statement has the following syntax:
-
- @example
--asm @r{[} volatile @r{]} ( @var{AssemblerInstructions} )
-+asm @var{asm-qualifiers} ( @var{AssemblerInstructions} )
- @end example
-
- The @code{asm} keyword is a GNU extension.
-@@ -8275,17 +8275,19 @@ Extended @code{asm} syntax uses colons (@samp{:}) to delimit
- the operand parameters after the assembler template:
-
- @example
--asm @r{[}volatile@r{]} ( @var{AssemblerTemplate}
-+asm @var{asm-qualifiers} ( @var{AssemblerTemplate}
- : @var{OutputOperands}
- @r{[} : @var{InputOperands}
- @r{[} : @var{Clobbers} @r{]} @r{]})
-
--asm @r{[}volatile@r{]} goto ( @var{AssemblerTemplate}
-+asm @var{asm-qualifiers} ( @var{AssemblerTemplate}
- :
- : @var{InputOperands}
- : @var{Clobbers}
- : @var{GotoLabels})
- @end example
-+where in the last form, @var{asm-qualifiers} contains @code{goto} (and in the
-+first form, not).
-
- The @code{asm} keyword is a GNU extension.
- When writing code that can be compiled with @option{-ansi} and the
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c
-index 5ec9a29..cb37283 100644
---- a/gcc/testsuite/gcc.dg/asm-qual-1.c
-+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c
-@@ -1,4 +1,4 @@
--/* Test that qualifiers other than volatile are ignored on asm. */
-+/* Test that qualifiers other than volatile are disallowed on asm. */
- /* Origin: Joseph Myers <joseph@codesourcery.com> */
- /* { dg-do compile } */
- /* { dg-options "-std=gnu99" } */
-@@ -7,6 +7,10 @@ void
- f (void)
- {
- asm volatile ("");
-- asm const (""); /* { dg-warning "const qualifier ignored on asm" } */
-- asm restrict (""); /* { dg-warning "restrict qualifier ignored on asm" } */
-+
-+ asm const (""); /* { dg-error {expected '\(' before 'const'} } */
-+ /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */
-+
-+ asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */
-+ /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */
- }
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-2.c b/gcc/testsuite/gcc.dg/asm-qual-2.c
-new file mode 100644
-index 0000000..37df2ad
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/asm-qual-2.c
-@@ -0,0 +1,21 @@
-+/* Test that qualifiers on asm are allowed in any order. */
-+/* { dg-do compile } */
-+/* { dg-options "-std=gnu99" } */
-+
-+void
-+f (void)
-+{
-+ asm volatile goto ("" :::: lab);
-+ asm goto volatile ("" :::: lab);
-+
-+ /* Duplicates are not allowed. */
-+ asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */
-+ asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */
-+ asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */
-+ asm goto goto volatile ("" :::: lab); /* { dg-error "" } */
-+ asm goto volatile goto ("" :::: lab); /* { dg-error "" } */
-+ asm volatile goto goto ("" :::: lab); /* { dg-error "" } */
-+
-+lab:
-+ ;
-+}
diff --git a/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch b/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch
deleted file mode 100644
index 9ffb77a89..000000000
--- a/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch
+++ /dev/null
@@ -1,577 +0,0 @@
-From patchwork Thu Dec 27 14:59:07 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [2/8] asm inline
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13820
-Message-Id: <420ded3dc643d9e1ee6239ca5a8d1942c69bfe76.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:07 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-The Linux kernel people want a feature that makes GCC pretend some
-inline assembler code is tiny (while it would think it is huge), so
-that such code will be inlined essentially always instead of
-essentially never.
-
-This patch lets you say "asm inline" instead of just "asm", with the
-result that that inline assembler is always counted as minimum cost
-for inlining. It implements this for C and C++, making "inline"
-another asm-qualifier (supplementing "volatile" and "goto").
-
-2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
-
- * doc/extend.texi (Using Assembly Language with C): Document asm inline.
- (Size of an asm): Fix typo. Document asm inline.
- * gimple-pretty-print.c (dump_gimple_asm): Handle asm inline.
- * gimple.h (enum gf_mask): Add GF_ASM_INLINE.
- (gimple_asm_set_volatile): Fix typo.
- (gimple_asm_inline_p): New.
- (gimple_asm_set_inline): New.
- * gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from
- tree to gimple.
- * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the
- gimple_asm_inline_p flag, too.
- * tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P
- in an ASM_EXPR.
- * tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return
- a minimum size for an asm.
- * tree.h (ASM_INLINE_P): New.
-
-gcc/c/
- * c-parser.c (c_parser_asm_statement): Detect the inline keyword
- after asm. Pass a flag for it to build_asm_expr.
- * c-tree.h (build_asm_expr): Update declaration.
- * c-typeck.c (build_asm_stmt): Add is_inline parameter. Use it to
- set ASM_INLINE_P.
-
-gcc/cp/
- * cp-tree.h (finish_asm_stmt): Update declaration.
- * parser.c (cp_parser_asm_definition): Detect the inline keyword
- after asm. Pass a flag for it to finish_asm_stmt.
- * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt.
- * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to
- set ASM_INLINE_P.
-
-gcc/testsuite/
- * c-c++-common/torture/asm-inline.c: New testcase.
- * gcc.dg/asm-qual-2.c: Test asm inline, too.
----
- gcc/c/c-parser.c | 21 ++++++++--
- gcc/c/c-tree.h | 3 +-
- gcc/c/c-typeck.c | 7 +++-
- gcc/cp/cp-tree.h | 2 +-
- gcc/cp/parser.c | 15 ++++++-
- gcc/cp/pt.c | 2 +-
- gcc/cp/semantics.c | 5 ++-
- gcc/doc/extend.texi | 15 ++++++-
- gcc/gimple-pretty-print.c | 2 +
- gcc/gimple.h | 26 +++++++++++-
- gcc/gimplify.c | 1 +
- gcc/ipa-icf-gimple.c | 3 ++
- gcc/testsuite/c-c++-common/torture/asm-inline.c | 53 +++++++++++++++++++++++++
- gcc/testsuite/gcc.dg/asm-qual-2.c | 25 ++++++++++++
- gcc/tree-core.h | 3 ++
- gcc/tree-inline.c | 3 ++
- gcc/tree.h | 3 ++
- 17 files changed, 174 insertions(+), 15 deletions(-)
- create mode 100644 gcc/testsuite/c-c++-common/torture/asm-inline.c
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index 7ec53b3..51cc2be 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6261,11 +6261,12 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll,
- }
-
- /* Parse an asm statement, a GNU extension. This is a full-blown asm
-- statement with inputs, outputs, clobbers, and volatile and goto tag
-- allowed.
-+ statement with inputs, outputs, clobbers, and volatile, inline, and goto
-+ tags allowed.
-
- asm-qualifier:
- volatile
-+ inline
- goto
-
- asm-qualifier-list:
-@@ -6292,7 +6293,7 @@ static tree
- c_parser_asm_statement (c_parser *parser)
- {
- tree quals, str, outputs, inputs, clobbers, labels, ret;
-- bool simple, is_volatile, is_goto;
-+ bool simple, is_volatile, is_inline, is_goto;
- location_t asm_loc = c_parser_peek_token (parser)->location;
- int section, nsections;
-
-@@ -6301,6 +6302,7 @@ c_parser_asm_statement (c_parser *parser)
-
- quals = NULL_TREE;
- is_volatile = false;
-+ is_inline = false;
- is_goto = false;
- for (bool done = false; !done; )
- switch (c_parser_peek_token (parser)->keyword)
-@@ -6315,6 +6317,16 @@ c_parser_asm_statement (c_parser *parser)
- else
- done = true;
- break;
-+ case RID_INLINE:
-+ if (!is_inline)
-+ {
-+ is_inline = true;
-+ quals = c_parser_peek_token (parser)->value;
-+ c_parser_consume_token (parser);
-+ }
-+ else
-+ done = true;
-+ break;
- case RID_GOTO:
- if (!is_goto)
- {
-@@ -6403,7 +6415,8 @@ c_parser_asm_statement (c_parser *parser)
- c_parser_skip_to_end_of_block_or_statement (parser);
-
- ret = build_asm_stmt (quals, build_asm_expr (asm_loc, str, outputs, inputs,
-- clobbers, labels, simple));
-+ clobbers, labels, simple,
-+ is_inline));
-
- error:
- parser->lex_untranslated_string = false;
-diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
-index ae1a1e6..7f34bdc 100644
---- a/gcc/c/c-tree.h
-+++ b/gcc/c/c-tree.h
-@@ -677,7 +677,8 @@ extern tree build_compound_literal (location_t, tree, tree, bool,
- extern void check_compound_literal_type (location_t, struct c_type_name *);
- extern tree c_start_case (location_t, location_t, tree, bool);
- extern void c_finish_case (tree, tree);
--extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool);
-+extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool,
-+ bool);
- extern tree build_asm_stmt (tree, tree);
- extern int c_types_compatible_p (tree, tree);
- extern tree c_begin_compound_stmt (bool);
-diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
-index 8205916..3ebb28e 100644
---- a/gcc/c/c-typeck.c
-+++ b/gcc/c/c-typeck.c
-@@ -9990,10 +9990,12 @@ build_asm_stmt (tree cv_qualifier, tree args)
- some INPUTS, and some CLOBBERS. The latter three may be NULL.
- SIMPLE indicates whether there was anything at all after the
- string in the asm expression -- asm("blah") and asm("blah" : )
-- are subtly different. We use a ASM_EXPR node to represent this. */
-+ are subtly different. We use a ASM_EXPR node to represent this.
-+ LOC is the location of the asm, and IS_INLINE says whether this
-+ is asm inline. */
- tree
- build_asm_expr (location_t loc, tree string, tree outputs, tree inputs,
-- tree clobbers, tree labels, bool simple)
-+ tree clobbers, tree labels, bool simple, bool is_inline)
- {
- tree tail;
- tree args;
-@@ -10111,6 +10113,7 @@ build_asm_expr (location_t loc, tree string, tree outputs, tree inputs,
- as volatile. */
- ASM_INPUT_P (args) = simple;
- ASM_VOLATILE_P (args) = (noutputs == 0);
-+ ASM_INLINE_P (args) = is_inline;
-
- return args;
- }
-diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
-index 85ba5b8..0f24b4f 100644
---- a/gcc/cp/cp-tree.h
-+++ b/gcc/cp/cp-tree.h
-@@ -6897,7 +6897,7 @@ extern tree begin_compound_stmt (unsigned int);
-
- extern void finish_compound_stmt (tree);
- extern tree finish_asm_stmt (int, tree, tree, tree, tree,
-- tree);
-+ tree, bool);
- extern tree finish_label_stmt (tree);
- extern void finish_label_decl (tree);
- extern cp_expr finish_parenthesized_expr (cp_expr);
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 3bc5795..3fd9a02 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19069,6 +19069,7 @@ cp_parser_using_directive (cp_parser* parser)
-
- asm-qualifier:
- volatile
-+ inline
- goto
-
- asm-qualifier-list:
-@@ -19109,6 +19110,7 @@ cp_parser_asm_definition (cp_parser* parser)
- bool extended_p = false;
- bool invalid_inputs_p = false;
- bool invalid_outputs_p = false;
-+ bool inline_p = false;
- bool goto_p = false;
- required_token missing = RT_NONE;
-
-@@ -19138,6 +19140,17 @@ cp_parser_asm_definition (cp_parser* parser)
- else
- done = true;
- break;
-+ case RID_INLINE:
-+ if (!inline_p && parser->in_function_body)
-+ {
-+ /* Remember that we saw the `inline' keyword. */
-+ inline_p = true;
-+ /* Consume the token. */
-+ cp_lexer_consume_token (parser->lexer);
-+ }
-+ else
-+ done = true;
-+ break;
- case RID_GOTO:
- if (!goto_p && parser->in_function_body)
- {
-@@ -19279,7 +19292,7 @@ cp_parser_asm_definition (cp_parser* parser)
- if (parser->in_function_body)
- {
- asm_stmt = finish_asm_stmt (volatile_p, string, outputs,
-- inputs, clobbers, labels);
-+ inputs, clobbers, labels, inline_p);
- /* If the extended syntax was not used, mark the ASM_EXPR. */
- if (!extended_p)
- {
-diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
-index e9a9ac9..446f4fb 100644
---- a/gcc/cp/pt.c
-+++ b/gcc/cp/pt.c
-@@ -16990,7 +16990,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
- tree labels = tsubst_copy_asm_operands (ASM_LABELS (t), args,
- complain, in_decl);
- tmp = finish_asm_stmt (ASM_VOLATILE_P (t), string, outputs, inputs,
-- clobbers, labels);
-+ clobbers, labels, ASM_INLINE_P (t));
- tree asm_expr = tmp;
- if (TREE_CODE (asm_expr) == CLEANUP_POINT_EXPR)
- asm_expr = TREE_OPERAND (asm_expr, 0);
-diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
-index 1744ec0..1f6c9be 100644
---- a/gcc/cp/semantics.c
-+++ b/gcc/cp/semantics.c
-@@ -1461,11 +1461,11 @@ finish_compound_stmt (tree stmt)
- /* Finish an asm-statement, whose components are a STRING, some
- OUTPUT_OPERANDS, some INPUT_OPERANDS, some CLOBBERS and some
- LABELS. Also note whether the asm-statement should be
-- considered volatile. */
-+ considered volatile, and whether it is asm inline. */
-
- tree
- finish_asm_stmt (int volatile_p, tree string, tree output_operands,
-- tree input_operands, tree clobbers, tree labels)
-+ tree input_operands, tree clobbers, tree labels, bool inline_p)
- {
- tree r;
- tree t;
-@@ -1619,6 +1619,7 @@ finish_asm_stmt (int volatile_p, tree string, tree output_operands,
- output_operands, input_operands,
- clobbers, labels);
- ASM_VOLATILE_P (r) = volatile_p || noutputs == 0;
-+ ASM_INLINE_P (r) = inline_p;
- r = maybe_cleanup_point_expr_void (r);
- return add_stmt (r);
- }
-diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
-index 40b1989..4ff37c4 100644
---- a/gcc/doc/extend.texi
-+++ b/gcc/doc/extend.texi
-@@ -8160,6 +8160,10 @@ various @option{-std} options, use @code{__asm__} instead of
- @item volatile
- The optional @code{volatile} qualifier has no effect.
- All basic @code{asm} blocks are implicitly volatile.
-+
-+@item inline
-+If you use the @code{inline} qualifier, then for inlining purposes the size
-+of the asm is taken as the smallest size possible (@pxref{Size of an asm}).
- @end table
-
- @subsubheading Parameters
-@@ -8303,6 +8307,10 @@ values to produce output values. However, your @code{asm} statements may
- also produce side effects. If so, you may need to use the @code{volatile}
- qualifier to disable certain optimizations. @xref{Volatile}.
-
-+@item inline
-+If you use the @code{inline} qualifier, then for inlining purposes the size
-+of the asm is taken as the smallest size possible (@pxref{Size of an asm}).
-+
- @item goto
- This qualifier informs the compiler that the @code{asm} statement may
- perform a jump to one of the labels listed in the @var{GotoLabels}.
-@@ -9714,7 +9722,7 @@ does this by counting the number of instructions in the pattern of the
- @code{asm} and multiplying that by the length of the longest
- instruction supported by that processor. (When working out the number
- of instructions, it assumes that any occurrence of a newline or of
--whatever statement separator character is supported by the assembler --
-+whatever statement separator character is supported by the assembler ---
- typically @samp{;} --- indicates the end of an instruction.)
-
- Normally, GCC's estimate is adequate to ensure that correct
-@@ -9725,6 +9733,11 @@ space in the object file than is needed for a single instruction.
- If this happens then the assembler may produce a diagnostic saying that
- a label is unreachable.
-
-+@cindex @code{asm inline}
-+This size is also used for inlining decisions. If you use @code{asm inline}
-+instead of just @code{asm}, then for inlining purposes the size of the asm
-+is taken as the minimum size, ignoring how many instructions GCC thinks it is.
-+
- @node Alternate Keywords
- @section Alternate Keywords
- @cindex alternate keywords
-diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c
-index 6695526..487770f 100644
---- a/gcc/gimple-pretty-print.c
-+++ b/gcc/gimple-pretty-print.c
-@@ -2040,6 +2040,8 @@ dump_gimple_asm (pretty_printer *buffer, gasm *gs, int spc, dump_flags_t flags)
- pp_string (buffer, "__asm__");
- if (gimple_asm_volatile_p (gs))
- pp_string (buffer, " __volatile__");
-+ if (gimple_asm_inline_p (gs))
-+ pp_string (buffer, " __inline__");
- if (gimple_asm_nlabels (gs))
- pp_string (buffer, " goto");
- pp_string (buffer, "(\"");
-diff --git a/gcc/gimple.h b/gcc/gimple.h
-index 265e3e2..224463b 100644
---- a/gcc/gimple.h
-+++ b/gcc/gimple.h
-@@ -137,6 +137,7 @@ enum gimple_rhs_class
- enum gf_mask {
- GF_ASM_INPUT = 1 << 0,
- GF_ASM_VOLATILE = 1 << 1,
-+ GF_ASM_INLINE = 1 << 2,
- GF_CALL_FROM_THUNK = 1 << 0,
- GF_CALL_RETURN_SLOT_OPT = 1 << 1,
- GF_CALL_TAILCALL = 1 << 2,
-@@ -3925,7 +3926,7 @@ gimple_asm_string (const gasm *asm_stmt)
- }
-
-
--/* Return true ASM_STMT ASM_STMT is an asm statement marked volatile. */
-+/* Return true if ASM_STMT is marked volatile. */
-
- static inline bool
- gimple_asm_volatile_p (const gasm *asm_stmt)
-@@ -3934,7 +3935,7 @@ gimple_asm_volatile_p (const gasm *asm_stmt)
- }
-
-
--/* If VOLATLE_P is true, mark asm statement ASM_STMT as volatile. */
-+/* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile. */
-
- static inline void
- gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
-@@ -3946,6 +3947,27 @@ gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
- }
-
-
-+/* Return true if ASM_STMT is marked inline. */
-+
-+static inline bool
-+gimple_asm_inline_p (const gasm *asm_stmt)
-+{
-+ return (asm_stmt->subcode & GF_ASM_INLINE) != 0;
-+}
-+
-+
-+/* If INLINE_P is true, mark asm statement ASM_STMT as inline. */
-+
-+static inline void
-+gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
-+{
-+ if (inline_p)
-+ asm_stmt->subcode |= GF_ASM_INLINE;
-+ else
-+ asm_stmt->subcode &= ~GF_ASM_INLINE;
-+}
-+
-+
- /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT. */
-
- static inline void
-diff --git a/gcc/gimplify.c b/gcc/gimplify.c
-index 43cb891..fce0ce9 100644
---- a/gcc/gimplify.c
-+++ b/gcc/gimplify.c
-@@ -6360,6 +6360,7 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
-
- gimple_asm_set_volatile (stmt, ASM_VOLATILE_P (expr) || noutputs == 0);
- gimple_asm_set_input (stmt, ASM_INPUT_P (expr));
-+ gimple_asm_set_inline (stmt, ASM_INLINE_P (expr));
-
- gimplify_seq_add_stmt (pre_p, stmt);
- }
-diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c
-index 161080c..37b9fe7 100644
---- a/gcc/ipa-icf-gimple.c
-+++ b/gcc/ipa-icf-gimple.c
-@@ -994,6 +994,9 @@ func_checker::compare_gimple_asm (const gasm *g1, const gasm *g2)
- if (gimple_asm_input_p (g1) != gimple_asm_input_p (g2))
- return false;
-
-+ if (gimple_asm_inline_p (g1) != gimple_asm_inline_p (g2))
-+ return false;
-+
- if (gimple_asm_ninputs (g1) != gimple_asm_ninputs (g2))
- return false;
-
-diff --git a/gcc/testsuite/c-c++-common/torture/asm-inline.c b/gcc/testsuite/c-c++-common/torture/asm-inline.c
-new file mode 100644
-index 0000000..dea8965
---- /dev/null
-+++ b/gcc/testsuite/c-c++-common/torture/asm-inline.c
-@@ -0,0 +1,53 @@
-+/* { dg-do compile } */
-+/* -O0 does no inlining, and -O3 does it too aggressively for this test: */
-+/* { dg-skip-if "" { *-*-* } { "-O0" "-O3" } { "" } }
-+/* The normal asm is not inlined: */
-+/* { dg-final { scan-assembler-times "w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w" 2 } } */
-+/* But the asm inline is inlined: */
-+/* { dg-final { scan-assembler-times "x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x" 8 } } */
-+
-+static void f(void)
-+{
-+ asm ("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n"
-+ "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw");
-+}
-+
-+int f0(void) { f(); return 0; }
-+int f1(void) { f(); return 1; }
-+int f2(void) { f(); return 2; }
-+int f3(void) { f(); return 3; }
-+
-+static void fg(void)
-+{
-+ asm goto("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n"
-+ "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw" :::: q);
-+ q: ;
-+}
-+
-+int fg0(void) { fg(); return 0; }
-+int fg1(void) { fg(); return 1; }
-+int fg2(void) { fg(); return 2; }
-+int fg3(void) { fg(); return 3; }
-+
-+static void g(void)
-+{
-+ asm inline("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n"
-+ "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx");
-+}
-+
-+int g0(void) { g(); return 0; }
-+int g1(void) { g(); return 1; }
-+int g2(void) { g(); return 2; }
-+int g3(void) { g(); return 3; }
-+
-+static void gg(void)
-+{
-+ asm inline goto("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n"
-+ "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx" :::: q);
-+ q: ;
-+}
-+
-+int gg0(void) { gg(); return 0; }
-+int gg1(void) { gg(); return 1; }
-+int gg2(void) { gg(); return 2; }
-+int gg3(void) { gg(); return 3; }
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-2.c b/gcc/testsuite/gcc.dg/asm-qual-2.c
-index 37df2ad..79135c3 100644
---- a/gcc/testsuite/gcc.dg/asm-qual-2.c
-+++ b/gcc/testsuite/gcc.dg/asm-qual-2.c
-@@ -6,7 +6,18 @@ void
- f (void)
- {
- asm volatile goto ("" :::: lab);
-+ asm volatile inline ("" :::);
-+ asm inline volatile ("" :::);
-+ asm inline goto ("" :::: lab);
- asm goto volatile ("" :::: lab);
-+ asm goto inline ("" :::: lab);
-+
-+ asm volatile inline goto ("" :::: lab);
-+ asm volatile goto inline ("" :::: lab);
-+ asm inline volatile goto ("" :::: lab);
-+ asm inline goto volatile ("" :::: lab);
-+ asm goto volatile inline ("" :::: lab);
-+ asm goto inline volatile ("" :::: lab);
-
- /* Duplicates are not allowed. */
- asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */
-@@ -16,6 +27,20 @@ f (void)
- asm goto volatile goto ("" :::: lab); /* { dg-error "" } */
- asm volatile goto goto ("" :::: lab); /* { dg-error "" } */
-
-+ asm inline volatile volatile ("" :::); /* { dg-error "" } */
-+ asm volatile inline volatile ("" :::); /* { dg-error "" } */
-+ asm volatile volatile inline ("" :::); /* { dg-error "" } */
-+ asm inline inline volatile ("" :::); /* { dg-error "" } */
-+ asm inline volatile inline ("" :::); /* { dg-error "" } */
-+ asm volatile inline inline ("" :::); /* { dg-error "" } */
-+
-+ asm goto inline inline ("" :::: lab); /* { dg-error "" } */
-+ asm inline goto inline ("" :::: lab); /* { dg-error "" } */
-+ asm inline inline goto ("" :::: lab); /* { dg-error "" } */
-+ asm goto goto inline ("" :::: lab); /* { dg-error "" } */
-+ asm goto inline goto ("" :::: lab); /* { dg-error "" } */
-+ asm inline goto goto ("" :::: lab); /* { dg-error "" } */
-+
- lab:
- ;
- }
-diff --git a/gcc/tree-core.h b/gcc/tree-core.h
-index 356330a..84f75e6 100644
---- a/gcc/tree-core.h
-+++ b/gcc/tree-core.h
-@@ -1161,6 +1161,9 @@ struct GTY(()) tree_base {
- OMP_CLAUSE_LINEAR_VARIABLE_STRIDE in
- OMP_CLAUSE_LINEAR
-
-+ ASM_INLINE_P in
-+ ASM_EXPR
-+
- side_effects_flag:
-
- TREE_SIDE_EFFECTS in
-diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
-index 7555dce..324c168 100644
---- a/gcc/tree-inline.c
-+++ b/gcc/tree-inline.c
-@@ -4149,6 +4149,9 @@ estimate_num_insns (gimple *stmt, eni_weights *weights)
- with very long asm statements. */
- if (count > 1000)
- count = 1000;
-+ /* If this asm is asm inline, count anything as minimum size. */
-+ if (gimple_asm_inline_p (as_a <gasm *> (stmt)))
-+ count = MIN (1, count);
- return MAX (1, count);
- }
-
-diff --git a/gcc/tree.h b/gcc/tree.h
-index 8e70314..324ef5b 100644
---- a/gcc/tree.h
-+++ b/gcc/tree.h
-@@ -1263,6 +1263,9 @@ extern tree maybe_wrap_with_location (tree, location_t);
- ASM_OPERAND with no operands. */
- #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
- #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
-+/* Nonzero if we want to consider this asm as minimum length and cost
-+ for inlining decisions. */
-+#define ASM_INLINE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.protected_flag)
-
- /* COND_EXPR accessors. */
- #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
diff --git a/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch b/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch
deleted file mode 100644
index 043df1466..000000000
--- a/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From patchwork Thu Dec 27 14:59:08 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [3/8] c: Delete a stray line in asm inline
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13819
-Message-Id: <35014fbfa36ce89dd26fdf43387416a907be4782.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:08 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-I noticed I accidentally copied a line too many from the "volatile"
-handling to the "inline" handling. This fixes it.
-
-Tested on powerpc64-linux {-m32,-m64}; committing as trivial and obvious.
-
-Segher
-
-2018-12-08 Segher Boessenkool <segher@kernel.crashing.org>
-
-gcc/c/
- * c-parser (c_parser_asm_statement) [RID_INLINE]: Delete stray line
- setting "quals".
----
- gcc/c/c-parser.c | 1 -
- 1 file changed, 1 deletion(-)
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index 51cc2be..e45f70b 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6321,7 +6321,6 @@ c_parser_asm_statement (c_parser *parser)
- if (!is_inline)
- {
- is_inline = true;
-- quals = c_parser_peek_token (parser)->value;
- c_parser_consume_token (parser);
- }
- else
diff --git a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch b/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch
deleted file mode 100644
index 0c73f5386..000000000
--- a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From patchwork Thu Dec 27 14:59:09 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [4/8] c/c++, asm: Write the asm-qualifier loop without "done" boolean
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13821
-Message-Id: <5bbbd04162b8546d9c72da11cf33e6e61d1128d7.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:09 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-As suggested by Jason.
-
-Segher
-
-2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
-
-c/
- * c-parser.c (c_parser_asm_statement): Rewrite the loop to work without
- "done" boolean variable.
-
-cp/
- * parser.c (cp_parser_asm_definition): Rewrite the loop to work without
- "done" boolean variable.
----
- gcc/c/c-parser.c | 65 +++++++++++++++++++++++++--------------------------
- gcc/cp/parser.c | 71 +++++++++++++++++++++++++-------------------------------
- 2 files changed, 62 insertions(+), 74 deletions(-)
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index e45f70b..b632f68 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6304,40 +6304,37 @@ c_parser_asm_statement (c_parser *parser)
- is_volatile = false;
- is_inline = false;
- is_goto = false;
-- for (bool done = false; !done; )
-- switch (c_parser_peek_token (parser)->keyword)
-- {
-- case RID_VOLATILE:
-- if (!is_volatile)
-- {
-- is_volatile = true;
-- quals = c_parser_peek_token (parser)->value;
-- c_parser_consume_token (parser);
-- }
-- else
-- done = true;
-- break;
-- case RID_INLINE:
-- if (!is_inline)
-- {
-- is_inline = true;
-- c_parser_consume_token (parser);
-- }
-- else
-- done = true;
-- break;
-- case RID_GOTO:
-- if (!is_goto)
-- {
-- is_goto = true;
-- c_parser_consume_token (parser);
-- }
-- else
-- done = true;
-- break;
-- default:
-- done = true;
-- }
-+ for (;;)
-+ {
-+ switch (c_parser_peek_token (parser)->keyword)
-+ {
-+ case RID_VOLATILE:
-+ if (is_volatile)
-+ break;
-+ is_volatile = true;
-+ quals = c_parser_peek_token (parser)->value;
-+ c_parser_consume_token (parser);
-+ continue;
-+
-+ case RID_INLINE:
-+ if (is_inline)
-+ break;
-+ is_inline = true;
-+ c_parser_consume_token (parser);
-+ continue;
-+
-+ case RID_GOTO:
-+ if (is_goto)
-+ break;
-+ is_goto = true;
-+ c_parser_consume_token (parser);
-+ continue;
-+
-+ default:
-+ break;
-+ }
-+ break;
-+ }
-
- /* ??? Follow the C++ parser rather than using the
- lex_untranslated_string kludge. */
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 3fd9a02..7660565 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19124,47 +19124,38 @@ cp_parser_asm_definition (cp_parser* parser)
- cp_function_chain->invalid_constexpr = true;
- }
-
-- /* See if the next token is `volatile'. */
-+ /* Handle the asm-qualifier-list. */
- if (cp_parser_allow_gnu_extensions_p (parser))
-- for (bool done = false; !done ; )
-- switch (cp_lexer_peek_token (parser->lexer)->keyword)
-- {
-- case RID_VOLATILE:
-- if (!volatile_p)
-- {
-- /* Remember that we saw the `volatile' keyword. */
-- volatile_p = true;
-- /* Consume the token. */
-- cp_lexer_consume_token (parser->lexer);
-- }
-- else
-- done = true;
-- break;
-- case RID_INLINE:
-- if (!inline_p && parser->in_function_body)
-- {
-- /* Remember that we saw the `inline' keyword. */
-- inline_p = true;
-- /* Consume the token. */
-- cp_lexer_consume_token (parser->lexer);
-- }
-- else
-- done = true;
-- break;
-- case RID_GOTO:
-- if (!goto_p && parser->in_function_body)
-- {
-- /* Remember that we saw the `goto' keyword. */
-- goto_p = true;
-- /* Consume the token. */
-- cp_lexer_consume_token (parser->lexer);
-- }
-- else
-- done = true;
-- break;
-- default:
-- done = true;
-- }
-+ for (;;)
-+ {
-+ switch (cp_lexer_peek_token (parser->lexer)->keyword)
-+ {
-+ case RID_VOLATILE:
-+ if (volatile_p)
-+ break;
-+ volatile_p = true;
-+ cp_lexer_consume_token (parser->lexer);
-+ continue;
-+
-+ case RID_INLINE:
-+ if (inline_p || !parser->in_function_body)
-+ break;
-+ inline_p = true;
-+ cp_lexer_consume_token (parser->lexer);
-+ continue;
-+
-+ case RID_GOTO:
-+ if (goto_p || !parser->in_function_body)
-+ break;
-+ goto_p = true;
-+ cp_lexer_consume_token (parser->lexer);
-+ continue;
-+
-+ default:
-+ break;
-+ }
-+ break;
-+ }
-
- /* Look for the opening `('. */
- if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
diff --git a/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch b/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch
deleted file mode 100644
index 6f8175c89..000000000
--- a/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From patchwork Thu Dec 27 14:59:10 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [5/8] c/c++, asm: Use nicer error for duplicate asm qualifiers
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13822
-Message-Id: <30a12d359164450406601e125d128fc43af4d605.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:10 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-Also as suggested by Jason.
-
-Segher
-
-2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
-
-c/
- * c-parser.c (c_parser_asm_statement): Keep track of the location each
- asm qualifier is first seen; use that to give nicer "duplicate asm
- qualifier" messages. Delete 'quals" variable, instead pass the
- "is_volatile_ flag to build_asm_stmt directly.
- * c-tree.h (build_asm_stmt): Make the first arg bool instead of tree.
- * c-typeck.c (build_asm_stmt): Ditto; adjust.
-
-cp/
- * parser.c (cp_parser_asm_definition): Rewrite the loop to work without
- "done" boolean variable.
- * parser.c (cp_parser_asm_definition): Keep track of the location each
- asm qualifier is first seen; use that to give nicer "duplicate asm
- qualifier" messages.
----
- gcc/c/c-parser.c | 57 ++++++++++++++++++++++++++++++++++++--------------------
- gcc/c/c-tree.h | 2 +-
- gcc/c/c-typeck.c | 4 ++--
- gcc/cp/parser.c | 45 ++++++++++++++++++++++++++++++++------------
- 4 files changed, 73 insertions(+), 35 deletions(-)
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index b632f68..ca04910 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6292,41 +6292,54 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll,
- static tree
- c_parser_asm_statement (c_parser *parser)
- {
-- tree quals, str, outputs, inputs, clobbers, labels, ret;
-- bool simple, is_volatile, is_inline, is_goto;
-+ tree str, outputs, inputs, clobbers, labels, ret;
-+ bool simple;
- location_t asm_loc = c_parser_peek_token (parser)->location;
- int section, nsections;
-
- gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM));
- c_parser_consume_token (parser);
-
-- quals = NULL_TREE;
-- is_volatile = false;
-- is_inline = false;
-- is_goto = false;
-+ /* Handle the asm-qualifier-list. */
-+ location_t volatile_loc = UNKNOWN_LOCATION;
-+ location_t inline_loc = UNKNOWN_LOCATION;
-+ location_t goto_loc = UNKNOWN_LOCATION;
- for (;;)
- {
-- switch (c_parser_peek_token (parser)->keyword)
-+ c_token *token = c_parser_peek_token (parser);
-+ location_t loc = token->location;
-+ switch (token->keyword)
- {
- case RID_VOLATILE:
-- if (is_volatile)
-- break;
-- is_volatile = true;
-- quals = c_parser_peek_token (parser)->value;
-+ if (volatile_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qE", token->value);
-+ inform (volatile_loc, "first seen here");
-+ }
-+ else
-+ volatile_loc = loc;
- c_parser_consume_token (parser);
- continue;
-
- case RID_INLINE:
-- if (is_inline)
-- break;
-- is_inline = true;
-+ if (inline_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qE", token->value);
-+ inform (inline_loc, "first seen here");
-+ }
-+ else
-+ inline_loc = loc;
- c_parser_consume_token (parser);
- continue;
-
- case RID_GOTO:
-- if (is_goto)
-- break;
-- is_goto = true;
-+ if (goto_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qE", token->value);
-+ inform (goto_loc, "first seen here");
-+ }
-+ else
-+ goto_loc = loc;
- c_parser_consume_token (parser);
- continue;
-
-@@ -6336,6 +6349,10 @@ c_parser_asm_statement (c_parser *parser)
- break;
- }
-
-+ bool is_volatile = (volatile_loc != UNKNOWN_LOCATION);
-+ bool is_inline = (inline_loc != UNKNOWN_LOCATION);
-+ bool is_goto = (goto_loc != UNKNOWN_LOCATION);
-+
- /* ??? Follow the C++ parser rather than using the
- lex_untranslated_string kludge. */
- parser->lex_untranslated_string = true;
-@@ -6410,9 +6427,9 @@ c_parser_asm_statement (c_parser *parser)
- if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
- c_parser_skip_to_end_of_block_or_statement (parser);
-
-- ret = build_asm_stmt (quals, build_asm_expr (asm_loc, str, outputs, inputs,
-- clobbers, labels, simple,
-- is_inline));
-+ ret = build_asm_stmt (is_volatile,
-+ build_asm_expr (asm_loc, str, outputs, inputs,
-+ clobbers, labels, simple, is_inline));
-
- error:
- parser->lex_untranslated_string = false;
-diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
-index 7f34bdc..aa66aa2 100644
---- a/gcc/c/c-tree.h
-+++ b/gcc/c/c-tree.h
-@@ -679,7 +679,7 @@ extern tree c_start_case (location_t, location_t, tree, bool);
- extern void c_finish_case (tree, tree);
- extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool,
- bool);
--extern tree build_asm_stmt (tree, tree);
-+extern tree build_asm_stmt (bool, tree);
- extern int c_types_compatible_p (tree, tree);
- extern tree c_begin_compound_stmt (bool);
- extern tree c_end_compound_stmt (location_t, tree, bool);
-diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
-index 3ebb28e..7b90b5c 100644
---- a/gcc/c/c-typeck.c
-+++ b/gcc/c/c-typeck.c
-@@ -9979,9 +9979,9 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
- (guaranteed to be 'volatile' or null) and ARGS (represented using
- an ASM_EXPR node). */
- tree
--build_asm_stmt (tree cv_qualifier, tree args)
-+build_asm_stmt (bool is_volatile, tree args)
- {
-- if (!ASM_VOLATILE_P (args) && cv_qualifier)
-+ if (is_volatile)
- ASM_VOLATILE_P (args) = 1;
- return add_stmt (args);
- }
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 7660565..44fdace 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19106,12 +19106,9 @@ cp_parser_asm_definition (cp_parser* parser)
- tree clobbers = NULL_TREE;
- tree labels = NULL_TREE;
- tree asm_stmt;
-- bool volatile_p = false;
- bool extended_p = false;
- bool invalid_inputs_p = false;
- bool invalid_outputs_p = false;
-- bool inline_p = false;
-- bool goto_p = false;
- required_token missing = RT_NONE;
-
- /* Look for the `asm' keyword. */
-@@ -19125,29 +19122,50 @@ cp_parser_asm_definition (cp_parser* parser)
- }
-
- /* Handle the asm-qualifier-list. */
-+ location_t volatile_loc = UNKNOWN_LOCATION;
-+ location_t inline_loc = UNKNOWN_LOCATION;
-+ location_t goto_loc = UNKNOWN_LOCATION;
- if (cp_parser_allow_gnu_extensions_p (parser))
- for (;;)
- {
-+ cp_token *token = cp_lexer_peek_token (parser->lexer);
-+ location_t loc = token->location;
- switch (cp_lexer_peek_token (parser->lexer)->keyword)
- {
- case RID_VOLATILE:
-- if (volatile_p)
-- break;
-- volatile_p = true;
-+ if (volatile_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qT", token->u.value);
-+ inform (volatile_loc, "first seen here");
-+ }
-+ else
-+ volatile_loc = loc;
- cp_lexer_consume_token (parser->lexer);
- continue;
-
- case RID_INLINE:
-- if (inline_p || !parser->in_function_body)
-+ if (!parser->in_function_body)
- break;
-- inline_p = true;
-+ if (inline_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qT", token->u.value);
-+ inform (inline_loc, "first seen here");
-+ }
-+ else
-+ inline_loc = loc;
- cp_lexer_consume_token (parser->lexer);
- continue;
-
- case RID_GOTO:
-- if (goto_p || !parser->in_function_body)
-+ if (!parser->in_function_body)
- break;
-- goto_p = true;
-+ if (goto_loc)
-+ {
-+ error_at (loc, "duplicate asm qualifier %qT", token->u.value);
-+ inform (goto_loc, "first seen here");
-+ }
-+ else
-+ goto_loc = loc;
- cp_lexer_consume_token (parser->lexer);
- continue;
-
-@@ -19157,6 +19175,10 @@ cp_parser_asm_definition (cp_parser* parser)
- break;
- }
-
-+ bool volatile_p = (volatile_loc != UNKNOWN_LOCATION);
-+ bool inline_p = (inline_loc != UNKNOWN_LOCATION);
-+ bool goto_p = (goto_loc != UNKNOWN_LOCATION);
-+
- /* Look for the opening `('. */
- if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
- return;
-@@ -19248,8 +19270,7 @@ cp_parser_asm_definition (cp_parser* parser)
- CPP_CLOSE_PAREN))
- clobbers = cp_parser_asm_clobber_list (parser);
- }
-- else if (goto_p
-- && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE))
-+ else if (goto_p && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE))
- /* The labels are coming next. */
- labels_p = true;
-
diff --git a/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch b/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch
deleted file mode 100644
index 0ee1c6b0d..000000000
--- a/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From patchwork Thu Dec 27 14:59:11 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [6/8] c/c++, asm: Use nicer error for const and restrict
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13823
-Message-Id: <a46fb9bafc04d68b39d57a57a8923e3667526f44.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:11 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-Not all qualifiers are asm qualifiers. We can talk about that in a
-nicer way than just giving a generic parser error.
-
-This also adds two testcases for C++, that previously were for C only.
-
-2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
-
-c/
- * c-parser.c (c_parser_asm_statement) <RID_CONST, RID_RESTRICT>: Give
- a more specific error message (instead of just falling through).
-
-cp/
- * parser.c (cp_parser_asm_definition) <RID_CONST, RID_RESTRICT>: Give
- a more specific error message (instead of just falling through).
-
-testsuite/
- * g++.dg/asm-qual-1.C: New testcase.
- * g++.dg/asm-qual-2.C: New testcase.
- * gcc.dg/asm-qual-1.c: Update.
----
- gcc/c/c-parser.c | 6 +++++
- gcc/cp/parser.c | 6 +++++
- gcc/testsuite/g++.dg/asm-qual-1.C | 13 +++++++++++
- gcc/testsuite/g++.dg/asm-qual-2.C | 46 +++++++++++++++++++++++++++++++++++++++
- gcc/testsuite/gcc.dg/asm-qual-1.c | 6 ++---
- 5 files changed, 73 insertions(+), 4 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/asm-qual-1.C
- create mode 100644 gcc/testsuite/g++.dg/asm-qual-2.C
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index ca04910..4baad62 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6343,6 +6343,12 @@ c_parser_asm_statement (c_parser *parser)
- c_parser_consume_token (parser);
- continue;
-
-+ case RID_CONST:
-+ case RID_RESTRICT:
-+ error_at (loc, "%qE is not an asm qualifier", token->value);
-+ c_parser_consume_token (parser);
-+ continue;
-+
- default:
- break;
- }
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 44fdace..36d82b8 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19169,6 +19169,12 @@ cp_parser_asm_definition (cp_parser* parser)
- cp_lexer_consume_token (parser->lexer);
- continue;
-
-+ case RID_CONST:
-+ case RID_RESTRICT:
-+ error_at (loc, "%qT is not an asm qualifier", token->u.value);
-+ cp_lexer_consume_token (parser->lexer);
-+ continue;
-+
- default:
- break;
- }
-diff --git a/gcc/testsuite/g++.dg/asm-qual-1.C b/gcc/testsuite/g++.dg/asm-qual-1.C
-new file mode 100644
-index 0000000..3fba592
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/asm-qual-1.C
-@@ -0,0 +1,13 @@
-+// Test that qualifiers other than volatile are disallowed on asm.
-+// { dg-do compile }
-+// { dg-options "-std=gnu++98" }
-+
-+void
-+f ()
-+{
-+ asm volatile ("");
-+
-+ asm const (""); // { dg-error {'const' is not an asm qualifier} }
-+
-+ asm __restrict (""); // { dg-error {'__restrict' is not an asm qualifier} }
-+}
-diff --git a/gcc/testsuite/g++.dg/asm-qual-2.C b/gcc/testsuite/g++.dg/asm-qual-2.C
-new file mode 100644
-index 0000000..52968bd
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/asm-qual-2.C
-@@ -0,0 +1,46 @@
-+// Test that qualifiers on asm are allowed in any order.
-+// { dg-do compile }
-+// { dg-options "-std=c++98" }
-+
-+void
-+f ()
-+{
-+ asm volatile goto ("" :::: lab);
-+ asm volatile inline ("" :::);
-+ asm inline volatile ("" :::);
-+ asm inline goto ("" :::: lab);
-+ asm goto volatile ("" :::: lab);
-+ asm goto inline ("" :::: lab);
-+
-+ asm volatile inline goto ("" :::: lab);
-+ asm volatile goto inline ("" :::: lab);
-+ asm inline volatile goto ("" :::: lab);
-+ asm inline goto volatile ("" :::: lab);
-+ asm goto volatile inline ("" :::: lab);
-+ asm goto inline volatile ("" :::: lab);
-+
-+ /* Duplicates are not allowed. */
-+ asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */
-+ asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */
-+ asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */
-+ asm goto goto volatile ("" :::: lab); /* { dg-error "" } */
-+ asm goto volatile goto ("" :::: lab); /* { dg-error "" } */
-+ asm volatile goto goto ("" :::: lab); /* { dg-error "" } */
-+
-+ asm inline volatile volatile ("" :::); /* { dg-error "" } */
-+ asm volatile inline volatile ("" :::); /* { dg-error "" } */
-+ asm volatile volatile inline ("" :::); /* { dg-error "" } */
-+ asm inline inline volatile ("" :::); /* { dg-error "" } */
-+ asm inline volatile inline ("" :::); /* { dg-error "" } */
-+ asm volatile inline inline ("" :::); /* { dg-error "" } */
-+
-+ asm goto inline inline ("" :::: lab); /* { dg-error "" } */
-+ asm inline goto inline ("" :::: lab); /* { dg-error "" } */
-+ asm inline inline goto ("" :::: lab); /* { dg-error "" } */
-+ asm goto goto inline ("" :::: lab); /* { dg-error "" } */
-+ asm goto inline goto ("" :::: lab); /* { dg-error "" } */
-+ asm inline goto goto ("" :::: lab); /* { dg-error "" } */
-+
-+lab:
-+ ;
-+}
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c
-index cb37283..eff6b45 100644
---- a/gcc/testsuite/gcc.dg/asm-qual-1.c
-+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c
-@@ -8,9 +8,7 @@ f (void)
- {
- asm volatile ("");
-
-- asm const (""); /* { dg-error {expected '\(' before 'const'} } */
-- /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */
-+ asm const (""); /* { dg-error {'const' is not an asm qualifier} } */
-
-- asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */
-- /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */
-+ asm restrict (""); /* { dg-error {'restrict' is not an asm qualifier} } */
- }
diff --git a/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch b/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
deleted file mode 100644
index e124f7c2b..000000000
--- a/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From patchwork Thu Dec 27 14:59:12 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [7/8] c++, asm: Do not handle any asm-qualifiers in top-level asm
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13824
-Message-Id: <7d103b408f9dda95b9d9f5182281ae6bb3947716.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:12 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-Previously, "volatile" was allowed. Changing this simplifies the code,
-makes things more regular, and makes the C and C++ frontends handle
-this the same way.
-
-2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
-
-cp/
- * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers
- on top-level asm.
-
-testsuite/
- * g++.dg/asm-qual-3.C: New testcase.
- * gcc.dg/asm-qual-3.c: New testcase.
----
- gcc/cp/parser.c | 7 ++-----
- gcc/testsuite/g++.dg/asm-qual-3.C | 12 ++++++++++++
- gcc/testsuite/gcc.dg/asm-qual-3.c | 9 +++++++++
- 3 files changed, 23 insertions(+), 5 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/asm-qual-3.C
- create mode 100644 gcc/testsuite/gcc.dg/asm-qual-3.c
-
---
-1.8.3.1
-
-diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
-index 36d82b8..afc7b96 100644
---- a/gcc/cp/parser.c
-+++ b/gcc/cp/parser.c
-@@ -19125,7 +19125,8 @@ cp_parser_asm_definition (cp_parser* parser)
- location_t volatile_loc = UNKNOWN_LOCATION;
- location_t inline_loc = UNKNOWN_LOCATION;
- location_t goto_loc = UNKNOWN_LOCATION;
-- if (cp_parser_allow_gnu_extensions_p (parser))
-+
-+ if (cp_parser_allow_gnu_extensions_p (parser) && parser->in_function_body)
- for (;;)
- {
- cp_token *token = cp_lexer_peek_token (parser->lexer);
-@@ -19144,8 +19145,6 @@ cp_parser_asm_definition (cp_parser* parser)
- continue;
-
- case RID_INLINE:
-- if (!parser->in_function_body)
-- break;
- if (inline_loc)
- {
- error_at (loc, "duplicate asm qualifier %qT", token->u.value);
-@@ -19157,8 +19156,6 @@ cp_parser_asm_definition (cp_parser* parser)
- continue;
-
- case RID_GOTO:
-- if (!parser->in_function_body)
-- break;
- if (goto_loc)
- {
- error_at (loc, "duplicate asm qualifier %qT", token->u.value);
-diff --git a/gcc/testsuite/g++.dg/asm-qual-3.C b/gcc/testsuite/g++.dg/asm-qual-3.C
-new file mode 100644
-index 0000000..95c9b57
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/asm-qual-3.C
-@@ -0,0 +1,12 @@
-+// Test that asm-qualifiers are not allowed on toplevel asm.
-+// { dg-do compile }
-+// { dg-options "-std=gnu++98" }
-+
-+asm const (""); // { dg-error {expected '\(' before 'const'} }
-+asm volatile (""); // { dg-error {expected '\(' before 'volatile'} }
-+asm restrict (""); // { dg-error {expected '\(' before 'restrict'} }
-+asm inline (""); // { dg-error {expected '\(' before 'inline'} }
-+asm goto (""); // { dg-error {expected '\(' before 'goto'} }
-+
-+// There are many other things wrong with this code, so:
-+// { dg-excess-errors "" }
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-3.c b/gcc/testsuite/gcc.dg/asm-qual-3.c
-new file mode 100644
-index 0000000..f85d8bf
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/asm-qual-3.c
-@@ -0,0 +1,9 @@
-+/* Test that asm-qualifiers are not allowed on toplevel asm. */
-+/* { dg-do compile } */
-+/* { dg-options "-std=gnu99" } */
-+
-+asm const (""); /* { dg-error {expected '\(' before 'const'} } */
-+asm volatile (""); /* { dg-error {expected '\(' before 'volatile'} } */
-+asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */
-+asm inline (""); /* { dg-error {expected '\(' before 'inline'} } */
-+asm goto (""); /* { dg-error {expected '\(' before 'goto'} } */
diff --git a/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch b/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch
deleted file mode 100644
index 2b75e3f1c..000000000
--- a/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From patchwork Thu Dec 27 14:59:13 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [8/8] c: Don't error for const or restrict as asm-qualifier
-X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
-X-Patchwork-Id: 13825
-Message-Id: <f0e4c2f3f89d0587a2ae547432d9a94bca9d06ff.1545922222.git.segher@kernel.crashing.org>
-To: gcc-patches@gcc.gnu.org
-Cc: Segher Boessenkool <segher@kernel.crashing.org>
-Date: Thu, 27 Dec 2018 14:59:13 +0000
-From: Segher Boessenkool <segher@kernel.crashing.org>
-List-Id: <gcc-patches.gcc.gnu.org>
-
-2018-12-27 Segher Boessenkool <segher@kernel.crashing.org>
-
-c/
- * c-parser.c (c_parser_asm_statement): Output a warning instead of an
- error for const and restrict.
-
-testsuite/
- * gcc.dg/asm-qual-1.c: Adjust.
-
----
- gcc/c/c-parser.c | 2 +-
- gcc/testsuite/gcc.dg/asm-qual-1.c | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
---
-1.8.3.1
-
-diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
-index 4baad62..a960169 100644
---- a/gcc/c/c-parser.c
-+++ b/gcc/c/c-parser.c
-@@ -6345,7 +6345,7 @@ c_parser_asm_statement (c_parser *parser)
-
- case RID_CONST:
- case RID_RESTRICT:
-- error_at (loc, "%qE is not an asm qualifier", token->value);
-+ warning_at (loc, 0, "%qE is not an asm qualifier", token->value);
- c_parser_consume_token (parser);
- continue;
-
-diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c
-index eff6b45..4982a6b 100644
---- a/gcc/testsuite/gcc.dg/asm-qual-1.c
-+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c
-@@ -8,7 +8,7 @@ f (void)
- {
- asm volatile ("");
-
-- asm const (""); /* { dg-error {'const' is not an asm qualifier} } */
-+ asm const (""); /* { dg-warning {'const' is not an asm qualifier} } */
-
-- asm restrict (""); /* { dg-error {'restrict' is not an asm qualifier} } */
-+ asm restrict (""); /* { dg-warning {'restrict' is not an asm qualifier} } */
- }
diff --git a/source/d/libtool/libtool.SlackBuild b/source/d/libtool/libtool.SlackBuild
index 5a011fdb9..419a0d59e 100755
--- a/source/d/libtool/libtool.SlackBuild
+++ b/source/d/libtool/libtool.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libtool
VERSION=${VERSION:-$(echo libtool-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-10}
+BUILD=${BUILD:-11}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/d/llvm/llvm.SlackBuild b/source/d/llvm/llvm.SlackBuild
index 22b55993c..c103a2cf6 100755
--- a/source/d/llvm/llvm.SlackBuild
+++ b/source/d/llvm/llvm.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=llvm
VERSION=${VERSION:-$(echo llvm-*.tar.xz | rev | cut -f 4- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
@@ -148,6 +148,7 @@ cd build
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_USE_OPROFILE=ON \
+ -DLLVM_INSTALL_UTILS=ON \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DCLANG_RESOURCE_DIR="../lib${LIBDIRSUFFIX}/clang/${VERSION}" \
.. || exit 1
diff --git a/source/d/swig/swig.SlackBuild b/source/d/swig/swig.SlackBuild
index e3b4982c1..2afe26d31 100755
--- a/source/d/swig/swig.SlackBuild
+++ b/source/d/swig/swig.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/bash
# Copyright 2009 Robby Workman, Northport, Alabama, USA
-# Copyright 2009, 2010, 2011, 2018 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2009, 2010, 2011, 2018, 2019 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,8 +24,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=swig
-VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -64,7 +64,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf swig-$VERSION
-tar xvf $CWD/swig-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/swig-$VERSION.tar.?z || exit 1
cd swig-$VERSION
chown -R root:root .
find . \
@@ -110,7 +110,7 @@ fi
mkdir -p $PKG/usr/doc/swig-$VERSION
cp -a \
- ANNOUNCE CHANGES* COPYING* FUTURE INSTALL LICENSE NEW README TODO \
+ ANNOUNCE CHANGES* COPY* FUTURE INSTALL LICENSE* NEW* README* RELEASENOTES TODO \
Examples Doc/Manual Doc/Devel \
$PKG/usr/doc/swig-$VERSION
# Fix permissions and wipe the pdf bloat
diff --git a/source/l/qt/patches/qt-4.8-poll.patch b/source/l/qt/patches/qt-4.8-poll.patch
new file mode 100644
index 000000000..aed363c66
--- /dev/null
+++ b/source/l/qt/patches/qt-4.8-poll.patch
@@ -0,0 +1,812 @@
+diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp 2014-03-31 18:04:05.958260978 -0500
+@@ -158,13 +158,6 @@ static void qt_sa_sigchld_sigaction(int
+ }
+ }
+
+-static inline void add_fd(int &nfds, int fd, fd_set *fdset)
+-{
+- FD_SET(fd, fdset);
+- if ((fd) > nfds)
+- nfds = fd;
+-}
+-
+ struct QProcessInfo {
+ QProcess *process;
+ int deathPipe;
+@@ -256,9 +249,9 @@ QProcessManager::~QProcessManager()
+ void QProcessManager::run()
+ {
+ forever {
+- fd_set readset;
+- FD_ZERO(&readset);
+- FD_SET(qt_qprocess_deadChild_pipe[0], &readset);
++ pollfd fd;
++ fd.fd = qt_qprocess_deadChild_pipe[0];
++ fd.events = POLLIN;
+
+ #if defined (QPROCESS_DEBUG)
+ qDebug() << "QProcessManager::run() waiting for children to die";
+@@ -267,8 +260,8 @@ void QProcessManager::run()
+ // block forever, or until activity is detected on the dead child
+ // pipe. the only other peers are the SIGCHLD signal handler, and the
+ // QProcessManager destructor.
+- int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0);
+- if (nselect < 0) {
++ int ret = qt_safe_poll(&fd, 1, -1, /* retry_eintr */ false);
++ if (ret < 0) {
+ if (errno == EINTR)
+ continue;
+ break;
+@@ -1027,17 +1020,6 @@ void QProcessPrivate::killProcess()
+ ::kill(pid_t(pid), SIGKILL);
+ }
+
+-static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout)
+-{
+- if (timeout < 0)
+- return qt_safe_select(nfds, fdread, fdwrite, 0, 0);
+-
+- struct timeval tv;
+- tv.tv_sec = timeout / 1000;
+- tv.tv_usec = (timeout % 1000) * 1000;
+- return qt_safe_select(nfds, fdread, fdwrite, 0, &tv);
+-}
+-
+ /*
+ Returns the difference between msecs and elapsed. If msecs is -1,
+ however, -1 is returned.
+@@ -1060,10 +1042,10 @@ bool QProcessPrivate::waitForStarted(int
+ childStartedPipe[0]);
+ #endif
+
+- fd_set fds;
+- FD_ZERO(&fds);
+- FD_SET(childStartedPipe[0], &fds);
+- if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) {
++ pollfd fd;
++ fd.fd = childStartedPipe[0];
++ fd.events = POLLIN;
++ if (qt_safe_poll(&fd, 1, msecs) == 0) {
+ processError = QProcess::Timedout;
+ q->setErrorString(QProcess::tr("Process operation timed out"));
+ #if defined (QPROCESS_DEBUG)
+@@ -1079,6 +1061,47 @@ bool QProcessPrivate::waitForStarted(int
+ return startedEmitted;
+ }
+
++class QProcessFDSet {
++ pollfd fds[5];
++
++ static size_t size()
++ {
++ return sizeof(fds)/sizeof(fds[0]);
++ }
++
++public:
++ QProcessFDSet(QProcessPrivate &proc)
++ {
++ for (size_t i = 0; i < size(); ++i) {
++ fds[i].fd = -1;
++ fds[i].events = POLLIN;
++ }
++ death().fd = proc.deathPipe[0];
++
++ if (proc.processState == QProcess::Starting)
++ started().fd = proc.childStartedPipe[0];
++
++ stdout().fd = proc.stdoutChannel.pipe[0];
++ stderr().fd = proc.stderrChannel.pipe[0];
++
++ if (!proc.writeBuffer.isEmpty()) {
++ stdin().fd = proc.stdinChannel.pipe[1];
++ stdin().events = POLLOUT;
++ }
++ }
++
++ int poll(int timeout)
++ {
++ return qt_safe_poll(fds, size(), timeout);
++ }
++
++ pollfd &death() { return fds[0]; }
++ pollfd &started() { return fds[1]; }
++ pollfd &stdout() { return fds[2]; }
++ pollfd &stderr() { return fds[3]; }
++ pollfd &stdin() { return fds[4]; }
++};
++
+ bool QProcessPrivate::waitForReadyRead(int msecs)
+ {
+ Q_Q(QProcess);
+@@ -1090,28 +1113,9 @@ bool QProcessPrivate::waitForReadyRead(i
+ stopWatch.start();
+
+ forever {
+- fd_set fdread;
+- fd_set fdwrite;
+-
+- FD_ZERO(&fdread);
+- FD_ZERO(&fdwrite);
+-
+- int nfds = deathPipe[0];
+- FD_SET(deathPipe[0], &fdread);
+-
+- if (processState == QProcess::Starting)
+- add_fd(nfds, childStartedPipe[0], &fdread);
+-
+- if (stdoutChannel.pipe[0] != -1)
+- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
+- if (stderrChannel.pipe[0] != -1)
+- add_fd(nfds, stderrChannel.pipe[0], &fdread);
+-
+- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
+- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
+-
++ QProcessFDSet fdset(*this);
+ int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
+- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
++ int ret = fdset.poll(timeout);
+ if (ret < 0) {
+ break;
+ }
+@@ -1121,18 +1125,18 @@ bool QProcessPrivate::waitForReadyRead(i
+ return false;
+ }
+
+- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
++ if (qt_readable(fdset.started())) {
+ if (!_q_startupNotification())
+ return false;
+ }
+
+ bool readyReadEmitted = false;
+- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) {
++ if (qt_readable(fdset.stdout())) {
+ bool canRead = _q_canReadStandardOutput();
+ if (processChannel == QProcess::StandardOutput && canRead)
+ readyReadEmitted = true;
+ }
+- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) {
++ if (qt_readable(fdset.stderr())) {
+ bool canRead = _q_canReadStandardError();
+ if (processChannel == QProcess::StandardError && canRead)
+ readyReadEmitted = true;
+@@ -1140,13 +1144,13 @@ bool QProcessPrivate::waitForReadyRead(i
+ if (readyReadEmitted)
+ return true;
+
+- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
++ if (qt_writable(fdset.stdin()))
+ _q_canWrite();
+
+- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
++ if (qt_readable(fdset.death())) {
+ if (_q_processDied())
+ return false;
+- }
++ }
+ }
+ return false;
+ }
+@@ -1162,29 +1166,9 @@ bool QProcessPrivate::waitForBytesWritte
+ stopWatch.start();
+
+ while (!writeBuffer.isEmpty()) {
+- fd_set fdread;
+- fd_set fdwrite;
+-
+- FD_ZERO(&fdread);
+- FD_ZERO(&fdwrite);
+-
+- int nfds = deathPipe[0];
+- FD_SET(deathPipe[0], &fdread);
+-
+- if (processState == QProcess::Starting)
+- add_fd(nfds, childStartedPipe[0], &fdread);
+-
+- if (stdoutChannel.pipe[0] != -1)
+- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
+- if (stderrChannel.pipe[0] != -1)
+- add_fd(nfds, stderrChannel.pipe[0], &fdread);
+-
+-
+- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
+- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
+-
++ QProcessFDSet fdset(*this);
+ int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
+- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
++ int ret = fdset.poll(timeout);
+ if (ret < 0) {
+ break;
+ }
+@@ -1195,24 +1179,24 @@ bool QProcessPrivate::waitForBytesWritte
+ return false;
+ }
+
+- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
++ if (qt_readable(fdset.started())) {
+ if (!_q_startupNotification())
+ return false;
+ }
+
+- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
++ if (qt_writable(fdset.stdin()))
+ return _q_canWrite();
+
+- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
++ if (qt_readable(fdset.stdout()))
+ _q_canReadStandardOutput();
+
+- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
++ if (qt_readable(fdset.stderr()))
+ _q_canReadStandardError();
+
+- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
+- if (_q_processDied())
+- return false;
+- }
++ if (qt_readable(fdset.death())) {
++ if (_q_processDied())
++ return false;
++ }
+ }
+
+ return false;
+@@ -1229,29 +1213,9 @@ bool QProcessPrivate::waitForFinished(in
+ stopWatch.start();
+
+ forever {
+- fd_set fdread;
+- fd_set fdwrite;
+- int nfds = -1;
+-
+- FD_ZERO(&fdread);
+- FD_ZERO(&fdwrite);
+-
+- if (processState == QProcess::Starting)
+- add_fd(nfds, childStartedPipe[0], &fdread);
+-
+- if (stdoutChannel.pipe[0] != -1)
+- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
+- if (stderrChannel.pipe[0] != -1)
+- add_fd(nfds, stderrChannel.pipe[0], &fdread);
+-
+- if (processState == QProcess::Running)
+- add_fd(nfds, deathPipe[0], &fdread);
+-
+- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
+- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
+-
++ QProcessFDSet fdset(*this);
+ int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
+- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
++ int ret = fdset.poll(timeout);
+ if (ret < 0) {
+ break;
+ }
+@@ -1261,20 +1225,20 @@ bool QProcessPrivate::waitForFinished(in
+ return false;
+ }
+
+- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
++ if (qt_readable(fdset.started())) {
+ if (!_q_startupNotification())
+ return false;
+ }
+- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
++ if (qt_writable(fdset.stdin()))
+ _q_canWrite();
+
+- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
++ if (qt_readable(fdset.stdout()))
+ _q_canReadStandardOutput();
+
+- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
++ if (qt_readable(fdset.stderr()))
+ _q_canReadStandardError();
+
+- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
++ if (qt_readable(fdset.death())) {
+ if (_q_processDied())
+ return true;
+ }
+@@ -1284,10 +1248,10 @@ bool QProcessPrivate::waitForFinished(in
+
+ bool QProcessPrivate::waitForWrite(int msecs)
+ {
+- fd_set fdwrite;
+- FD_ZERO(&fdwrite);
+- FD_SET(stdinChannel.pipe[1], &fdwrite);
+- return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1;
++ pollfd fd;
++ fd.fd = stdinChannel.pipe[1];
++ fd.events = POLLIN;
++ return qt_safe_poll(&fd, 1, msecs);
+ }
+
+ void QProcessPrivate::findExitCode()
+diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp 2014-03-31 18:01:59.369715403 -0500
+@@ -99,4 +99,165 @@ int qt_safe_select(int nfds, fd_set *fdr
+ }
+ }
+
++#ifndef Q_OS_VXWORKS
++
++int qt_safe_poll(struct pollfd *fds, int nfds, int timeout_ms, bool retry_eintr)
++{
++ if (nfds == 0)
++ return 0;
++ if (nfds < 0) {
++ errno = EINVAL;
++ return -1;
++ }
++
++ // Retry on ret == 0 if the deadline has not yet passed because
++ // Linux can return early from the syscall, without setting EINTR.
++ if (timeout_ms < 0) {
++ forever {
++ int ret = ::poll(fds, nfds, -1);
++ if (ret > 0)
++ return ret;
++ if (retry_eintr) {
++ if (ret == 0 || ret == -1 && errno == EINTR) {
++ continue;
++ } else {
++ return -1;
++ }
++ }
++ if (ret == 0) {
++ errno = EINTR;
++ return -1;
++ }
++ return ret;
++ }
++ }
++
++ timeval previous = qt_gettime();
++ timeval deadline = previous;
++ deadline.tv_sec += timeout_ms / 1000;
++ deadline.tv_usec += (timeout_ms % 1000) * 1000;
++ if (deadline.tv_usec >= 1000000) {
++ ++deadline.tv_sec;
++ deadline.tv_usec -= 1000000;
++ }
++ int remaining = timeout_ms;
++
++ forever {
++ int ret = ::poll(fds, nfds, remaining);
++ if (ret > 0)
++ return ret;
++ timeval now = qt_gettime();
++ if ((now.tv_sec > deadline.tv_sec // past deadline
++ || (now.tv_sec == deadline.tv_sec
++ && now.tv_usec >= deadline.tv_usec))
++ || (now.tv_sec < previous.tv_sec // time warp
++ || (now.tv_sec == previous.tv_sec
++ && now.tv_usec < previous.tv_usec))
++ || (ret < 0 && (errno != EINTR || !retry_eintr))) // other error
++ return ret;
++ if (ret == 0 && !retry_eintr) {
++ errno = EINTR;
++ return -1;
++ }
++ remaining = (deadline.tv_sec - now.tv_sec) * 1000
++ + (deadline.tv_usec - now.tv_usec) / 1000;
++ previous = now;
++ }
++}
++
++#else
++
++// Poll emulation for VxWorks.
++
++static int mark_bad_descriptors(pollfd *fds, int nfds)
++{
++ fd_set r;
++ FD_ZERO(&r);
++ struct timeval tv;
++ tv.tv_sec = 0;
++ tv.tv_usec = 0;
++ int ret = 0;
++
++ // Check each descriptor invidually for badness.
++ for (int i = 0; i < nfds; ++i) {
++ pollfd &fd(fds[i]);
++ if (fd.fd >= 0) {
++ FD_SET(fd.fd, &r);
++ int ret = qt_safe_select(fd.fd + 1, &r, NULL, NULL, &tv);
++ FD_CLR(fd.fd, &r);
++ if (ret < 0 && errno == EBADF) {
++ fd.revents = POLLNVAL;
++ ++ret;
++ }
++ }
++ }
++ Q_ASSERT(ret > 0);
++ return ret;
++}
++
++int qt_safe_poll(pollfd *fds, int nfds, int timeout, bool retry_eintr)
++{
++ fd_set r, w;
++ FD_ZERO(&r);
++ FD_ZERO(&w);
++ int maxfd = -1;
++
++ // Extract the watched descriptors.
++ for (int i = 0; i < nfds; ++i) {
++ pollfd &fd(fds[i]);
++ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
++ if (fd.events & POLLIN) {
++ FD_SET(fd.fd, &r);
++ if (fd.fd > maxfd)
++ maxfd = fd.fd;
++ }
++ if (fd.events & POLLOUT) {
++ FD_SET(fd.fd, &w);
++ if (fd.fd > maxfd)
++ maxfd = fd.fd;
++ }
++ }
++ }
++
++ // If timeout is negative, wait indefinitely for activity.
++ timeval tv;
++ timeval *ptv;
++ if (timeout >= 0) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ ptv = &tv;
++ } else
++ ptv = NULL;
++
++ int ret;
++ if (retry_eintr)
++ ret = qt_safe_select(maxfd + 1, &r, &w, NULL, ptv);
++ else
++ ret = ::select(maxfd + 1, &r, &w, NULL, ptv);
++ if (ret < 0 && errno == EBADF) {
++ return mark_bad_descriptors(fds, nfds);
++ }
++ if (ret <= 0)
++ return ret;
++
++ // Set the revents flags.
++ ret = 0;
++ for (int i = 0; i < nfds; ++i) {
++ pollfd &fd(fds[i]);
++ fd.revents = 0;
++ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
++ if ((fd.events & POLLIN) && FD_ISSET(fd.fd, &r))
++ fd.revents |= POLLIN;
++ if ((fd.events & POLLOUT) && FD_ISSET(fd.fd, &w))
++ fd.revents |= POLLOUT;
++ if (fd.revents)
++ ++ret;
++ }
++ }
++ Q_ASSERT(ret > 0);
++ return ret;
++}
++
++#endif
++
+ QT_END_NAMESPACE
+diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h
+--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll 2014-03-30 15:36:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h 2014-03-31 18:01:59.370715392 -0500
+@@ -345,9 +345,42 @@ static inline pid_t qt_safe_waitpid(pid_
+
+ timeval qt_gettime(); // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp
+
++// Deprecated due to FD_SETSIZE limitation, use qt_safe_poll instead.
+ Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept,
+ const struct timeval *tv);
+
++#ifndef Q_OS_VXWORKS
++#include <poll.h>
++#else
++
++// Poll emulation for VxWorks.
++
++struct pollfd {
++ int fd;
++ short events;
++ short revents;
++};
++
++#define POLLIN 1
++#define POLLOUT 2
++#define POLLERR 4
++#define POLLHUP 8
++#define POLLNVAL 16
++#endif
++
++inline bool qt_readable(const pollfd &fd)
++{
++ return fd.fd >= 0 && (fd.revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL)) != 0;
++}
++
++inline bool qt_writable(const pollfd &fd)
++{
++ return fd.fd >= 0 && (fd.revents & (POLLOUT | POLLHUP | POLLERR | POLLNVAL)) != 0;
++}
++
++Q_CORE_EXPORT int qt_safe_poll(pollfd *fds, int nfds, int timeout,
++ bool retry_eintr = true);
++
+ // according to X/OPEN we have to define semun ourselves
+ // we use prefix as on some systems sem.h will have it
+ struct semid_ds;
+diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp 2014-03-31 18:01:59.370715392 -0500
+@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnec
+
+ void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut)
+ {
+- fd_set readfds;
+- FD_ZERO(&readfds);
+- FD_SET(listenSocket, &readfds);
++ struct pollfd fd;
++ fd.fd = listenSocket;
++ fd.events = POLLIN;
+
+- timeval timeout;
+- timeout.tv_sec = msec / 1000;
+- timeout.tv_usec = (msec % 1000) * 1000;
+-
+- int result = -1;
+- result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout);
++ int result = qt_safe_poll(&fd, 1, msec);
+ if (-1 == result) {
+ setError(QLatin1String("QLocalServer::waitForNewConnection"));
+ closeServer();
+diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp 2014-03-31 18:01:59.370715392 -0500
+@@ -56,10 +56,6 @@
+ #include <qdebug.h>
+ #include <qelapsedtimer.h>
+
+-#ifdef Q_OS_VXWORKS
+-# include <selectLib.h>
+-#endif
+-
+ #define QT_CONNECT_TIMEOUT 30000
+
+ QT_BEGIN_NAMESPACE
+@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int
+ if (state() != ConnectingState)
+ return (state() == ConnectedState);
+
+- fd_set fds;
+- FD_ZERO(&fds);
+- FD_SET(d->connectingSocket, &fds);
+-
+- timeval timeout;
+- timeout.tv_sec = msec / 1000;
+- timeout.tv_usec = (msec % 1000) * 1000;
+-
+- // timeout can not be 0 or else select will return an error.
+- if (0 == msec)
+- timeout.tv_usec = 1000;
++ pollfd fd;
++ fd.fd = d->connectingSocket;
++ fd.events = POLLIN | POLLOUT;
+
+ int result = -1;
+ // on Linux timeout will be updated by select, but _not_ on other systems.
+ QElapsedTimer timer;
++ int remaining = msec;
+ timer.start();
+- while (state() == ConnectingState
+- && (-1 == msec || timer.elapsed() < msec)) {
+-#ifdef Q_OS_SYMBIAN
+- // On Symbian, ready-to-write is signaled when non-blocking socket
+- // connect is finised. Is ready-to-read really used on other
+- // UNIX paltforms when using non-blocking AF_UNIX socket?
+- result = ::select(d->connectingSocket + 1, 0, &fds, 0, &timeout);
+-#else
+- result = ::select(d->connectingSocket + 1, &fds, 0, 0, &timeout);
+-#endif
++ while (state() == ConnectingState) {
++ result = qt_safe_poll(&fd, 1, remaining, /* retry_eintr */ false);
+ if (-1 == result && errno != EINTR) {
+ d->errorOccurred( QLocalSocket::UnknownSocketError,
+ QLatin1String("QLocalSocket::waitForConnected"));
+@@ -553,6 +534,11 @@ bool QLocalSocket::waitForConnected(int
+ }
+ if (result > 0)
+ d->_q_connectToSocket();
++ if (msec >= 0) {
++ remaining = timer.elapsed() - msec;
++ if (remaining < 0)
++ break;
++ }
+ }
+
+ return (state() == ConnectedState);
+diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp 2014-03-31 18:01:59.371715381 -0500
+@@ -1068,48 +1068,40 @@ qint64 QNativeSocketEnginePrivate::nativ
+
+ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) const
+ {
+- fd_set fds;
+- FD_ZERO(&fds);
+- FD_SET(socketDescriptor, &fds);
+-
+- struct timeval tv;
+- tv.tv_sec = timeout / 1000;
+- tv.tv_usec = (timeout % 1000) * 1000;
+-
+- int retval;
+- if (selectForRead)
+- retval = qt_safe_select(socketDescriptor + 1, &fds, 0, 0, timeout < 0 ? 0 : &tv);
+- else
+- retval = qt_safe_select(socketDescriptor + 1, 0, &fds, 0, timeout < 0 ? 0 : &tv);
+-
+- return retval;
++ struct pollfd fd;
++ fd.fd = socketDescriptor;
++ if (selectForRead) {
++ fd.events = POLLIN;
++ } else {
++ fd.events = POLLOUT;
++ }
++ return qt_safe_poll(&fd, 1, timeout);
+ }
+
+ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool checkWrite,
+ bool *selectForRead, bool *selectForWrite) const
+ {
+- fd_set fdread;
+- FD_ZERO(&fdread);
++ struct pollfd fd;
++ fd.fd = socketDescriptor;
+ if (checkRead)
+- FD_SET(socketDescriptor, &fdread);
+-
+- fd_set fdwrite;
+- FD_ZERO(&fdwrite);
++ fd.events = POLLIN;
++ else
++ fd.events = 0;
+ if (checkWrite)
+- FD_SET(socketDescriptor, &fdwrite);
+-
+- struct timeval tv;
+- tv.tv_sec = timeout / 1000;
+- tv.tv_usec = (timeout % 1000) * 1000;
+-
+- int ret;
+- ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv);
+-
++ fd.events |= POLLOUT;
++ int ret = qt_safe_poll(&fd, 1, timeout);
+ if (ret <= 0)
+- return ret;
+- *selectForRead = FD_ISSET(socketDescriptor, &fdread);
+- *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite);
+-
++ return ret;
++ bool r = (fd.revents & (POLLIN | POLLHUP | POLLERR)) != 0;
++ bool w = (fd.revents & (POLLOUT | POLLHUP | POLLERR)) != 0;
++ // Emulate the return value from select(2).
++ ret = 0;
++ if (r)
++ ++ret;
++ if (w)
++ ++ret;
++ *selectForRead = r;
++ *selectForWrite = w;
+ return ret;
+ }
+
+diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp 2014-03-31 18:01:59.371715381 -0500
+@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int d
+ #endif
+
+ #include "q3socketdevice.h"
++#include "private/qcore_unix_p.h"
+
+ #ifndef QT_NO_NETWORK
+
+@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int
+ {
+ if ( !isValid() )
+ return -1;
+- if ( fd >= FD_SETSIZE )
+- return -1;
+-
+- fd_set fds;
+- struct timeval tv;
+-
+- FD_ZERO( &fds );
+- FD_SET( fd, &fds );
+-
+- tv.tv_sec = msecs / 1000;
+- tv.tv_usec = (msecs % 1000) * 1000;
+
+- int rv = select( fd+1, &fds, 0, 0, msecs < 0 ? 0 : &tv );
++ pollfd pfd;
++ pfd.fd = fd;
++ int rv = qt_safe_poll(&pfd, 1, msecs, /* retry_eintr */ false);
+
+ if ( rv < 0 )
+ return -1;
+diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp 2014-03-31 18:01:59.372715370 -0500
+@@ -981,13 +981,10 @@ bool Q3Process::isRunning() const
+ // On heavy processing, the socket notifier for the sigchild might not
+ // have found time to fire yet.
+ if ( d->procManager && d->procManager->sigchldFd[1] < FD_SETSIZE ) {
+- fd_set fds;
+- struct timeval tv;
+- FD_ZERO( &fds );
+- FD_SET( d->procManager->sigchldFd[1], &fds );
+- tv.tv_sec = 0;
+- tv.tv_usec = 0;
+- if ( ::select( d->procManager->sigchldFd[1]+1, &fds, 0, 0, &tv ) > 0 )
++ pollfd fd;
++ fd.fd = d->procManager->sigchldFd[1];
++ fd.events = POLLIN;
++ if ( qt_safe_poll(&fd, 1, 0, /* retry_eintr */ false) > 0 )
+ d->procManager->sigchldHnd( d->procManager->sigchldFd[1] );
+ }
+
+@@ -1124,29 +1121,21 @@ void Q3Process::socketRead( int fd )
+ }
+ }
+
+- if ( fd < FD_SETSIZE ) {
+- fd_set fds;
+- struct timeval tv;
+- FD_ZERO( &fds );
+- FD_SET( fd, &fds );
+- tv.tv_sec = 0;
+- tv.tv_usec = 0;
+- while ( ::select( fd+1, &fds, 0, 0, &tv ) > 0 ) {
+- // prepare for the next round
+- FD_ZERO( &fds );
+- FD_SET( fd, &fds );
+- // read data
+- ba = new QByteArray( basize );
+- n = ::read( fd, ba->data(), basize );
+- if ( n > 0 ) {
+- ba->resize( n );
+- buffer->append( ba );
+- ba = 0;
+- } else {
+- delete ba;
+- ba = 0;
+- break;
+- }
++ pollfd pfd;
++ pfd.fd = fd;
++ pfd.events = POLLIN;
++ while (qt_safe_poll(&pfd, 1, 0)) {
++ // read data
++ ba = new QByteArray( basize );
++ n = ::read( fd, ba->data(), basize );
++ if ( n > 0 ) {
++ ba->resize( n );
++ buffer->append( ba );
++ ba = 0;
++ } else {
++ delete ba;
++ ba = 0;
++ break;
+ }
+ }
+
diff --git a/source/l/qt/patches/qt-aarch64.patch b/source/l/qt/patches/qt-aarch64.patch
new file mode 100644
index 000000000..cbe815dea
--- /dev/null
+++ b/source/l/qt/patches/qt-aarch64.patch
@@ -0,0 +1,514 @@
+diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64 qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri
+--- qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64 2015-05-08 21:48:32.714057739 -0500
++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri 2015-05-08 21:53:21.088761971 -0500
+@@ -1,3 +1,3 @@
+-SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore
++SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_aarch64.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore
+ SYNCQT.HEADER_CLASSES = ../../include/QtCore/QAbstractEventDispatcher ../../include/QtCore/QModelIndex ../../include/QtCore/QPersistentModelIndex ../../include/QtCore/QModelIndexList ../../include/QtCore/QAbstractItemModel ../../include/QtCore/QAbstractTableModel ../../include/QtCore/QAbstractListModel ../../include/QtCore/QBasicTimer ../../include/QtCore/QCoreApplication ../../include/QtCore/QtCleanUpFunction ../../include/QtCore/QEvent ../../include/QtCore/QTimerEvent ../../include/QtCore/QChildEvent ../../include/QtCore/QCustomEvent ../../include/QtCore/QDynamicPropertyChangeEvent ../../include/QtCore/QEventLoop ../../include/QtCore/QMetaMethod ../../include/QtCore/QMetaEnum ../../include/QtCore/QMetaProperty ../../include/QtCore/QMetaClassInfo ../../include/QtCore/QMetaType ../../include/QtCore/QMetaTypeId ../../include/QtCore/QMetaTypeId2 ../../include/QtCore/QMimeData ../../include/QtCore/QObjectList ../../include/QtCore/QObjectData ../../include/QtCore/QObject ../../include/QtCore/QObjectUserData ../../include/QtCore/QObjectCleanupHandler ../../include/QtCore/QGenericArgument ../../include/QtCore/QGenericReturnArgument ../../include/QtCore/QArgument ../../include/QtCore/QReturnArgument ../../include/QtCore/QMetaObject ../../include/QtCore/QMetaObjectAccessor ../../include/QtCore/QMetaObjectExtraData ../../include/QtCore/QPointer ../../include/QtCore/QSharedMemory ../../include/QtCore/QSignalMapper ../../include/QtCore/QSocketNotifier ../../include/QtCore/QSystemSemaphore ../../include/QtCore/QTimer ../../include/QtCore/QTranslator ../../include/QtCore/QVariant ../../include/QtCore/QVariantList ../../include/QtCore/QVariantMap ../../include/QtCore/QVariantHash ../../include/QtCore/QVariantComparisonHelper ../../include/QtCore/QAbstractAnimation ../../include/QtCore/QAnimationDriver ../../include/QtCore/QAnimationGroup ../../include/QtCore/QParallelAnimationGroup ../../include/QtCore/QPauseAnimation ../../include/QtCore/QPropertyAnimation ../../include/QtCore/QSequentialAnimationGroup ../../include/QtCore/QVariantAnimation ../../include/QtCore/QtAlgorithms ../../include/QtCore/QBitArray ../../include/QtCore/QBitRef ../../include/QtCore/QByteArray ../../include/QtCore/QByteRef ../../include/QtCore/QByteArrayMatcher ../../include/QtCore/QCache ../../include/QtCore/QLatin1Char ../../include/QtCore/QChar ../../include/QtCore/QtContainerFwd ../../include/QtCore/QContiguousCacheData ../../include/QtCore/QContiguousCacheTypedData ../../include/QtCore/QContiguousCache ../../include/QtCore/QCryptographicHash ../../include/QtCore/QDate ../../include/QtCore/QTime ../../include/QtCore/QDateTime ../../include/QtCore/QEasingCurve ../../include/QtCore/QElapsedTimer ../../include/QtCore/QHashData ../../include/QtCore/QHashDummyValue ../../include/QtCore/QHashDummyNode ../../include/QtCore/QHashNode ../../include/QtCore/QHash ../../include/QtCore/QMultiHash ../../include/QtCore/QHashIterator ../../include/QtCore/QMutableHashIterator ../../include/QtCore/QLine ../../include/QtCore/QLineF ../../include/QtCore/QLinkedListData ../../include/QtCore/QLinkedListNode ../../include/QtCore/QLinkedList ../../include/QtCore/QLinkedListIterator ../../include/QtCore/QMutableLinkedListIterator ../../include/QtCore/QListData ../../include/QtCore/QList ../../include/QtCore/QListIterator ../../include/QtCore/QMutableListIterator ../../include/QtCore/QSystemLocale ../../include/QtCore/QLocale ../../include/QtCore/QBBSystemLocaleData ../../include/QtCore/QMapData ../../include/QtCore/QMapNode ../../include/QtCore/QMapPayloadNode ../../include/QtCore/QMap ../../include/QtCore/QMultiMap ../../include/QtCore/QMapIterator ../../include/QtCore/QMutableMapIterator ../../include/QtCore/QMargins ../../include/QtCore/QPair ../../include/QtCore/QPoint ../../include/QtCore/QPointF ../../include/QtCore/QQueue ../../include/QtCore/QRect ../../include/QtCore/QRectF ../../include/QtCore/QRegExp ../../include/QtCore/QScopedPointerDeleter ../../include/QtCore/QScopedPointerArrayDeleter ../../include/QtCore/QScopedPointerPodDeleter ../../include/QtCore/QScopedPointer ../../include/QtCore/QScopedArrayPointer ../../include/QtCore/QScopedValueRollback ../../include/QtCore/QSet ../../include/QtCore/QSetIterator ../../include/QtCore/QMutableSetIterator ../../include/QtCore/QSharedData ../../include/QtCore/QSharedDataPointer ../../include/QtCore/QExplicitlySharedDataPointer ../../include/QtCore/QSharedPointer ../../include/QtCore/QWeakPointer ../../include/QtCore/QSize ../../include/QtCore/QSizeF ../../include/QtCore/QStack ../../include/QtCore/QStdWString ../../include/QtCore/QString ../../include/QtCore/QLatin1String ../../include/QtCore/QCharRef ../../include/QtCore/QConstString ../../include/QtCore/QStringRef ../../include/QtCore/QLatin1Literal ../../include/QtCore/QAbstractConcatenable ../../include/QtCore/QConcatenable ../../include/QtCore/QStringBuilder ../../include/QtCore/QStringListIterator ../../include/QtCore/QMutableStringListIterator ../../include/QtCore/QStringList ../../include/QtCore/QStringMatcher ../../include/QtCore/QTextBoundaryFinder ../../include/QtCore/QTimeLine ../../include/QtCore/QVarLengthArray ../../include/QtCore/QVectorData ../../include/QtCore/QVectorTypedData ../../include/QtCore/QVector ../../include/QtCore/QVectorIterator ../../include/QtCore/QMutableVectorIterator ../../include/QtCore/QFactoryInterface ../../include/QtCore/QLibrary ../../include/QtCore/QtPlugin ../../include/QtCore/QtPluginInstanceFunction ../../include/QtCore/QPluginLoader ../../include/QtCore/QUuid ../../include/QtCore/QXmlStreamStringRef ../../include/QtCore/QXmlStreamAttribute ../../include/QtCore/QXmlStreamAttributes ../../include/QtCore/QXmlStreamNamespaceDeclaration ../../include/QtCore/QXmlStreamNamespaceDeclarations ../../include/QtCore/QXmlStreamNotationDeclaration ../../include/QtCore/QXmlStreamNotationDeclarations ../../include/QtCore/QXmlStreamEntityDeclaration ../../include/QtCore/QXmlStreamEntityDeclarations ../../include/QtCore/QXmlStreamEntityResolver ../../include/QtCore/QXmlStreamReader ../../include/QtCore/QXmlStreamWriter ../../include/QtCore/QAtomicInt ../../include/QtCore/QAtomicPointer ../../include/QtCore/QBasicAtomicInt ../../include/QtCore/QBasicAtomicPointer ../../include/QtCore/QMutex ../../include/QtCore/QMutexLocker ../../include/QtCore/QMutexData ../../include/QtCore/QReadWriteLock ../../include/QtCore/QReadLocker ../../include/QtCore/QWriteLocker ../../include/QtCore/QSemaphore ../../include/QtCore/QThread ../../include/QtCore/QThreadStorageData ../../include/QtCore/QThreadStorage ../../include/QtCore/QWaitCondition ../../include/QtCore/QAbstractState ../../include/QtCore/QAbstractTransition ../../include/QtCore/QEventTransition ../../include/QtCore/QFinalState ../../include/QtCore/QHistoryState ../../include/QtCore/QSignalTransition ../../include/QtCore/QState ../../include/QtCore/QStateMachine ../../include/QtCore/QFuture ../../include/QtCore/QFutureIterator ../../include/QtCore/QMutableFutureIterator ../../include/QtCore/QFutureInterfaceBase ../../include/QtCore/QFutureInterface ../../include/QtCore/QFutureSynchronizer ../../include/QtCore/QFutureWatcherBase ../../include/QtCore/QFutureWatcher ../../include/QtCore/QRunnable ../../include/QtCore/QtConcurrentFilter ../../include/QtCore/QtConcurrentMap ../../include/QtCore/QtConcurrentRun ../../include/QtCore/QThreadPool ../../include/QtCore/QAbstractFileEngine ../../include/QtCore/QAbstractFileEngineHandler ../../include/QtCore/QAbstractFileEngineIterator ../../include/QtCore/QBuffer ../../include/QtCore/QDataStream ../../include/QtCore/QtDebug ../../include/QtCore/QDebug ../../include/QtCore/QNoDebug ../../include/QtCore/QDir ../../include/QtCore/QDirIterator ../../include/QtCore/QFile ../../include/QtCore/QFileInfo ../../include/QtCore/QFileInfoList ../../include/QtCore/QFileInfoListIterator ../../include/QtCore/QFileSystemWatcher ../../include/QtCore/QFSFileEngine ../../include/QtCore/QIODevice ../../include/QtCore/Q_PID ../../include/QtCore/QProcessEnvironment ../../include/QtCore/QProcess ../../include/QtCore/QResource ../../include/QtCore/QSettings ../../include/QtCore/QTemporaryFile ../../include/QtCore/QTextStream ../../include/QtCore/QTextStreamFunction ../../include/QtCore/QTextStreamManipulator ../../include/QtCore/QTS ../../include/QtCore/QTextIStream ../../include/QtCore/QTextOStream ../../include/QtCore/QUrl ../../include/QtCore/QtEndian ../../include/QtCore/QtGlobal ../../include/QtCore/QIntegerForSize ../../include/QtCore/QNoImplicitBoolCast ../../include/QtCore/Q_INT8 ../../include/QtCore/Q_UINT8 ../../include/QtCore/Q_INT16 ../../include/QtCore/Q_UINT16 ../../include/QtCore/Q_INT32 ../../include/QtCore/Q_UINT32 ../../include/QtCore/Q_INT64 ../../include/QtCore/Q_UINT64 ../../include/QtCore/Q_LLONG ../../include/QtCore/Q_ULLONG ../../include/QtCore/Q_LONG ../../include/QtCore/Q_ULONG ../../include/QtCore/QSysInfo ../../include/QtCore/QtMsgHandler ../../include/QtCore/QGlobalStatic ../../include/QtCore/QGlobalStaticDeleter ../../include/QtCore/QBool ../../include/QtCore/QTypeInfo ../../include/QtCore/QFlag ../../include/QtCore/QIncompatibleFlag ../../include/QtCore/QFlags ../../include/QtCore/QForeachContainer ../../include/QtCore/QForeachContainerBase ../../include/QtCore/QLibraryInfo ../../include/QtCore/Qt ../../include/QtCore/QInternal ../../include/QtCore/QCOORD ../../include/QtCore/QtConfig ../../include/QtCore/QTextCodec ../../include/QtCore/QTextEncoder ../../include/QtCore/QTextDecoder ../../include/QtCore/QTextCodecFactoryInterface ../../include/QtCore/QTextCodecPlugin
+ SYNCQT.PRIVATE_HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher_p.h ../corelib/kernel/qabstractitemmodel_p.h ../corelib/kernel/qcore_mac_p.h ../corelib/kernel/qcore_symbian_p.h ../corelib/kernel/qcore_unix_p.h ../corelib/kernel/qcoreapplication_p.h ../corelib/kernel/qcorecmdlineargs_p.h ../corelib/kernel/qcoreglobaldata_p.h ../corelib/kernel/qcrashhandler_p.h ../corelib/kernel/qeventdispatcher_blackberry_p.h ../corelib/kernel/qeventdispatcher_glib_p.h ../corelib/kernel/qeventdispatcher_symbian_p.h ../corelib/kernel/qeventdispatcher_unix_p.h ../corelib/kernel/qeventdispatcher_win_p.h ../corelib/kernel/qfunctions_p.h ../corelib/kernel/qmetaobject_p.h ../corelib/kernel/qobject_p.h ../corelib/kernel/qsharedmemory_p.h ../corelib/kernel/qsystemerror_p.h ../corelib/kernel/qsystemsemaphore_p.h ../corelib/kernel/qtranslator_p.h ../corelib/kernel/qvariant_p.h ../corelib/kernel/qwineventnotifier_p.h ../corelib/animation/qabstractanimation_p.h ../corelib/animation/qanimationgroup_p.h ../corelib/animation/qparallelanimationgroup_p.h ../corelib/animation/qpropertyanimation_p.h ../corelib/animation/qsequentialanimationgroup_p.h ../corelib/animation/qvariantanimation_p.h ../corelib/tools/qbytedata_p.h ../corelib/tools/qdatetime_p.h ../corelib/tools/qharfbuzz_p.h ../corelib/tools/qlocale_data_p.h ../corelib/tools/qlocale_p.h ../corelib/tools/qlocale_tools_p.h ../corelib/tools/qpodlist_p.h ../corelib/tools/qringbuffer_p.h ../corelib/tools/qscopedpointer_p.h ../corelib/tools/qsimd_p.h ../corelib/tools/qtools_p.h ../corelib/tools/qunicodetables_p.h ../corelib/plugin/qelfparser_p.h ../corelib/plugin/qfactoryloader_p.h ../corelib/plugin/qlibrary_p.h ../corelib/plugin/qsystemlibrary_p.h ../corelib/xml/qxmlstream_p.h ../corelib/xml/qxmlutils_p.h ../corelib/thread/qmutex_p.h ../corelib/thread/qmutexpool_p.h ../corelib/thread/qorderedmutexlocker_p.h ../corelib/thread/qreadwritelock_p.h ../corelib/thread/qthread_p.h ../corelib/statemachine/qabstractstate_p.h ../corelib/statemachine/qabstracttransition_p.h ../corelib/statemachine/qeventtransition_p.h ../corelib/statemachine/qhistorystate_p.h ../corelib/statemachine/qsignaleventgenerator_p.h ../corelib/statemachine/qsignaltransition_p.h ../corelib/statemachine/qstate_p.h ../corelib/statemachine/qstatemachine_p.h ../corelib/concurrent/qfutureinterface_p.h ../corelib/concurrent/qfuturewatcher_p.h ../corelib/concurrent/qthreadpool_p.h ../corelib/io/qabstractfileengine_p.h ../corelib/io/qdatastream_p.h ../corelib/io/qdataurl_p.h ../corelib/io/qdir_p.h ../corelib/io/qfile_p.h ../corelib/io/qfileinfo_p.h ../corelib/io/qfilesystemengine_p.h ../corelib/io/qfilesystementry_p.h ../corelib/io/qfilesystemiterator_p.h ../corelib/io/qfilesystemmetadata_p.h ../corelib/io/qfilesystemwatcher_dnotify_p.h ../corelib/io/qfilesystemwatcher_fsevents_p.h ../corelib/io/qfilesystemwatcher_inotify_p.h ../corelib/io/qfilesystemwatcher_kqueue_p.h ../corelib/io/qfilesystemwatcher_p.h ../corelib/io/qfilesystemwatcher_symbian_p.h ../corelib/io/qfilesystemwatcher_win_p.h ../corelib/io/qfsfileengine_iterator_p.h ../corelib/io/qfsfileengine_p.h ../corelib/io/qiodevice_p.h ../corelib/io/qnoncontiguousbytedevice_p.h ../corelib/io/qprocess_p.h ../corelib/io/qresource_iterator_p.h ../corelib/io/qresource_p.h ../corelib/io/qsettings_p.h ../corelib/io/qtldurl_p.h ../corelib/io/qurltlds_p.h ../corelib/io/qwindowspipewriter_p.h ../corelib/global/qnumeric_p.h ../corelib/global/qt_pch.h ../corelib/codecs/qfontlaocodec_p.h ../corelib/codecs/qiconvcodec_p.h ../corelib/codecs/qisciicodec_p.h ../corelib/codecs/qlatincodec_p.h ../corelib/codecs/qsimplecodec_p.h ../corelib/codecs/qtextcodec_p.h ../corelib/codecs/qtsciicodec_p.h ../corelib/codecs/qutfcodec_p.h
+diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64 qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h
+--- qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64 2015-05-08 21:48:32.715057744 -0500
++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h 2015-05-08 21:48:32.715057744 -0500
+@@ -0,0 +1 @@
++#include "../../src/corelib/arch/qatomic_aarch64.h"
+diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 2015-05-07 09:14:47.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri 2015-05-08 21:48:33.268061013 -0500
+@@ -66,6 +66,12 @@ contains(JAVASCRIPTCORE_JIT,no) {
+ }
+ }
+
++# Hack around AARCH64 fail wrt JSValue.h
++equals(QT_ARCH, aarch64) {
++ message("JavaScriptCore aarch64 hack: -fpermissive")
++ QMAKE_CXXFLAGS += -fpermissive
++}
++
+ wince* {
+ INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat
+ SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c
+diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64 2015-05-07 09:14:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri 2015-05-08 21:48:33.268061013 -0500
+@@ -63,6 +63,12 @@ contains (CONFIG, text_breaking_with_icu
+ DEFINES += WTF_USE_QT_ICU_TEXT_BREAKING=1
+ }
+
++# Hack around AARCH64 fail wrt JSValue.h
++equals(QT_ARCH, aarch64) {
++ message("JavaScriptCore aarch64 hack: -fpermissive")
++ QMAKE_CXXFLAGS += -fpermissive
++}
++
+ wince* {
+ INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat
+ INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32
+diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64 2015-05-07 09:14:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h 2015-05-08 21:48:33.269061019 -0500
+@@ -369,7 +369,16 @@
+
+ #endif /* ARM */
+
+-#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
++/* CPU(AARCH64) - AArch64 */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#if defined(__AARCH64EB__)
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++#endif
++
++/* Not sure about this one, qt5-qtwebkit doesn't include it -- rex */
++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(AARCH64)
+ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+ #endif
+
+@@ -1003,7 +1012,7 @@
+ || CPU(SPARC64) \
+ || CPU(S390X) \
+ || CPU(PPC64) \
+- || CPU(MIPS64)
++ || CPU(MIPS64) || CPU(AARCH64)
+ #define WTF_USE_JSVALUE64 1
+ #else
+ #define WTF_USE_JSVALUE32_64 1
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64 2015-05-08 21:48:33.269061019 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp 2015-05-08 21:48:33.269061019 -0500
+@@ -0,0 +1,70 @@
++/****************************************************************************
++**
++** Copyright (C) 2012, 2013 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia. For licensing terms and
++** conditions see http://qt.digia.com/licensing. For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights. These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include <QtCore/qglobal.h>
++
++#include <unistd.h>
++#ifdef _POSIX_PRIORITY_SCHEDULING
++# include <sched.h>
++#endif
++#include <time.h>
++
++QT_BEGIN_NAMESPACE
++
++QT_USE_NAMESPACE
++
++Q_CORE_EXPORT void qt_atomic_yield(int *count)
++{
++#ifdef _POSIX_PRIORITY_SCHEDULING
++ if((*count)++ < 50) {
++ sched_yield();
++ } else
++#endif
++ {
++ struct timespec tm;
++ tm.tv_sec = 0;
++ tm.tv_nsec = 2000001;
++ nanosleep(&tm, NULL);
++ *count = 0;
++ }
++}
++
++QT_END_NAMESPACE
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64 2015-05-07 09:14:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri 2015-05-08 21:48:33.270061025 -0500
+@@ -31,7 +31,9 @@ integrity:HEADERS += arch/qatomic_integr
+ arch/qatomic_s390.h \
+ arch/qatomic_x86_64.h \
+ arch/qatomic_sh.h \
+- arch/qatomic_sh4a.h
++ arch/qatomic_sh4a.h \
++ arch/qatomic_aarch64.h \
++
+
+ QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH
+ DEPENDPATH += $$QT_ARCH_CPP
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64 2015-05-08 21:48:33.270061025 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h 2015-05-08 21:48:33.270061025 -0500
+@@ -0,0 +1,335 @@
++/****************************************************************************
++**
++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia. For licensing terms and
++** conditions see http://qt.digia.com/licensing. For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights. These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#ifndef QATOMIC_AARCH64_H
++#define QATOMIC_AARCH64_H
++
++QT_BEGIN_HEADER
++
++QT_BEGIN_NAMESPACE
++
++#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isReferenceCountingNative()
++{ return true; }
++inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isTestAndSetNative()
++{ return true; }
++inline bool QBasicAtomicInt::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndStoreNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndAddNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
++{ return false; }
++
++#ifndef Q_DATA_MEMORY_BARRIER
++# define Q_DATA_MEMORY_BARRIER asm volatile("dmb sy\n":::"memory")
++#endif
++#ifndef Q_COMPILER_MEMORY_BARRIER
++# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory")
++#endif
++
++inline bool QBasicAtomicInt::ref()
++{
++ int newValue;
++
++ Q_COMPILER_MEMORY_BARRIER;
++ newValue = __atomic_add_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++ Q_COMPILER_MEMORY_BARRIER;
++
++ return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::deref()
++{
++ int newValue;
++
++ Q_COMPILER_MEMORY_BARRIER;
++ newValue = __atomic_sub_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++ Q_COMPILER_MEMORY_BARRIER;
++
++ return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
++{
++ bool val;
++
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
++{
++ int val;
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
++{
++ int val;
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
++{
++ bool val;
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
++{
++ T *val;
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
++{
++ T *val;
++ Q_COMPILER_MEMORY_BARRIER;
++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++ Q_COMPILER_MEMORY_BARRIER;
++ return val;
++}
++
++inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
++{
++ bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return testAndSetRelaxed(expectedValue, newValue);
++}
++
++inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
++{
++ int returnValue = fetchAndStoreRelaxed(newValue);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return fetchAndStoreRelaxed(newValue);
++}
++
++inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ int returnValue = fetchAndStoreRelaxed(newValue);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
++{
++ int returnValue = fetchAndAddRelaxed(valueToAdd);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return fetchAndAddRelaxed(valueToAdd);
++}
++
++inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
++{
++ Q_DATA_MEMORY_BARRIER;
++ int returnValue = fetchAndAddRelaxed(valueToAdd);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
++{
++ bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return testAndSetRelaxed(expectedValue, newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ bool returnValue = testAndSetAcquire(expectedValue, newValue);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
++{
++ T *returnValue = fetchAndStoreRelaxed(newValue);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return fetchAndStoreRelaxed(newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
++{
++ Q_DATA_MEMORY_BARRIER;
++ T *returnValue = fetchAndStoreRelaxed(newValue);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
++{
++ T *returnValue = fetchAndAddRelaxed(valueToAdd);
++ Q_DATA_MEMORY_BARRIER;
++ return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
++{
++ Q_DATA_MEMORY_BARRIER;
++ return fetchAndAddRelaxed(valueToAdd);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
++{
++ Q_DATA_MEMORY_BARRIER;
++ T *returnValue = fetchAndAddRelaxed(valueToAdd);
++ Q_COMPILER_MEMORY_BARRIER;
++ return returnValue;
++}
++
++#undef Q_DATA_MEMORY_BARRIER
++#undef Q_COMPILER_MEMORY_BARRIER
++
++QT_END_NAMESPACE
++
++QT_END_HEADER
++
++#endif // QATOMIC_AARCH64_H
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 2015-05-07 09:14:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h 2015-05-08 21:48:33.271061031 -0500
+@@ -94,6 +94,8 @@ QT_BEGIN_HEADER
+ # include "QtCore/qatomic_sh4a.h"
+ #elif defined(QT_ARCH_NACL)
+ # include "QtCore/qatomic_generic.h"
++#elif defined(QT_ARCH_AARCH64)
++# include "QtCore/qatomic_aarch64.h"
+ #else
+ # error "Qt has not been ported to this architecture"
+ #endif
diff --git a/source/l/qt/patches/qt-cupsEnumDests.patch b/source/l/qt/patches/qt-cupsEnumDests.patch
new file mode 100644
index 000000000..7d59f22e8
--- /dev/null
+++ b/source/l/qt/patches/qt-cupsEnumDests.patch
@@ -0,0 +1,238 @@
+diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp
+--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp 2013-07-03 15:30:06.232936976 +0100
+@@ -50,9 +50,19 @@
+
+ QT_BEGIN_NAMESPACE
+
++typedef int (*CupsEnumDests)(unsigned flags, int msec, int *cancel,
++ cups_ptype_t type, cups_ptype_t mask,
++ cups_dest_cb_t cb, void *user_data);
++typedef http_t * (*CupsConnectDest)(cups_dest_t *dest, unsigned flags,
++ int msec, int *cancel,
++ char *resource, size_t resourcesize,
++ cups_dest_cb_t cb, void *user_data);
++typedef int (*CupsCopyDest)(cups_dest_t *dest, int num_dests,
++ cups_dest_t **dests);
+ typedef int (*CupsGetDests)(cups_dest_t **dests);
+ typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests);
+ typedef const char* (*CupsGetPPD)(const char *printer);
++typedef const char* (*CupsGetPPD2)(http_t *http, const char *printer);
+ typedef int (*CupsMarkOptions)(ppd_file_t *ppd, int num_options, cups_option_t *options);
+ typedef ppd_file_t* (*PPDOpenFile)(const char *filename);
+ typedef void (*PPDMarkDefaults)(ppd_file_t *ppd);
+@@ -66,12 +76,24 @@ typedef const char* (*CupsLangEncoding)(
+ typedef int (*CupsAddOption)(const char *name, const char *value, int num_options, cups_option_t **options);
+ typedef int (*CupsTempFd)(char *name, int len);
+ typedef int (*CupsPrintFile)(const char * name, const char * filename, const char * title, int num_options, cups_option_t * options);
++typedef int (*CupsPrintFile2)(http_t *http, const char *name, const char *filename, const char *title, int num_options, cups_option_t *options);
++
++typedef struct
++{
++ cups_dest_t *printers;
++ int num_printers;
++} EnumDestsContext;
+
+ static bool cupsLoaded = false;
+ static int qt_cups_num_printers = 0;
++static cups_dest_t *qt_cups_printers = 0;
++static CupsEnumDests _cupsEnumDests = 0;
++static CupsConnectDest _cupsConnectDest = 0;
++static CupsCopyDest _cupsCopyDest = 0;
+ static CupsGetDests _cupsGetDests = 0;
+ static CupsFreeDests _cupsFreeDests = 0;
+ static CupsGetPPD _cupsGetPPD = 0;
++static CupsGetPPD2 _cupsGetPPD2 = 0;
+ static PPDOpenFile _ppdOpenFile = 0;
+ static PPDMarkDefaults _ppdMarkDefaults = 0;
+ static PPDClose _ppdClose = 0;
+@@ -84,14 +106,35 @@ static CupsLangEncoding _cupsLangEncodin
+ static CupsAddOption _cupsAddOption = 0;
+ static CupsTempFd _cupsTempFd = 0;
+ static CupsPrintFile _cupsPrintFile = 0;
++static CupsPrintFile2 _cupsPrintFile2 = 0;
++
++static int enum_dest_cb (void *user_data, unsigned flags, cups_dest_t *dest)
++{
++ EnumDestsContext *context = (EnumDestsContext *) user_data;
++
++ if ((flags & (CUPS_DEST_FLAGS_UNCONNECTED |
++ CUPS_DEST_FLAGS_REMOVED |
++ CUPS_DEST_FLAGS_ERROR |
++ CUPS_DEST_FLAGS_RESOLVING |
++ CUPS_DEST_FLAGS_CONNECTING |
++ CUPS_DEST_FLAGS_CANCELED)) == 0)
++ context->num_printers = _cupsCopyDest (dest, context->num_printers,
++ &context->printers);
++
++ return 1;
++}
+
+ static void resolveCups()
+ {
+ QLibrary cupsLib(QLatin1String("cups"), 2);
+ if(cupsLib.load()) {
++ _cupsEnumDests = (CupsEnumDests) cupsLib.resolve("cupsEnumDests");
++ _cupsConnectDest = (CupsConnectDest) cupsLib.resolve("cupsConnectDest");
++ _cupsCopyDest = (CupsCopyDest) cupsLib.resolve("cupsCopyDest");
+ _cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests");
+ _cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests");
+ _cupsGetPPD = (CupsGetPPD) cupsLib.resolve("cupsGetPPD");
++ _cupsGetPPD2 = (CupsGetPPD2) cupsLib.resolve("cupsGetPPD2");
+ _cupsLangGet = (CupsLangGet) cupsLib.resolve("cupsLangGet");
+ _cupsLangEncoding = (CupsLangEncoding) cupsLib.resolve("cupsLangEncoding");
+ _ppdOpenFile = (PPDOpenFile) cupsLib.resolve("ppdOpenFile");
+@@ -104,14 +147,27 @@ static void resolveCups()
+ _cupsAddOption = (CupsAddOption) cupsLib.resolve("cupsAddOption");
+ _cupsTempFd = (CupsTempFd) cupsLib.resolve("cupsTempFd");
+ _cupsPrintFile = (CupsPrintFile) cupsLib.resolve("cupsPrintFile");
++ _cupsPrintFile2 = (CupsPrintFile2) cupsLib.resolve("cupsPrintFile2");
+
+- if (_cupsGetDests && _cupsFreeDests) {
+- cups_dest_t *printers;
++ if (_cupsEnumDests && _cupsCopyDest &&
++ _cupsConnectDest && _cupsGetPPD2 &&
++ _cupsPrintFile2) {
++ EnumDestsContext context;
++ context.printers = 0;
++ context.num_printers = 0;
++ _cupsEnumDests(0, -1, 0, 0, 0,
++ enum_dest_cb, &context);
++
++ qt_cups_printers = context.printers;
++ qt_cups_num_printers = context.num_printers;
++ } else if (_cupsGetDests && _cupsFreeDests) {
++ cups_dest_t *printers;
+ int num_printers = _cupsGetDests(&printers);
+- if (num_printers)
+- _cupsFreeDests(num_printers, printers);
+- qt_cups_num_printers = num_printers;
+- }
++
++ if (num_printers)
++ _cupsFreeDests(num_printers, printers);
++ qt_cups_num_printers = num_printers;
++ }
+ }
+ cupsLoaded = true;
+ }
+@@ -134,7 +190,15 @@ QCUPSSupport::QCUPSSupport()
+ return;
+
+ // Update the available printer count
+- qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
++ if (qt_cups_printers && _cupsCopyDest) {
++ int i;
++ for (i = 0; i < qt_cups_num_printers; ++i) {
++ prnCount = _cupsCopyDest (&qt_cups_printers[i],
++ prnCount,
++ &printers);
++ }
++ } else
++ qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
+
+ for (int i = 0; i < prnCount; ++i) {
+ if (printers[i].is_default) {
+@@ -188,7 +252,19 @@ const ppd_file_t* QCUPSSupport::setCurre
+ currPPD = 0;
+ page_sizes = 0;
+
+- const char *ppdFile = _cupsGetPPD(printers[index].name);
++ const char *ppdFile = 0;
++ if (_cupsConnectDest && _cupsGetPPD2) {
++ char resource[HTTP_MAX_URI];
++ http_t *http = _cupsConnectDest (&printers[index], 0, -1, 0,
++ resource, sizeof (resource),
++ 0, 0);
++ if (http) {
++ char *name = strrchr (resource, '/');
++ if (name)
++ ppdFile = _cupsGetPPD2 (http, ++name);
++ }
++ } else
++ ppdFile = _cupsGetPPD(printers[index].name);
+
+ if (!ppdFile)
+ return 0;
+@@ -343,7 +419,29 @@ bool QCUPSSupport::printerHasPPD(const c
+ {
+ if (!isAvailable())
+ return false;
+- const char *ppdFile = _cupsGetPPD(printerName);
++
++ const char *ppdFile = 0;
++ if (_cupsConnectDest && _cupsGetPPD2) {
++ int i;
++ for (i = 0; i < prnCount; ++i)
++ if (!strcmp (printers[i].name, printerName))
++ break;
++
++ if (i == prnCount)
++ return false;
++
++ char resource[HTTP_MAX_URI];
++ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
++ resource, sizeof (resource),
++ 0, 0);
++ if (http) {
++ char *name = strrchr (resource, '/');
++ if (name)
++ ppdFile = _cupsGetPPD2 (http, ++name);
++ }
++ } else
++ ppdFile = _cupsGetPPD(printerName);
++
+ if (ppdFile)
+ unlink(ppdFile);
+ return (ppdFile != 0);
+@@ -394,6 +492,26 @@ QPair<int, QString> QCUPSSupport::tempFd
+ int QCUPSSupport::printFile(const char * printerName, const char * filename, const char * title,
+ int num_options, cups_option_t * options)
+ {
++ if (_cupsConnectDest && _cupsPrintFile2) {
++ int i;
++ for (i = 0; i < prnCount; ++i)
++ if (!strcmp (printers[i].name, printerName))
++ break;
++
++ if (i != prnCount) {
++ char resource[HTTP_MAX_URI];
++ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
++ resource, sizeof (resource),
++ 0, 0);
++ if (http) {
++ char *name = strrchr (resource, '/');
++ if (name)
++ return _cupsPrintFile2 (http, ++name, filename, title,
++ num_options, options);
++ }
++ }
++ }
++
+ return _cupsPrintFile(printerName, filename, title, num_options, options);
+ }
+
+diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h
+--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h 2013-07-03 15:27:24.733343017 +0100
+@@ -92,7 +92,7 @@ public:
+
+ QStringList options() const;
+
+- static bool printerHasPPD(const char *printerName);
++ bool printerHasPPD(const char *printerName);
+
+ QString unicodeString(const char *s);
+
+diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp
+--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests 2013-07-03 15:27:24.531342277 +0100
++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp 2013-07-03 15:27:24.733343017 +0100
+@@ -844,7 +844,7 @@ void QPrinter::setPrinterName(const QStr
+ if(d->use_default_engine
+ && d->outputFormat == QPrinter::NativeFormat) {
+ if (QCUPSSupport::cupsVersion() >= 10200
+- && QCUPSSupport::printerHasPPD(name.toLocal8Bit().constData()))
++ && QCUPSSupport().printerHasPPD(name.toLocal8Bit().constData()))
+ setOutputFormat(QPrinter::PdfFormat);
+ else
+ setOutputFormat(QPrinter::PostScriptFormat);
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch
new file mode 100644
index 000000000..e0305e11b
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch
@@ -0,0 +1,84 @@
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100
+@@ -569,6 +569,32 @@
+ void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
+ {
+ options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
++
++ if (cups) {
++ const ppd_option_t* duplex = cups->ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ options.duplexShort->setChecked(true);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ options.duplexLong->setChecked(true);
++ else
++ options.noDuplex->setChecked(true);
++ }
++
++ if (cups->currentPPD()) {
++ // set default color
++ if (cups->currentPPD()->color_device)
++ options.color->setChecked(true);
++ else
++ options.grayscale->setChecked(true);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups->ppdOption("Collate");
++ if (collate)
++ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
++ }
+ }
+ #endif
+
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100
+@@ -627,6 +627,44 @@
+ && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
+ setOutputFormat(QPrinter::PdfFormat);
+ }
++
++#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
++ // fill in defaults from ppd file
++ QCUPSSupport cups;
++
++ int printernum = -1;
++ for (int i = 0; i < cups.availablePrintersCount(); i++) {
++ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
++ printernum = i;
++ }
++ if (printernum >= 0) {
++ cups.setCurrentPrinter(printernum);
++
++ const ppd_option_t* duplex = cups.ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ setDuplex(DuplexShortSide);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ setDuplex(DuplexLongSide);
++ else
++ setDuplex(DuplexNone);
++ }
++
++ if (cups.currentPPD()) {
++ // set default color
++ if (cups.currentPPD()->color_device)
++ setColorMode(Color);
++ else
++ setColorMode(GrayScale);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups.ppdOption("Collate");
++ if (collate)
++ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
++ }
++#endif
+ }
+
+ /*!
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch
new file mode 100644
index 000000000..d4e5924df
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch
@@ -0,0 +1,69 @@
+diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp
+--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200
++++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100
+@@ -76,7 +76,7 @@
+ GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
+ return (XEventsQueued(X11->display, QueuedAfterFlush)
+ || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
+- && !source->d->queuedUserInputEvents.isEmpty()));
++ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
+ }
+
+ static gboolean x11EventSourceCheck(GSource *s)
+@@ -84,7 +84,7 @@
+ GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
+ return (XEventsQueued(X11->display, QueuedAfterFlush)
+ || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
+- && !source->d->queuedUserInputEvents.isEmpty()));
++ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
+ }
+
+ static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data)
+@@ -95,7 +95,7 @@
+ do {
+ XEvent event;
+ if (!(source->flags & QEventLoop::ExcludeUserInputEvents)
+- && !source->d->queuedUserInputEvents.isEmpty()) {
++ && source->d && !source->d->queuedUserInputEvents.isEmpty()) {
+ // process a pending user input event
+ event = source->d->queuedUserInputEvents.takeFirst();
+ } else if (XEventsQueued(X11->display, QueuedAlready)) {
+@@ -112,7 +112,8 @@
+ case XKeyRelease:
+ case EnterNotify:
+ case LeaveNotify:
+- source->d->queuedUserInputEvents.append(event);
++ if (source->d)
++ source->d->queuedUserInputEvents.append(event);
+ continue;
+
+ case ClientMessage:
+@@ -127,7 +128,8 @@
+ break;
+ }
+ }
+- source->d->queuedUserInputEvents.append(event);
++ if (source->d)
++ source->d->queuedUserInputEvents.append(event);
+ continue;
+
+ default:
+@@ -140,7 +142,7 @@
+ }
+
+ // send through event filter
+- if (source->q->filterEvent(&event))
++ if (source->q && source->q->filterEvent(&event))
+ continue;
+
+ if (qApp->x11ProcessEvent(&event) == 1)
+@@ -152,7 +154,8 @@
+
+ out:
+
+- source->d->runTimersOnceWithNormalPriority();
++ if (source->d)
++ source->d->runTimersOnceWithNormalPriority();
+
+ if (callback)
+ callback(user_data);
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
new file mode 100644
index 000000000..4279ce2e7
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
@@ -0,0 +1,41 @@
+diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h
+--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500
+@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea
+ template <typename T>
+ Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
+ {
+- int index = indexOf(_t);
+- if (index == -1)
+- return 0;
+-
++ detachShared();
+ const T t = _t;
+- detach();
+-
+- Node *i = reinterpret_cast<Node *>(p.at(index));
+- Node *e = reinterpret_cast<Node *>(p.end());
+- Node *n = i;
+- node_destruct(i);
+- while (++i != e) {
+- if (i->t() == t)
+- node_destruct(i);
+- else
+- *n++ = *i;
+- }
+-
+- int removedCount = e - n;
+- d->end -= removedCount;
++ int removedCount=0, i=0;
++ Node *n;
++ while (i < p.size())
++ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
++ node_destruct(n);
++ p.remove(i);
++ ++removedCount;
++ } else {
++ ++i;
++ }
+ return removedCount;
+ }
+
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
new file mode 100644
index 000000000..6fedcc810
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
@@ -0,0 +1,20 @@
+diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h
+--- qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic 2011-12-18 16:15:20.000000000 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h 2011-12-18 16:17:34.000000000 +0100
+@@ -400,6 +400,16 @@ Q_INLINE_TEMPLATE T* QBasicAtomicPointer
+
+
+ template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
++{
++#ifndef __s390x__
++ return (T *)__CS_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "ar", "", "bcr 15,0\n");
++#else
++ return (T *)__CSG_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "agr", "", "bcr 15,0\n");
++#endif
++}
++
++template <typename T>
+ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
+ {
+ return fetchAndAddOrdered(valueToAdd);
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch
new file mode 100644
index 000000000..5c8b5a1dd
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch
@@ -0,0 +1,36 @@
+diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf
+--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf 2011-05-25 13:39:38.789054074 +0200
+@@ -12,6 +12,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
+ QMAKE_CFLAGS = -m32
+ QMAKE_LFLAGS = -m32
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/linux.conf)
+ include(../common/gcc-base-unix.conf)
+ include(../common/g++-unix.conf)
+diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf
+--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf 2011-05-25 13:39:47.460747770 +0200
+@@ -15,6 +15,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
+ QMAKE_CFLAGS = -m64
+ QMAKE_LFLAGS = -m64
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/linux.conf)
+ include(../common/gcc-base-unix.conf)
+ include(../common/g++-unix.conf)
+diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf
+--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf 2011-05-25 13:39:26.630088814 +0200
+@@ -9,6 +9,8 @@ CONFIG += qt warn_on release increment
+ QT += core gui
+ QMAKE_INCREMENTAL_STYLE = sublib
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/linux.conf)
+ include(../common/gcc-base-unix.conf)
+ include(../common/g++-unix.conf)
diff --git a/source/l/qt/qt.qtreeview.crash.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch
index 947f7582d..947f7582d 100644
--- a/source/l/qt/qt.qtreeview.crash.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
new file mode 100644
index 000000000..e84446ce8
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
@@ -0,0 +1,27 @@
+diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp
+--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp 2012-05-29 12:17:03.416561535 +0200
+@@ -314,9 +314,9 @@ int main(int argc, char **argv)
+ parseHandler.verbose = evalHandler.verbose = cd.isVerbose();
+ ProFileOption option;
+ #ifdef QT_BOOTSTRAPPED
+- option.initProperties(binDir + QLatin1String("/qmake"));
++ option.initProperties(binDir + QLatin1String("/qmake-qt4"));
+ #else
+- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
++ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
+ #endif
+ ProFileParser parser(0, &parseHandler);
+ ProFileEvaluator visitor(&option, &parser, &evalHandler);
+diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp
+--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp 2012-05-29 11:46:48.811134546 +0200
+@@ -765,7 +765,7 @@ int main(int argc, char **argv)
+
+ parseHandler.verbose = evalHandler.verbose = !!(options & Verbose);
+ ProFileOption option;
+- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
++ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
+ option.setCommandLineArguments(QStringList() << QLatin1String("CONFIG+=lupdate_run"));
+ ProFileParser parser(0, &parseHandler);
+
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch
new file mode 100644
index 000000000..745831467
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch
@@ -0,0 +1,10 @@
+diff -up qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro
+--- qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo 2012-03-14 09:01:17.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro 2012-05-11 11:55:37.780070386 -0500
+@@ -34,6 +34,3 @@ MOCDIR = .moc
+
+ *-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
+
+-CONFIG -= separate_debug_info
+-CONFIG += no_debug_info
+-
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
new file mode 100644
index 000000000..f0a41a42e
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
@@ -0,0 +1,13 @@
+diff -up qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp
+--- qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me 2012-06-19 12:52:22.740180410 +0200
++++ qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp 2012-06-19 12:52:51.953194103 +0200
+@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont()
+ if (helpEngine.usesAppFont())
+ font = helpEngine.appFont();
+
+- const QWidgetList &widgets = qApp->allWidgets();
+- foreach (QWidget* widget, widgets)
++ foreach (QWidget* widget, QApplication::allWidgets())
+ widget->setFont(font);
+ }
+
diff --git a/source/l/qt/qt.icu4c.nodebug.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
index 9c53f3c26..9c53f3c26 100644
--- a/source/l/qt/qt.icu4c.nodebug.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch
new file mode 100644
index 000000000..86dcc288d
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch
@@ -0,0 +1,12 @@
+diff -up qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri
+--- qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-09-06 02:33:50.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri 2012-09-11 09:03:19.152159783 -0500
+@@ -102,7 +102,7 @@ CONFIG -= warn_on
+
+ # Treat warnings as errors on x86/Linux/GCC
+ linux-g++* {
+- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
++ #!CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
+
+ greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) {
+ if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) {
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch
new file mode 100644
index 000000000..dd3a5a022
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch
@@ -0,0 +1,14 @@
+diff -up qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp
+--- qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch 2012-09-06 02:33:44.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp 2012-09-11 08:55:29.854026815 -0500
+@@ -1109,8 +1109,10 @@ public:
+ // make sure this connection is running on the main thread
+ QCoreApplication *instance = QCoreApplication::instance();
+ if (!instance) {
++#ifndef QT_NO_DEBUG
+ qWarning("QDBusConnection: %s D-Bus connection created before QCoreApplication. Application may misbehave.",
+ type == SessionBus ? "session" : type == SystemBus ? "system" : "generic");
++#endif
+ } else if (QDBusConnectionPrivate::d(*this)) {
+ QDBusConnectionPrivate::d(*this)->moveToThread(instance->thread());
+ }
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch
new file mode 100644
index 000000000..0494c81f0
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch
@@ -0,0 +1,16 @@
+diff -up qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp
+--- qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private 2012-11-23 04:11:21.000000000 -0600
++++ qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp 2013-02-11 07:36:36.192779528 -0600
+@@ -3293,6 +3293,12 @@ MakefileGenerator::writePkgConfigFile()
+ t << "Requires: " << requires << endl;
+ }
+
++ // requires.private
++ const QString requires_private = project->values("QMAKE_PKGCONFIG_REQUIRES_PRIVATE").join(" ");
++ if (!requires_private.isEmpty()) {
++ t << "Requires.private: " << requires_private << endl;
++ }
++
+ t << endl;
+ }
+
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
new file mode 100644
index 000000000..81d74ff4d
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
@@ -0,0 +1,24 @@
+diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf
+--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf 2013-06-09 11:53:45.709773603 -0500
+@@ -72,7 +72,7 @@ defineTest(qtAddLibrary) {
+ }
+ isEmpty(LINKAGE) {
+ if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
+- win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
++ win32:LINKAGE = -l$${LIB_NAME}d$${QT_LIBINFIX}
+ mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
+ }
+ isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}
+diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf
+--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf 2013-06-09 11:53:45.710773593 -0500
+@@ -6,7 +6,7 @@ contains(TEMPLATE, ".*app"){
+
+ qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {
+ isEqual(entryLib, -lqtmain): {
+- CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d
++ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d$${QT_LIBINFIX}
+ else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}
+ } else {
+ QMAKE_LIBS += $${entryLib}
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
new file mode 100644
index 000000000..018872f6d
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
@@ -0,0 +1,84 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500
+@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp
+ #endif
+ #endif // QT_NO_XSYNC
+
++struct qt_configure_event_data
++{
++ WId window;
++ WId parent;
++};
++
++static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
++{
++ qt_configure_event_data *data =
++ reinterpret_cast<qt_configure_event_data*>(arg);
++ if (event->type == ConfigureNotify &&
++ event->xconfigure.window == data->window) {
++ return true;
++ } else if (event->type == ReparentNotify &&
++ event->xreparent.window == data->window) {
++ data->parent = event->xreparent.parent;
++ }
++
++ return false;
++}
++
+ static void qt_x11_create_intern_atoms()
+ {
+ const char *names[QX11Data::NAtoms];
+@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con
+ if (d->extra->compress_events) {
+ // ConfigureNotify compression for faster opaque resizing
+ XEvent otherEvent;
+- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
+- &otherEvent)) {
++ qt_configure_event_data configureData;
++ configureData.window = internalWinId();
++ configureData.parent = d->topData()->parentWinId;
++ while (XCheckIfEvent(X11->display, &otherEvent,
++ &qt_configure_event_scanner, (XPointer)&configureData)) {
+ if (qt_x11EventFilter(&otherEvent))
+ continue;
+
+@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con
+ newSize.setWidth(otherEvent.xconfigure.width);
+ newSize.setHeight(otherEvent.xconfigure.height);
+
++ trust = isVisible()
++ && (configureData.parent == XNone ||
++ configureData.parent == QX11Info::appRootWindow());
++
+ if (otherEvent.xconfigure.send_event || trust) {
+ newCPos.rx() = otherEvent.xconfigure.x +
+ otherEvent.xconfigure.border_width;
+ newCPos.ry() = otherEvent.xconfigure.y +
+ otherEvent.xconfigure.border_width;
+ isCPos = true;
+- }
++ } else {
++ isCPos = false;
++ }
+ }
+ #ifndef QT_NO_XSYNC
+ qt_sync_request_event_data sync_event;
+@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con
+ }
+
+ if (!isCPos) {
+- // we didn't get an updated position of the toplevel.
+- // either we haven't moved or there is a bug in the window manager.
+- // anyway, let's query the position to be certain.
++ // If the last configure event didn't have a trustable position,
++ // it's necessary to query, see ICCCM 4.24:
++ //
++ // Any real ConfigureNotify event on a top-level window implies
++ // that the window’s position on the root may have changed, even
++ // though the event reports that the window’s position in its
++ // parent is unchanged because the window may have been reparented.
++
+ int x, y;
+ Window child;
+ XTranslateCoordinates(X11->display, internalWinId(),
diff --git a/source/l/qt/qt.QTBUG-35459.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
index dede8324d..5ca91145e 100644
--- a/source/l/qt/qt.QTBUG-35459.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
@@ -6,7 +6,7 @@ diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp q
static const int dtdRecursionLimit = 2;
// The maximum amount of characters an entity value may contain, after expansion.
- static const int entityCharacterLimit = 1024;
-+ static const int entityCharacterLimit = 65536;
++ static const int entityCharacterLimit = 4096;
const QString &string();
void stringClear();
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
new file mode 100644
index 000000000..ee1d19136
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
@@ -0,0 +1,29 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500
+@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath()
+ {
+ QString home = QFile::decodeName(qgetenv("HOME"));
+ if (home.isEmpty())
++ {
++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
++ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX);
++ if (size_max == -1)
++ size_max = 1024;
++ QVarLengthArray<char, 1024> buf(size_max);
++#endif
++ struct passwd *pw = 0;
++ uid_t user_id = getuid();
++ pw = getpwuid(user_id);
++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
++ struct passwd entry;
++ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw);
++#else
++ pw = getpwuid(user_id);
++#endif
++ home = QFile::decodeName(QByteArray(pw->pw_dir));
++ }
++ if (home.isEmpty())
+ home = rootPath();
+ return QDir::cleanPath(home);
+ }
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch
new file mode 100644
index 000000000..fc0ee7670
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch
@@ -0,0 +1,19 @@
+diff -up qt-everywhere-opensource-src-4.8.5/configure.mysql_config qt-everywhere-opensource-src-4.8.5/configure
+--- qt-everywhere-opensource-src-4.8.5/configure.mysql_config 2013-06-07 00:16:41.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/configure 2014-03-07 10:09:27.412071146 -0600
+@@ -5480,8 +5480,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
+ [ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
+ if [ -x "$CFG_MYSQL_CONFIG" ]; then
+ QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
++ $CFG_MYSQL_CONFIG --variable=pkglibdir &>/dev/null && \
++ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --variable=pkglibdir 2>/dev/null`
++ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then
++ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r"
++ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient"
++ else
+ QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
+ QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
++ fi
+ QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
+ QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
+ fi
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch
new file mode 100644
index 000000000..9a9f77353
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch
@@ -0,0 +1,22 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check 2013-06-09 16:28:22.938840346 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp 2013-06-09 17:03:01.781125479 -0500
+@@ -503,18 +503,6 @@ void QGtkStylePrivate::initGtkWidgets()
+ return;
+ }
+
+- static QString themeName;
+- if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) {
+- themeName = getThemeName();
+-
+- if (themeName == QLS("Qt") || themeName == QLS("Qt4")) {
+- // Due to namespace conflicts with Qt3 and obvious recursion with Qt4,
+- // we cannot support the GTK_Qt Gtk engine
+- qWarning("QGtkStyle cannot be used together with the GTK_Qt engine.");
+- return;
+- }
+- }
+-
+ if (QGtkStylePrivate::gtk_init) {
+ // Gtk will set the Qt error handler so we have to reset it afterwards
+ x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0);
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
new file mode 100644
index 000000000..6a87783e3
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
@@ -0,0 +1,19 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path 2013-06-07 00:16:52.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp 2013-06-21 07:14:10.045039936 -0500
+@@ -2511,6 +2511,15 @@ QStringList QCoreApplication::libraryPat
+ if (!app_libpaths->contains(installPathPlugins))
+ app_libpaths->append(installPathPlugins);
+ }
++
++ // hack in support for kde4 plugin paths -- Rex
++ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins");
++ if (QFile::exists(kde4PathPlugins)) {
++ // Make sure we convert from backslashes to slashes.
++ //kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath();
++ if (!app_libpaths->contains(kde4PathPlugins))
++ app_libpaths->append(kde4PathPlugins);
++ }
+ #endif
+
+ // If QCoreApplication is not yet instantiated,
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch
new file mode 100644
index 000000000..2deeb51bb
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch
@@ -0,0 +1,12 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri
+--- qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2013-06-09 11:57:49.198291245 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri 2013-06-09 12:01:24.120100371 -0500
+@@ -1,6 +1,8 @@
+ HEADERS += $$PWD/qsql_tds.h
+ SOURCES += $$PWD/qsql_tds.cpp
+
++*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
++
+ unix|win32-g++*: {
+ LIBS += $$QT_LFLAGS_TDS
+ !contains(LIBS, .*sybdb.*):LIBS += -lsybdb
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
new file mode 100644
index 000000000..d04d1be5a
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
@@ -0,0 +1,28 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp
+diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp 2013-06-09 11:50:25.597813974 -0500
+@@ -152,8 +152,7 @@ void Ui3Reader::embed(const char *projec
+ for ( it = images.begin(); it != images.end(); ++it )
+ out << "** " << *it << "\n";
+ out << "**\n";
+- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
+- out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
++ out << "** Created: by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
+ out << "**\n";
+ out << "** WARNING! All changes made in this file will be lost!\n";
+ out << "****************************************************************************/\n";
+diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp 2013-06-09 11:51:28.310174526 -0500
+@@ -146,8 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
+ out << "/********************************************************************************\n";
+ out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
+ out << "**\n";
+- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
+- out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
++ out << "** Created by: " << QString::fromLatin1("Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
+ out << "**\n";
+ out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
+ out << "********************************************************************************/\n\n";
+diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
new file mode 100644
index 000000000..1ea8af2b0
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
@@ -0,0 +1,16 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri
+--- qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo 2013-06-07 00:16:55.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri 2013-07-11 14:04:19.937056249 -0500
+@@ -5,6 +5,12 @@ include(features.pri)
+
+ # Uncomment this to enable Texture Mapper.
+ # CONFIG += texmap
++#
++equals(QT_ARCH, s390)|equals(QT_ARCH, arm)|equals(QT_ARCH, mips)|equals(QT_ARCH, i386)|equals(QT_ARCH, i686)|equals(QT_ARCH, x86_64)|equals(QT_ARCH, powerpc64)|equals(QT_ARCH, powerpc) {
++ message("WebCore workaround for QtWebkit: do not build with -g, but with -g1")
++ QMAKE_CXXFLAGS_RELEASE -= -g
++ QMAKE_CXXFLAGS_RELEASE += -g1
++}
+
+ QT *= network
+
diff --git a/source/l/qt/qt.QTBUG-22829.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
index b6f5525dc..b6f5525dc 100644
--- a/source/l/qt/qt.QTBUG-22829.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
diff --git a/source/l/qt/qt.qclipboard_fix_recursive.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
index d9fe24b7f..6d3bf2f2c 100644
--- a/source/l/qt/qt.qclipboard_fix_recursive.patch
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
@@ -1,5 +1,5 @@
---- a/src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100
-+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200
+--- src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100
++++ src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200
@@ -255,22 +255,30 @@ struct GPostEventSource
GSource source;
QAtomicInt serialNumber;
@@ -73,8 +73,8 @@
d->timerSource->processEventsFlags = savedFlags;
d->socketNotifierSource->processEventsFlags = savedFlags;
---- a/src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200
-+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200
+--- src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200
++++ src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200
@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents
// we are awake, broadcast it
diff --git a/source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
index 6949bbfef..6949bbfef 100644
--- a/source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
diff --git a/source/l/qt/qt.qclipboard_delay.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
index dcdf51c00..22643e8d5 100644
--- a/source/l/qt/qt.qclipboard_delay.patch
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
@@ -1,5 +1,5 @@
---- a/src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200
-+++ b/src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200
+--- src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200
++++ src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200
@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win
return false;
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch
new file mode 100644
index 000000000..5098c0822
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch
@@ -0,0 +1,31 @@
+diff -up qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
+--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-03-31 17:59:16.846465899 -0500
+@@ -189,6 +189,18 @@
+ #define WTF_CPU_SPARC 1
+ #endif
+
++/* CPU(S390X) - S390 64-bit */
++#if defined(__s390x__)
++#define WTF_CPU_S390X 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
++/* CPU(S390) - S390 32-bit */
++#if defined(__s390__)
++#define WTF_CPU_S390 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
+ /* CPU(X86) - i386 / x86 32-bit */
+ #if defined(__i386__) \
+ || defined(i386) \
+@@ -903,7 +915,7 @@
+ #endif
+
+ #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
+-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64)
++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(S390X)
+ #define WTF_USE_JSVALUE64 1
+ #elif CPU(ARM) || CPU(PPC64)
+ #define WTF_USE_JSVALUE32 1
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch
new file mode 100644
index 000000000..63a746290
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch
@@ -0,0 +1,351 @@
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-10-26 03:33:45.000000000 +0100
+@@ -1,125 +1,7 @@
+-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING
+-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT
+-
+-CLUCENEDIR = ../../../../src/3rdparty/clucene/src/CLucene
+-
+-INCLUDEPATH += . .. \
+- $$CLUCENEDIR \
+- $$CLUCENEDIR/../ \
+- $$CLUCENEDIR/analysis \
+- $$CLUCENEDIR/analysis/standard \
+- $$CLUCENEDIR/config \
+- $$CLUCENEDIR/debug \
+- $$CLUCENEDIR/document \
+- $$CLUCENEDIR/index \
+- $$CLUCENEDIR/queryParser \
+- $$CLUCENEDIR/search \
+- $$CLUCENEDIR/store \
+- $$CLUCENEDIR/util
+-
+-
+-SOURCES += $$CLUCENEDIR/StdHeader.cpp \
+- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \
+- $$CLUCENEDIR/analysis/Analyzers.cpp \
+- $$CLUCENEDIR/config/gunichartables.cpp \
+- $$CLUCENEDIR/config/repl_lltot.cpp \
+- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \
+- $$CLUCENEDIR/config/repl_tcslwr.cpp \
+- $$CLUCENEDIR/config/repl_tcstod.cpp \
+- $$CLUCENEDIR/config/repl_tcstoll.cpp \
+- $$CLUCENEDIR/config/repl_tprintf.cpp \
+- $$CLUCENEDIR/config/threads.cpp \
+- $$CLUCENEDIR/config/utf8.cpp \
+- $$CLUCENEDIR/debug/condition.cpp \
+- $$CLUCENEDIR/debug/error.cpp \
+- $$CLUCENEDIR/debug/memtracking.cpp \
+- $$CLUCENEDIR/document/DateField.cpp \
+- $$CLUCENEDIR/document/Document.cpp \
+- $$CLUCENEDIR/document/Field.cpp \
+- $$CLUCENEDIR/index/CompoundFile.cpp \
+- $$CLUCENEDIR/index/DocumentWriter.cpp \
+- $$CLUCENEDIR/index/FieldInfos.cpp \
+- $$CLUCENEDIR/index/FieldsReader.cpp \
+- $$CLUCENEDIR/index/FieldsWriter.cpp \
+- $$CLUCENEDIR/index/IndexModifier.cpp \
+- $$CLUCENEDIR/index/IndexReader.cpp \
+- $$CLUCENEDIR/index/IndexWriter.cpp \
+- $$CLUCENEDIR/index/MultiReader.cpp \
+- $$CLUCENEDIR/index/SegmentInfos.cpp \
+- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \
+- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \
+- $$CLUCENEDIR/index/SegmentMerger.cpp \
+- $$CLUCENEDIR/index/SegmentReader.cpp \
+- $$CLUCENEDIR/index/SegmentTermDocs.cpp \
+- $$CLUCENEDIR/index/SegmentTermEnum.cpp \
+- $$CLUCENEDIR/index/SegmentTermPositions.cpp \
+- $$CLUCENEDIR/index/SegmentTermVector.cpp \
+- $$CLUCENEDIR/index/Term.cpp \
+- $$CLUCENEDIR/index/TermInfo.cpp \
+- $$CLUCENEDIR/index/TermInfosReader.cpp \
+- $$CLUCENEDIR/index/TermInfosWriter.cpp \
+- $$CLUCENEDIR/index/TermVectorReader.cpp \
+- $$CLUCENEDIR/index/TermVectorWriter.cpp \
+- $$CLUCENEDIR/queryParser/Lexer.cpp \
+- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \
+- $$CLUCENEDIR/queryParser/QueryParser.cpp \
+- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \
+- $$CLUCENEDIR/queryParser/QueryToken.cpp \
+- $$CLUCENEDIR/queryParser/TokenList.cpp \
+- $$CLUCENEDIR/search/BooleanQuery.cpp \
+- $$CLUCENEDIR/search/BooleanScorer.cpp \
+- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \
+- $$CLUCENEDIR/search/ChainedFilter.cpp \
+- $$CLUCENEDIR/search/ConjunctionScorer.cpp \
+- $$CLUCENEDIR/search/DateFilter.cpp \
+- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \
+- $$CLUCENEDIR/search/Explanation.cpp \
+- $$CLUCENEDIR/search/FieldCache.cpp \
+- $$CLUCENEDIR/search/FieldCacheImpl.cpp \
+- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \
+- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \
+- $$CLUCENEDIR/search/FilteredTermEnum.cpp \
+- $$CLUCENEDIR/search/FuzzyQuery.cpp \
+- $$CLUCENEDIR/search/HitQueue.cpp \
+- $$CLUCENEDIR/search/Hits.cpp \
+- $$CLUCENEDIR/search/IndexSearcher.cpp \
+- $$CLUCENEDIR/search/MultiSearcher.cpp \
+- $$CLUCENEDIR/search/MultiTermQuery.cpp \
+- $$CLUCENEDIR/search/PhrasePositions.cpp \
+- $$CLUCENEDIR/search/PhraseQuery.cpp \
+- $$CLUCENEDIR/search/PhraseScorer.cpp \
+- $$CLUCENEDIR/search/PrefixQuery.cpp \
+- $$CLUCENEDIR/search/QueryFilter.cpp \
+- $$CLUCENEDIR/search/RangeFilter.cpp \
+- $$CLUCENEDIR/search/RangeQuery.cpp \
+- $$CLUCENEDIR/search/SearchHeader.cpp \
+- $$CLUCENEDIR/search/Similarity.cpp \
+- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \
+- $$CLUCENEDIR/search/Sort.cpp \
+- $$CLUCENEDIR/search/TermQuery.cpp \
+- $$CLUCENEDIR/search/TermScorer.cpp \
+- $$CLUCENEDIR/search/WildcardQuery.cpp \
+- $$CLUCENEDIR/search/WildcardTermEnum.cpp \
+- $$CLUCENEDIR/store/FSDirectory.cpp \
+- $$CLUCENEDIR/store/IndexInput.cpp \
+- $$CLUCENEDIR/store/IndexOutput.cpp \
+- $$CLUCENEDIR/store/Lock.cpp \
+- $$CLUCENEDIR/store/MMapInput.cpp \
+- $$CLUCENEDIR/store/RAMDirectory.cpp \
+- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \
+- $$CLUCENEDIR/util/BitSet.cpp \
+- $$CLUCENEDIR/util/Equators.cpp \
+- $$CLUCENEDIR/util/FastCharStream.cpp \
+- $$CLUCENEDIR/util/fileinputstream.cpp \
+- $$CLUCENEDIR/util/Misc.cpp \
+- $$CLUCENEDIR/util/Reader.cpp \
+- $$CLUCENEDIR/util/StringBuffer.cpp \
+- $$CLUCENEDIR/util/StringIntern.cpp \
+- $$CLUCENEDIR/util/ThreadLocal.cpp \
+- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \
+- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \
+- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp
+
++INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
++LIBS += -L$$[QT_INSTALL_LIBS]/clucene09 -lclucene
++#DEFINES += LUCENE_ENABLE_REFCOUNT (must be set at CLucene build time!)
+
+ #Header files
+ HEADERS += qclucene_global_p.h \
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-10-26 02:28:54.000000000 +0100
+@@ -15,6 +15,8 @@
+ **
+ ****************************************************************************/
+
++#error This header must not be included when building against system CLucene.
++
+ #ifndef QCLUCENE_CONFIG_P_H
+ #define QCLUCENE_CONFIG_P_H
+
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-10-26 02:31:54.000000000 +0100
+@@ -29,20 +29,10 @@
+ // We mean it.
+ //
+
+-#if !defined(_MSC_VER)
+-# include "qclucene-config_p.h"
+-#endif
+-
+ #include <QtCore/QChar>
+ #include <QtCore/QString>
+
+-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
+-# if !defined(TCHAR)
+-# define TCHAR wchar_t
+-# endif
+-#else
+-# include <windows.h>
+-#endif
++#include <CLucene/StdHeader.h>
+
+ QT_BEGIN_HEADER
+
+@@ -56,52 +46,6 @@
+ # define QHELP_EXPORT Q_DECL_IMPORT
+ #endif
+
+-//
+-// W A R N I N G
+-// -------------
+-//
+-// adjustments here, need to be done in
+-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well
+-//
+-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
+-
+-#elif !defined(DISABLE_NAMESPACE)
+-# ifdef QT_NAMESPACE
+-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{
+-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 {
+-
+-# define CL_NS_END }}}
+-# define CL_NS_END2 }}}}
+-
+-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub;
+-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2;
+-
+-# define CL_NS(sub) QT_NAMESPACE::lucene::sub
+-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2
+-# else
+-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{
+-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
+-
+-# define CL_NS_END }}
+-# define CL_NS_END2 }}}
+-
+-# define CL_NS_USE(sub) using namespace lucene::sub;
+-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
+-
+-# define CL_NS(sub) lucene::sub
+-# define CL_NS2(sub,sub2) lucene::sub::sub2
+-# endif
+-#else
+-# define CL_NS_DEF(sub)
+-# define CL_NS_DEF2(sub, sub2)
+-# define CL_NS_END
+-# define CL_NS_END2
+-# define CL_NS_USE(sub)
+-# define CL_NS_USE2(sub,sub2)
+-# define CL_NS(sub)
+-# define CL_NS2(sub,sub2)
+-#endif
+-
+ namespace {
+ TCHAR* QStringToTChar(const QString &str)
+ {
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-10-26 02:48:02.000000000 +0100
+@@ -18,6 +18,8 @@
+ #include "qindexreader_p.h"
+ #include "qclucene_global_p.h"
+
++#include <QtCore/QDir>
++
+ #include <CLucene.h>
+ #include <CLucene/index/IndexReader.h>
+
+@@ -59,13 +61,13 @@
+ {
+ using namespace lucene::index;
+
+- return IndexReader::isLuceneFile(filename);
++ return IndexReader::isLuceneFile(filename.toLocal8Bit().constData());
+ }
+
+ bool QCLuceneIndexReader::indexExists(const QString &directory)
+ {
+ using namespace lucene::index;
+- return IndexReader::indexExists(directory);
++ return IndexReader::indexExists(directory.toLocal8Bit().constData());
+ }
+
+ QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path)
+@@ -73,7 +75,7 @@
+ using namespace lucene::index;
+
+ QCLuceneIndexReader indexReader;
+- indexReader.d->reader = IndexReader::open(path);
++ indexReader.d->reader = IndexReader::open(path.toLocal8Bit().constData());
+
+ return indexReader;
+ }
+@@ -81,25 +83,29 @@
+ void QCLuceneIndexReader::unlock(const QString &path)
+ {
+ using namespace lucene::index;
+- IndexReader::unlock(path);
++ IndexReader::unlock(path.toLocal8Bit().constData());
+ }
+
+ bool QCLuceneIndexReader::isLocked(const QString &directory)
+ {
++ // The system CLucene fails here if the directory does not exist yet, unlike
++ // the bundled one. Work around that.
++ QDir::current().mkpath(directory);
++
+ using namespace lucene::index;
+- return IndexReader::isLocked(directory);
++ return IndexReader::isLocked(directory.toLocal8Bit().constData());
+ }
+
+ quint64 QCLuceneIndexReader::lastModified(const QString &directory)
+ {
+ using namespace lucene::index;
+- return quint64(IndexReader::lastModified(directory));
++ return quint64(IndexReader::lastModified(directory.toLocal8Bit().constData()));
+ }
+
+ qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory)
+ {
+ using namespace lucene::index;
+- return qint64(IndexReader::getCurrentVersion(directory));
++ return qint64(IndexReader::getCurrentVersion(directory.toLocal8Bit().constData()));
+ }
+
+ void QCLuceneIndexReader::close()
+@@ -155,7 +161,7 @@
+ void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value)
+ {
+ TCHAR *fieldName = QStringToTChar(field);
+- d->reader->setNorm(int32_t(doc), fieldName, qreal(value));
++ d->reader->setNorm(int32_t(doc), fieldName, (float_t)value);
+ delete [] fieldName;
+ }
+
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-10-26 02:48:27.000000000 +0100
+@@ -18,6 +18,8 @@
+ #include "qindexwriter_p.h"
+ #include "qindexreader_p.h"
+
++#include <QtCore/QDir>
++
+ #include <CLucene.h>
+ #include <CLucene/index/IndexWriter.h>
+
+@@ -50,7 +52,12 @@
+ : d(new QCLuceneIndexWriterPrivate())
+ , analyzer(analyzer)
+ {
+- d->writer = new lucene::index::IndexWriter(path,
++ // The system CLucene cannot create directories recursively, so do it here.
++ // Ignore failure: If it failed, we will get an error from CLucene anyway.
++ if (create)
++ QDir::current().mkpath(path);
++
++ d->writer = new lucene::index::IndexWriter(path.toLocal8Bit().constData(),
+ analyzer.d->analyzer, create, closeDir);
+ }
+
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-10-26 02:48:44.000000000 +0100
+@@ -95,7 +95,7 @@
+ : QCLuceneSearcher()
+ {
+ lucene::search::IndexSearcher *searcher =
+- new lucene::search::IndexSearcher(path);
++ new lucene::search::IndexSearcher(path.toLocal8Bit().constData());
+
+ reader.d->reader = searcher->getReader();
+ reader.d->deleteCLuceneIndexReader = false;
+diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro
+--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro 2014-04-10 20:37:12.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro 2014-10-26 02:27:55.000000000 +0100
+@@ -43,6 +43,7 @@
+ qhelp_global.cpp
+
+ # access to clucene
++INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
+ SOURCES += qhelpsearchindexwriter_clucene.cpp \
+ qhelpsearchindexreader_clucene.cpp
+ HEADERS += qhelpenginecore.h \
diff --git a/source/l/qt/qt.qsystemtrayicon-plugin-system.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
index 2466a16b4..60749d382 100644
--- a/source/l/qt/qt.qsystemtrayicon-plugin-system.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
@@ -1,26 +1,7 @@
-Description: Introduce a plugin system for QSystemTrayIcon.
- Designed to be used with sni-qt (https://launchpad.net/sni-qt)
-Author: agateau@kde.org
-Forwarded: no
-
-Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
-(https://launchpad.net/sni-qt)
----
- examples/desktop/systray/window.cpp | 40 ++
- examples/desktop/systray/window.h | 6
- src/gui/util/qabstractsystemtrayiconsys.cpp | 65 +++
- src/gui/util/qabstractsystemtrayiconsys_p.h | 106 ++++++
- src/gui/util/qsystemtrayicon.cpp | 6
- src/gui/util/qsystemtrayicon_p.h | 85 ++---
- src/gui/util/qsystemtrayicon_x11.cpp | 356 ++++-----------------
- src/gui/util/qxembedsystemtrayicon_x11.cpp | 469 ++++++++++++++++++++++++++++
- src/gui/util/qxembedsystemtrayicon_x11_p.h | 104 ++++++
- src/gui/util/util.pri | 7
- 10 files changed, 916 insertions(+), 328 deletions(-)
-
---- a/examples/desktop/systray/window.cpp
-+++ b/examples/desktop/systray/window.cpp
-@@ -158,15 +158,23 @@
+diff -up qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp
+--- qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp.systemtrayicon 2014-03-30 15:36:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp 2014-03-31 18:16:39.707974934 -0500
+@@ -158,15 +158,23 @@ void Window::createIconGroupBox()
iconComboBox->addItem(QIcon(":/images/bad.svg"), tr("Bad"));
iconComboBox->addItem(QIcon(":/images/heart.svg"), tr("Heart"));
iconComboBox->addItem(QIcon(":/images/trash.svg"), tr("Trash"));
@@ -44,7 +25,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
iconGroupBox->setLayout(iconLayout);
}
-@@ -254,5 +262,37 @@
+@@ -254,5 +262,37 @@ void Window::createTrayIcon()
trayIconMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(this);
@@ -82,9 +63,10 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
+ return false;
}
+#endif
---- a/examples/desktop/systray/window.h
-+++ b/examples/desktop/systray/window.h
-@@ -69,6 +69,9 @@
+diff -up qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h
+--- qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h.systemtrayicon 2014-03-30 15:36:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h 2014-03-31 18:16:39.707974934 -0500
+@@ -69,6 +69,9 @@ public:
protected:
void closeEvent(QCloseEvent *event);
@@ -94,7 +76,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
private slots:
void setIcon(int index);
-@@ -86,6 +89,9 @@
+@@ -86,6 +89,9 @@ private:
QLabel *iconLabel;
QComboBox *iconComboBox;
QCheckBox *showIconCheckBox;
@@ -104,8 +86,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
QGroupBox *messageGroupBox;
QLabel *typeLabel;
---- /dev/null
-+++ b/src/gui/util/qabstractsystemtrayiconsys.cpp
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp.systemtrayicon 2014-03-31 18:16:39.707974934 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp 2014-03-31 18:16:39.707974934 -0500
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
@@ -172,8 +155,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
+}
+
+#endif
---- /dev/null
-+++ b/src/gui/util/qabstractsystemtrayiconsys_p.h
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h.systemtrayicon 2014-03-31 18:16:39.708974924 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h 2014-03-31 18:16:39.708974924 -0500
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
@@ -281,9 +265,10 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
+
+#endif // QABSTRACTSYSTEMTRAYICONSYS_P_H
+
---- a/src/gui/util/qsystemtrayicon.cpp
-+++ b/src/gui/util/qsystemtrayicon.cpp
-@@ -287,12 +287,6 @@
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp.systemtrayicon 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp 2014-03-31 18:16:39.708974924 -0500
+@@ -287,12 +287,6 @@ bool QSystemTrayIcon::isVisible() const
*/
bool QSystemTrayIcon::event(QEvent *e)
{
@@ -296,8 +281,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
return QObject::event(e);
}
---- a/src/gui/util/qsystemtrayicon_p.h
-+++ b/src/gui/util/qsystemtrayicon_p.h
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h.systemtrayicon 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h 2014-03-31 18:16:39.708974924 -0500
@@ -62,10 +62,17 @@
#include "QtGui/qpixmap.h"
#include "QtCore/qstring.h"
@@ -316,7 +302,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
class QToolButton;
class QLabel;
-@@ -75,6 +82,9 @@
+@@ -75,6 +82,9 @@ class QSystemTrayIconPrivate : public QO
public:
QSystemTrayIconPrivate() : sys(0), visible(false) { }
@@ -326,7 +312,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
void install_sys();
void remove_sys();
-@@ -90,7 +100,11 @@
+@@ -90,7 +100,11 @@ public:
QPointer<QMenu> menu;
QIcon icon;
QString toolTip;
@@ -338,7 +324,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
bool visible;
};
-@@ -123,60 +137,37 @@
+@@ -123,60 +137,37 @@ private:
};
#if defined(Q_WS_X11)
@@ -423,8 +409,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
QT_END_NAMESPACE
---- a/src/gui/util/qsystemtrayicon_x11.cpp
-+++ b/src/gui/util/qsystemtrayicon_x11.cpp
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp.systemtrayicon 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp 2014-03-31 18:16:39.709974914 -0500
@@ -38,311 +38,122 @@
** $QT_END_LICENSE$
**
@@ -809,7 +796,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
}
void QSystemTrayIconPrivate::remove_sys()
-@@ -350,35 +161,35 @@
+@@ -350,35 +161,35 @@ void QSystemTrayIconPrivate::remove_sys(
if (!sys)
return;
QBalloonTip::hideBalloon();
@@ -853,7 +840,7 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
}
bool QSystemTrayIconPrivate::supportsMessages_sys()
-@@ -389,12 +200,9 @@
+@@ -389,12 +200,9 @@ bool QSystemTrayIconPrivate::supportsMes
void QSystemTrayIconPrivate::showMessage_sys(const QString &message, const QString &title,
QSystemTrayIcon::MessageIcon icon, int msecs)
{
@@ -868,8 +855,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
}
QT_END_NAMESPACE
---- /dev/null
-+++ b/src/gui/util/qxembedsystemtrayicon_x11.cpp
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp.systemtrayicon 2014-03-31 18:16:39.709974914 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp 2014-03-31 18:16:39.709974914 -0500
@@ -0,0 +1,469 @@
+/****************************************************************************
+**
@@ -1340,8 +1328,9 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
+
+QT_END_NAMESPACE
+#endif //QT_NO_SYSTEMTRAYICON
---- /dev/null
-+++ b/src/gui/util/qxembedsystemtrayicon_x11_p.h
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h.systemtrayicon 2014-03-31 18:16:39.709974914 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h 2014-03-31 18:16:39.709974914 -0500
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
@@ -1447,9 +1436,10 @@ Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt
+
+#endif // QXEMBEDSYSTEMTRAYICON_X11_P_H
+
---- a/src/gui/util/util.pri
-+++ b/src/gui/util/util.pri
-@@ -29,8 +29,13 @@
+diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri
+--- qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri.systemtrayicon 2014-03-30 15:36:49.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri 2014-03-31 18:16:39.710974903 -0500
+@@ -29,8 +29,13 @@ wince* {
}
unix:x11 {
diff --git a/source/l/qt/qt.QT_VERSION_CHECK.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
index 9bce98ff8..9bce98ff8 100644
--- a/source/l/qt/qt.QT_VERSION_CHECK.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
new file mode 100644
index 000000000..572a955dc
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
@@ -0,0 +1,137 @@
+diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp
+--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100
++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100
+@@ -40,7 +40,7 @@
+ ****************************************************************************/
+
+ #include <alsa/asoundlib.h>
+-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10))
++#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10)))
+ #error "Alsa version found too old, require >= 1.0.10"
+ #endif
+
+diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+index 973cbab..0b27e9d 100644
+--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
++++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+@@ -63,7 +63,7 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode
+ device = QLatin1String(dev);
+ this->mode = mode;
+
+-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ checkSurround();
+ #endif
+ }
+@@ -159,13 +159,13 @@ bool QAudioDeviceInfoInternal::open()
+ QList<QByteArray> devices = availableDevices(mode);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(devices.first().constData());
+ #else
+ dev = QLatin1String("hw:0,0");
+ #endif
+ } else {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = device;
+ #else
+ int idx = 0;
+@@ -212,13 +212,13 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(devices.first().constData());
+ #else
+ dev = QLatin1String("hw:0,0");
+ #endif
+ } else {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = device;
+ #else
+ int idx = 0;
+@@ -396,7 +396,7 @@ void QAudioDeviceInfoInternal::updateLists()
+ }
+ channelz.append(1);
+ channelz.append(2);
+-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ if (surround40) channelz.append(4);
+ if (surround51) channelz.append(6);
+ if (surround71) channelz.append(8);
+@@ -419,7 +419,7 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
+ QList<QByteArray> devices;
+ QByteArray filter;
+
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ // Create a list of all current audio devices that support mode
+ void **hints, **n;
+ char *name, *descr, *io;
+@@ -498,7 +498,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
+ return devices.first();
+ }
+
+-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ void QAudioDeviceInfoInternal::checkSurround()
+ {
+ QList<QByteArray> devices;
+diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
+index 96febf4..714bf60 100644
+--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
++++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
+@@ -98,7 +98,7 @@ private:
+ bool open();
+ void close();
+
+-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ void checkSurround();
+ bool surround40;
+ bool surround51;
+diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
+index 339fd9f..abfa4a1 100644
+--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
++++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
+@@ -284,13 +284,13 @@ bool QAudioInputPrivate::open()
+ QString dev = QString(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(devices.first());
+ #else
+ dev = QLatin1String("hw:0,0");
+ #endif
+ } else {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(m_device);
+ #else
+ int idx = 0;
+diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
+index bf85de5..c29a89f 100644
+--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp
++++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
+@@ -299,13 +299,13 @@ bool QAudioOutputPrivate::open()
+ QString dev = QString(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(devices.first());
+ #else
+ dev = QLatin1String("hw:0,0");
+ #endif
+ } else {
+-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
+ dev = QLatin1String(m_device);
+ #else
+ int idx = 0;
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch
new file mode 100644
index 000000000..eeed1b97c
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch
@@ -0,0 +1,12 @@
+diff -up qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me 2019-03-22 10:22:16.213800109 +0100
++++ qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp 2019-03-22 10:22:40.721890281 +0100
+@@ -108,7 +108,7 @@ static bool read_pbm_header(QIODevice *d
+ else
+ mcc = read_pbm_int(device); // get max color component
+
+- if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0)
++ if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff)
+ return false; // weird P.M image
+
+ return true;
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch
new file mode 100644
index 000000000..456abceb3
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch
@@ -0,0 +1,45 @@
+diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp
+--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase 2015-05-07 09:14:42.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp 2016-11-30 10:55:05.825339674 -0600
+@@ -39,7 +39,7 @@
+ **
+ ****************************************************************************/
+
+-#include <ibase.h>
++#include <firebird/ibase.h>
+
+ int main(int, char **)
+ {
+diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro
+--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase 2015-05-07 09:14:42.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro 2016-11-30 10:56:11.017740104 -0600
+@@ -1,4 +1,4 @@
+ SOURCES = ibase.cpp
+ CONFIG -= qt dylib
+ mac:CONFIG -= app_bundle
+-LIBS += -lgds
++LIBS += -lfbclient
+diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h
+--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase 2015-05-07 09:14:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h 2016-11-30 10:57:34.516252974 -0600
+@@ -45,7 +45,7 @@
+ #include <QtSql/qsqlresult.h>
+ #include <QtSql/qsqldriver.h>
+ #include <QtSql/private/qsqlcachedresult_p.h>
+-#include <ibase.h>
++#include <firebird/ibase.h>
+
+ QT_BEGIN_HEADER
+
+diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri
+--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase 2015-05-07 09:14:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri 2016-11-30 10:57:11.783113341 -0600
+@@ -2,7 +2,7 @@ HEADERS += $$PWD/qsql_ibase.h
+ SOURCES += $$PWD/qsql_ibase.cpp
+
+ unix {
+- !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds
++ !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lfbclient
+ } else {
+ !contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) {
+ win32-borland:LIBS += gds32.lib
diff --git a/source/l/qt/qt.gcc6.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch
index aaf1c497f..421292939 100644
--- a/source/l/qt/qt.gcc6.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch
@@ -6,7 +6,7 @@ diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensou
# Check gcc's version
case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
- 5*|4*|3.4*)
-+ 8*|7*|6*|5*|4*|3.4*)
++ 9*|8*|7*|6*|5*|4*|3.4*)
;;
3.3*)
canBuildWebKit="no"
@@ -15,7 +15,7 @@ diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensou
COMPILER_VERSION="3.*"
;;
- 5*|4.*)
-+ 8*|7*|6*|5*|4.*)
++ 9*|8*|7*|6*|5*|4.*)
COMPILER_VERSION="4"
;;
*)
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
new file mode 100644
index 000000000..7e79d2174
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
@@ -0,0 +1,13 @@
+diff -up qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 qt-everywhere-opensource-src-4.8.7/src/script/script.pro
+--- qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 2015-05-07 09:14:43.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/script/script.pro 2018-05-19 16:01:24.699926959 -0500
+@@ -91,6 +91,9 @@ symbian {
+ TARGET.UID3=0x2001B2E1
+ }
+
++# hack around gcc8 optimization bug with -O2
++QMAKE_CXXFLAGS_RELEASE += -O1
++
+ symbian {
+ symbian-abld|symbian-sbsv2 {
+ MMP_RULES += ALWAYS_BUILD_AS_ARM
diff --git a/source/l/qt/qt.icu59.c++11.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch
index 3edcdef02..3edcdef02 100644
--- a/source/l/qt/qt.icu59.c++11.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch
new file mode 100644
index 000000000..7e480138b
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch
@@ -0,0 +1,28 @@
+diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb 2015-05-07 09:14:48.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp 2017-10-23 14:13:15.871808984 -0500
+@@ -1105,11 +1105,16 @@ static void qLibraryInit()
+ }
+ # endif // MYSQL_VERSION_ID
+ #endif // Q_NO_MYSQL_EMBEDDED
++
++#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID)
++ qAddPostRoutine(mysql_server_end);
++#endif
+ }
+
+ static void qLibraryEnd()
+ {
+ #ifndef Q_NO_MYSQL_EMBEDDED
++#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID)
+ # if MYSQL_VERSION_ID > 40000
+ # if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
+ mysql_library_end();
+@@ -1118,6 +1123,7 @@ static void qLibraryEnd()
+ # endif
+ # endif
+ #endif
++#endif
+ }
+
+ QMYSQLDriver::QMYSQLDriver(QObject * parent)
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch
new file mode 100644
index 000000000..6456f2c61
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch
@@ -0,0 +1,13 @@
+diff -urp qt-everywhere-opensource-src-4.8.7/configure q/configure
+--- qt-everywhere-opensource-src-4.8.7/configure 2016-04-03 16:49:50.218644449 +0200
++++ q/configure 2016-04-03 17:22:35.376405024 +0200
+@@ -3331,6 +3331,9 @@ arm*)
+ CFG_ARCH=arm
+ COMPAT_ARCH=armv6
+ ;;
++mips*)
++ CFG_ARCH=mips
++ ;;
+ esac
+
+ if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then
diff --git a/source/l/qt/qt4.openssl-1.1.diff b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
index 607613e58..6a9946030 100644
--- a/source/l/qt/qt4.openssl-1.1.diff
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
@@ -1,164 +1,6 @@
---- ./src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-05-06 14:40:01.247000361 -0500
-@@ -213,9 +213,15 @@
- BIO_METHOD *q_BIO_s_mem();
- int q_BIO_write(BIO *a, const void *b, int c);
- int q_BN_num_bits(const BIGNUM *a);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- int q_CRYPTO_num_locks();
- void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
- void q_CRYPTO_set_id_callback(unsigned long (*a)());
-+#else
-+#define q_CRYPTO_num_locks() 1
-+#define q_CRYPTO_set_locking_callback(a)
-+#define q_CRYPTO_set_id_callback(a)
-+#endif
- void q_CRYPTO_free(void *a);
- void q_DSA_free(DSA *a);
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
-@@ -258,6 +264,7 @@
- void q_RAND_seed(const void *a, int b);
- int q_RAND_status();
- void q_RSA_free(RSA *a);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- int q_sk_num(STACK *a);
- void q_sk_pop_free(STACK *a, void (*b)(void *));
- #if OPENSSL_VERSION_NUMBER >= 0x10000000L
-@@ -267,6 +274,16 @@
- void q_sk_free(STACK *a);
- char * q_sk_value(STACK *a, int b);
- #endif
-+#else
-+int q_OPENSSL_sk_num(STACK *a);
-+void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *));
-+void q_OPENSSL_sk_free(_STACK *a);
-+void * q_OPENSSL_sk_value(STACK *a, int b);
-+#define q_sk_num q_OPENSSL_sk_num
-+#define q_sk_pop_free q_OPENSSL_sk_pop_free
-+#define q_sk_free q_OPENSSL_sk_free
-+#define q_sk_value q_OPENSSL_sk_value
-+#endif
- int q_SSL_accept(SSL *a);
- int q_SSL_clear(SSL *a);
- char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c);
-@@ -314,8 +331,14 @@
- #else
- long q_SSL_get_verify_result(SSL *a);
- #endif
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- int q_SSL_library_init();
- void q_SSL_load_error_strings();
-+#else
-+int q_OPENSSL_init_ssl(uint64_t opts, void *settings);
-+#define q_SSL_library_init() q_OPENSSL_init_ssl(0, NULL)
-+#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
-+#endif
- SSL *q_SSL_new(SSL_CTX *a);
- #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
- long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg);
-@@ -328,11 +351,21 @@
- #if OPENSSL_VERSION_NUMBER >= 0x10000000L
- const SSL_METHOD *q_SSLv2_client_method();
- const SSL_METHOD *q_SSLv3_client_method();
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- const SSL_METHOD *q_SSLv23_client_method();
-+#else
-+const SSL_METHOD *q_TLS_client_method();
-+#define q_SSLv23_client_method q_TLS_client_method
-+#endif
- const SSL_METHOD *q_TLSv1_client_method();
- const SSL_METHOD *q_SSLv2_server_method();
- const SSL_METHOD *q_SSLv3_server_method();
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- const SSL_METHOD *q_SSLv23_server_method();
-+#else
-+const SSL_METHOD *q_TLS_server_method();
-+#define q_SSLv23_server_method q_TLS_server_method
-+#endif
- const SSL_METHOD *q_TLSv1_server_method();
- #else
- SSL_METHOD *q_SSLv2_client_method();
-@@ -377,7 +410,12 @@
- int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
- int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
- X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
-+#else
-+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
-+#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain
-+#endif
-
- #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
- #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
-@@ -399,7 +437,25 @@
- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
- bp,(char *)x,enc,kstr,klen,cb,u)
- #endif
-+
-+X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx);
-+ASN1_INTEGER * q_X509_get_serialNumber(X509 *x);
-+
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- #define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
-+#define q_X509_get_version(x) X509_get_version(x)
-+#else
-+int q_EVP_PKEY_id(const EVP_PKEY *pkey);
-+int q_EVP_PKEY_base_id(const EVP_PKEY *pkey);
-+int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
-+long q_SSL_CTX_set_options(SSL_CTX *ctx, long options);
-+long q_X509_get_version(X509 *x);
-+X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x);
-+int q_RSA_bits(const RSA *rsa);
-+int q_DSA_security_bits(const DSA *dsa);
-+void q_DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g);
-+#endif
-+
- #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
- #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
- #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st))
-@@ -410,8 +466,17 @@
- #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i))
- #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \
- q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
-+
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- #define q_X509_get_notAfter(x) X509_get_notAfter(x)
- #define q_X509_get_notBefore(x) X509_get_notBefore(x)
-+#else
-+ASN1_TIME *q_X509_getm_notAfter(X509 *x);
-+ASN1_TIME *q_X509_getm_notBefore(X509 *x);
-+#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x)
-+#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x)
-+#endif
-+
- #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
- (char *)(rsa))
- #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
-@@ -421,10 +486,21 @@
- #else
- #define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf()
- #endif
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- void q_OPENSSL_add_all_algorithms_noconf();
- void q_OPENSSL_add_all_algorithms_conf();
-+#else
-+int q_OPENSSL_init_crypto(uint64_t opts, void *settings);
-+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, NULL)
-+# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
-+#endif
- int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- long q_SSLeay();
-+#else
-+unsigned long q_OpenSSL_version_num();
-+#define q_SSLeay q_OpenSSL_version_num
-+#endif
-
- // Helper function
- class QDateTime;
---- ./src/network/ssl/qsslcertificate.cpp.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslcertificate.cpp 2018-05-06 14:40:01.246000361 -0500
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp 2018-01-05 17:44:16.997588265 +0100
@@ -259,10 +259,10 @@
QByteArray QSslCertificate::version() const
{
@@ -220,8 +62,21 @@
q_EVP_PKEY_free(pkey);
return key;
}
---- ./src/network/ssl/qsslkey.cpp.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslkey.cpp 2018-05-06 14:40:01.246000361 -0500
+@@ -687,7 +696,11 @@
+ unsigned char *data = 0;
+ int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
+ info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ q_CRYPTO_free(data);
++#else
++ q_CRYPTO_free(data, __FILE__, __LINE__);
++#endif
+ }
+ return info;
+ }
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp 2018-01-05 18:00:27.453937599 +0100
@@ -321,8 +321,19 @@
{
if (d->isNull)
@@ -232,20 +87,152 @@
+#else
+ if (d->algorithm == QSsl::Rsa) {
+ return q_RSA_bits(d->rsa);
-+ }else{
-+ BIGNUM *p = NULL;
-+ q_DSA_get0_pqg(d->dsa, &p, NULL, NULL);
-+ return q_BN_num_bits(p);
++ } else {
++ const BIGNUM *p = (const BIGNUM *) NULL;
++ q_DSA_get0_pqg(d->dsa, &p, (const BIGNUM **) NULL, (const BIGNUM **) NULL);
++ return q_BN_num_bits(p);
+ }
+#endif
+
}
/*!
---- ./src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-05-06 14:48:20.109000379 -0500
-@@ -117,9 +117,11 @@
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp 2018-01-05 12:06:06.336990956 +0100
+@@ -93,6 +93,7 @@
+ bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
+ bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ /* \internal
+
+ From OpenSSL's thread(3) manual page:
+@@ -174,6 +175,8 @@
+ }
+ } // extern "C"
+
++#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L
++
+ QSslSocketBackendPrivate::QSslSocketBackendPrivate()
+ : ssl(0),
+ ctx(0),
+@@ -222,9 +225,12 @@
+ ciph.d->encryptionMethod = descriptionList.at(4).mid(4);
+ ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export"));
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ ciph.d->bits = cipher->strength_bits;
+ ciph.d->supportedBits = cipher->alg_bits;
+-
++#else
++ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits);
++#endif
+ }
+ return ciph;
+ }
+@@ -363,7 +369,7 @@
+ //
+ // See also: QSslContext::fromConfiguration()
+ if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) {
+- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle());
++ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle());
+ }
+ }
+
+@@ -500,8 +506,10 @@
+ */
+ void QSslSocketPrivate::deinitialize()
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ q_CRYPTO_set_id_callback(0);
+ q_CRYPTO_set_locking_callback(0);
++#endif
+ }
+
+ /*!
+@@ -522,13 +530,17 @@
+ return false;
+
+ // Check if the library itself needs to be initialized.
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ QMutexLocker locker(openssl_locks()->initLock());
++#endif
+ if (!s_libraryLoaded) {
+ s_libraryLoaded = true;
+
+ // Initialize OpenSSL.
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ q_CRYPTO_set_id_callback(id_function);
+ q_CRYPTO_set_locking_callback(locking_function);
++#endif
+ if (q_SSL_library_init() != 1)
+ return false;
+ q_SSL_load_error_strings();
+@@ -567,7 +579,9 @@
+
+ void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
+ {
+- QMutexLocker locker(openssl_locks()->initLock());
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++ QMutexLocker locker(openssl_locks()->initLock());
++#endif
+ if (s_loadedCiphersAndCerts)
+ return;
+ s_loadedCiphersAndCerts = true;
+@@ -659,13 +673,18 @@
+ STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl);
+ for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
+ if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) {
+- if (cipher->valid) {
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++ if (cipher->valid) {
++#endif
+ QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher);
+ if (!ciph.isNull()) {
+ if (!ciph.name().toLower().startsWith(QLatin1String("adh")))
+ ciphers << ciph;
+ }
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ }
++#endif
+ }
+ }
+
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h 2018-01-05 12:06:06.337990940 +0100
+@@ -84,6 +84,10 @@
+ #include <openssl/tls1.h>
+ #endif
+
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#define OPENSSL_NO_SSL2
++#endif
++
+ #if OPENSSL_VERSION_NUMBER >= 0x10000000L
+ typedef _STACK STACK;
+ #endif
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-01-05 17:59:10.636973932 +0100
+@@ -111,16 +111,30 @@
+ DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return);
+ DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return)
+ DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return)
++#else
++DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return)
++#endif
+ DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return)
+ DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
++#else
++DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
++#endif
DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return)
DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
@@ -253,10 +240,15 @@
DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG)
DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG)
+#endif
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
++#else
++DEFINEFUNC3(void, CRYPTO_free, void *a, a, const char *b, b, int c, c, return, DUMMYARG)
++#endif
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
#if OPENSSL_VERSION_NUMBER < 0x00908000L
-@@ -157,6 +159,7 @@
+ DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, unsigned char **b, b, long c, c, return 0, return)
+@@ -157,6 +171,7 @@
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
@@ -264,7 +256,7 @@
DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
-@@ -166,6 +169,12 @@
+@@ -166,6 +181,12 @@
DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG)
DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return)
#endif
@@ -277,7 +269,7 @@
DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return)
DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return)
DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return)
-@@ -213,8 +222,12 @@
+@@ -213,8 +234,12 @@
#else
DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return)
#endif
@@ -285,12 +277,12 @@
DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return)
DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG)
+#else
-+DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, void *settings, settings, return -1, return)
++DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
+#endif
DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return)
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return)
-@@ -229,13 +242,21 @@
+@@ -229,13 +254,21 @@
DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
#endif
DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
@@ -312,7 +304,7 @@
DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
#else
DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
-@@ -274,7 +295,11 @@
+@@ -274,7 +307,11 @@
DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return)
DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return)
DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return)
@@ -324,7 +316,7 @@
DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return)
#ifdef SSLEAY_MACROS
DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
-@@ -282,10 +307,39 @@
+@@ -282,10 +319,34 @@
DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return)
DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return)
#endif
@@ -332,7 +324,7 @@
DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG)
DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG)
+#else
-+DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, void *settings, settings, return -1, return)
++DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
+#endif
DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
@@ -352,19 +344,14 @@
+DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return)
+DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return)
+DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return)
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+DEFINEFUNC(ASN1_TIME *, X509_get_notAfter, X509 *x, x, return 0, return)
-+DEFINEFUNC(ASN1_TIME *, X509_get_notBefore, X509 *x, x, return 0, return)
-+#else
+DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *x, x, return 0, return)
+DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *x, x, return 0, return)
-+#endif
-+DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, BIGNUM **p, p, BIGNUM **q, q, BIGNUM **g, g, return, return)
++DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, return)
+#endif
#ifdef Q_OS_SYMBIAN
#define RESOLVEFUNC(func, ordinal, lib) \
-@@ -580,7 +634,11 @@
+@@ -580,7 +641,11 @@
static volatile bool symbolsResolved = false;
static volatile bool triedToResolveSymbols = false;
#ifndef QT_NO_THREAD
@@ -376,7 +363,7 @@
#endif
if (symbolsResolved)
return true;
-@@ -614,9 +672,11 @@
+@@ -614,9 +679,11 @@
RESOLVEFUNC(BIO_write, 269, libs.second )
RESOLVEFUNC(BN_num_bits, 387, libs.second )
RESOLVEFUNC(CRYPTO_free, 469, libs.second )
@@ -388,7 +375,7 @@
RESOLVEFUNC(DSA_free, 594, libs.second )
RESOLVEFUNC(ERR_error_string, 744, libs.second )
RESOLVEFUNC(ERR_get_error, 749, libs.second )
-@@ -674,8 +734,10 @@
+@@ -674,8 +741,10 @@
RESOLVEFUNC(SSL_get_peer_cert_chain, 117, libs.first )
RESOLVEFUNC(SSL_get_peer_certificate, 118, libs.first )
RESOLVEFUNC(SSL_get_verify_result, 132, libs.first )
@@ -399,7 +386,7 @@
RESOLVEFUNC(SSL_new, 140, libs.first )
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
RESOLVEFUNC(SSL_ctrl, 95, libs.first )
-@@ -747,9 +809,11 @@
+@@ -747,9 +816,11 @@
RESOLVEFUNC(BIO_write)
RESOLVEFUNC(BN_num_bits)
RESOLVEFUNC(CRYPTO_free)
@@ -411,7 +398,7 @@
RESOLVEFUNC(DSA_free)
RESOLVEFUNC(ERR_error_string)
RESOLVEFUNC(ERR_get_error)
-@@ -779,10 +843,17 @@
+@@ -779,10 +850,17 @@
RESOLVEFUNC(RAND_seed)
RESOLVEFUNC(RAND_status)
RESOLVEFUNC(RSA_free)
@@ -429,7 +416,7 @@
RESOLVEFUNC(SSL_CIPHER_description)
RESOLVEFUNC(SSL_CTX_check_private_key)
RESOLVEFUNC(SSL_CTX_ctrl)
-@@ -797,6 +868,7 @@
+@@ -797,6 +875,7 @@
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
@@ -437,7 +424,7 @@
RESOLVEFUNC(SSL_accept)
RESOLVEFUNC(SSL_clear)
RESOLVEFUNC(SSL_connect)
-@@ -807,8 +879,12 @@
+@@ -807,8 +886,12 @@
RESOLVEFUNC(SSL_get_peer_cert_chain)
RESOLVEFUNC(SSL_get_peer_certificate)
RESOLVEFUNC(SSL_get_verify_result)
@@ -450,7 +437,7 @@
RESOLVEFUNC(SSL_new)
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
RESOLVEFUNC(SSL_ctrl)
-@@ -819,17 +895,47 @@
+@@ -819,17 +902,47 @@
RESOLVEFUNC(SSL_set_connect_state)
RESOLVEFUNC(SSL_shutdown)
RESOLVEFUNC(SSL_write)
@@ -498,7 +485,7 @@
RESOLVEFUNC(TLSv1_server_method)
RESOLVEFUNC(X509_NAME_entry_count)
RESOLVEFUNC(X509_NAME_get_entry)
-@@ -846,7 +952,11 @@
+@@ -846,7 +959,11 @@
RESOLVEFUNC(X509_STORE_CTX_get_error)
RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
@@ -510,7 +497,7 @@
RESOLVEFUNC(X509_cmp)
#ifndef SSLEAY_MACROS
RESOLVEFUNC(X509_dup)
-@@ -867,10 +977,18 @@
+@@ -867,10 +984,18 @@
RESOLVEFUNC(d2i_DSAPrivateKey)
RESOLVEFUNC(d2i_RSAPrivateKey)
#endif
@@ -529,118 +516,179 @@
#endif // Q_OS_SYMBIAN
symbolsResolved = true;
delete libs.first;
---- ./src/network/ssl/qsslsocket_openssl_p.h.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslsocket_openssl_p.h 2018-05-06 14:40:01.249000361 -0500
-@@ -84,6 +84,10 @@
- #include <openssl/tls1.h>
- #endif
-
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+#define OPENSSL_NO_SSL2
+diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h
+--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h 2015-05-07 16:14:44.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-01-05 17:59:42.041550255 +0100
+@@ -207,16 +207,31 @@
+ int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b);
+ long q_BIO_ctrl(BIO *a, int b, long c, void *d);
+ int q_BIO_free(BIO *a);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BIO *q_BIO_new(BIO_METHOD *a);
++#else
++BIO *q_BIO_new(const BIO_METHOD *a);
+#endif
-+
+ BIO *q_BIO_new_mem_buf(void *a, int b);
+ int q_BIO_read(BIO *a, void *b, int c);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BIO_METHOD *q_BIO_s_mem();
++#else
++const BIO_METHOD *q_BIO_s_mem();
++#endif
+ int q_BIO_write(BIO *a, const void *b, int c);
+ int q_BN_num_bits(const BIGNUM *a);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ int q_CRYPTO_num_locks();
+ void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
+ void q_CRYPTO_set_id_callback(unsigned long (*a)());
+ void q_CRYPTO_free(void *a);
++#else
++#define q_CRYPTO_num_locks() 1
++#define q_CRYPTO_set_locking_callback(a)
++#define q_CRYPTO_set_id_callback(a)
++void q_CRYPTO_free(void *a, const char *b, int c);
++#endif
+ void q_DSA_free(DSA *a);
+ #if OPENSSL_VERSION_NUMBER >= 0x00908000L
+ // 0.9.8 broke SC and BC by changing this function's signature.
+@@ -258,6 +273,7 @@
+ void q_RAND_seed(const void *a, int b);
+ int q_RAND_status();
+ void q_RSA_free(RSA *a);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ int q_sk_num(STACK *a);
+ void q_sk_pop_free(STACK *a, void (*b)(void *));
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
- typedef _STACK STACK;
+@@ -267,6 +283,16 @@
+ void q_sk_free(STACK *a);
+ char * q_sk_value(STACK *a, int b);
+ #endif
++#else
++int q_OPENSSL_sk_num(STACK *a);
++void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *));
++void q_OPENSSL_sk_free(_STACK *a);
++void * q_OPENSSL_sk_value(STACK *a, int b);
++#define q_sk_num q_OPENSSL_sk_num
++#define q_sk_pop_free q_OPENSSL_sk_pop_free
++#define q_sk_free q_OPENSSL_sk_free
++#define q_sk_value q_OPENSSL_sk_value
++#endif
+ int q_SSL_accept(SSL *a);
+ int q_SSL_clear(SSL *a);
+ char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c);
+@@ -314,8 +340,14 @@
+ #else
+ long q_SSL_get_verify_result(SSL *a);
#endif
---- ./src/network/ssl/qsslsocket_openssl.cpp.orig 2015-05-07 09:14:44.000000000 -0500
-+++ ./src/network/ssl/qsslsocket_openssl.cpp 2018-05-06 14:40:01.247000361 -0500
-@@ -93,6 +93,7 @@
- bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
- bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
-
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- /* \internal
-
- From OpenSSL's thread(3) manual page:
-@@ -174,6 +175,8 @@
- }
- } // extern "C"
-
-+#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L
-+
- QSslSocketBackendPrivate::QSslSocketBackendPrivate()
- : ssl(0),
- ctx(0),
-@@ -222,9 +225,12 @@
- ciph.d->encryptionMethod = descriptionList.at(4).mid(4);
- ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export"));
-
+ int q_SSL_library_init();
+ void q_SSL_load_error_strings();
++#else
++int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
++#define q_SSL_library_init() q_OPENSSL_init_ssl(0, (const OPENSSL_INIT_SETTINGS *) NULL)
++#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, (const OPENSSL_INIT_SETTINGS *) NULL)
++#endif
+ SSL *q_SSL_new(SSL_CTX *a);
+ #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
+ long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg);
+@@ -328,11 +360,21 @@
+ #if OPENSSL_VERSION_NUMBER >= 0x10000000L
+ const SSL_METHOD *q_SSLv2_client_method();
+ const SSL_METHOD *q_SSLv3_client_method();
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ciph.d->bits = cipher->strength_bits;
- ciph.d->supportedBits = cipher->alg_bits;
--
+ const SSL_METHOD *q_SSLv23_client_method();
+#else
-+ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits);
++const SSL_METHOD *q_TLS_client_method();
++#define q_SSLv23_client_method q_TLS_client_method
+#endif
- }
- return ciph;
- }
-@@ -363,7 +369,7 @@
- //
- // See also: QSslContext::fromConfiguration()
- if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) {
-- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle());
-+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle());
- }
- }
-
-@@ -500,8 +506,10 @@
- */
- void QSslSocketPrivate::deinitialize()
- {
+ const SSL_METHOD *q_TLSv1_client_method();
+ const SSL_METHOD *q_SSLv2_server_method();
+ const SSL_METHOD *q_SSLv3_server_method();
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- q_CRYPTO_set_id_callback(0);
- q_CRYPTO_set_locking_callback(0);
+ const SSL_METHOD *q_SSLv23_server_method();
++#else
++const SSL_METHOD *q_TLS_server_method();
++#define q_SSLv23_server_method q_TLS_server_method
+#endif
- }
-
- /*!
-@@ -522,13 +530,17 @@
- return false;
-
- // Check if the library itself needs to be initialized.
+ const SSL_METHOD *q_TLSv1_server_method();
+ #else
+ SSL_METHOD *q_SSLv2_client_method();
+@@ -377,7 +419,12 @@
+ int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
+ int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
+ X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- QMutexLocker locker(openssl_locks()->initLock());
+ STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
++#else
++STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
++#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain
+#endif
- if (!s_libraryLoaded) {
- s_libraryLoaded = true;
- // Initialize OpenSSL.
+ #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
+ #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
+@@ -399,7 +446,25 @@
+ PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
+ bp,(char *)x,enc,kstr,klen,cb,u)
+ #endif
++
++X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx);
++ASN1_INTEGER * q_X509_get_serialNumber(X509 *x);
++
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- q_CRYPTO_set_id_callback(id_function);
- q_CRYPTO_set_locking_callback(locking_function);
+ #define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
++#define q_X509_get_version(x) X509_get_version(x)
++#else
++int q_EVP_PKEY_id(const EVP_PKEY *pkey);
++int q_EVP_PKEY_base_id(const EVP_PKEY *pkey);
++int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
++long q_SSL_CTX_set_options(SSL_CTX *ctx, long options);
++long q_X509_get_version(X509 *x);
++X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x);
++int q_RSA_bits(const RSA *rsa);
++int q_DSA_security_bits(const DSA *dsa);
++void q_DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+#endif
- if (q_SSL_library_init() != 1)
- return false;
- q_SSL_load_error_strings();
-@@ -567,7 +579,9 @@
-
- void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
- {
-- QMutexLocker locker(openssl_locks()->initLock());
++
+ #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
+ #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
+ #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st))
+@@ -410,8 +475,17 @@
+ #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i))
+ #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \
+ q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
++
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+ QMutexLocker locker(openssl_locks()->initLock());
+ #define q_X509_get_notAfter(x) X509_get_notAfter(x)
+ #define q_X509_get_notBefore(x) X509_get_notBefore(x)
++#else
++ASN1_TIME *q_X509_getm_notAfter(X509 *x);
++ASN1_TIME *q_X509_getm_notBefore(X509 *x);
++#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x)
++#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x)
+#endif
- if (s_loadedCiphersAndCerts)
- return;
- s_loadedCiphersAndCerts = true;
-@@ -659,13 +673,18 @@
- STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl);
- for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
- if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) {
-- if (cipher->valid) {
+
+ #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
+ (char *)(rsa))
+ #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
+@@ -421,10 +495,21 @@
+ #else
+ #define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf()
+ #endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+ if (cipher->valid) {
+ void q_OPENSSL_add_all_algorithms_noconf();
+ void q_OPENSSL_add_all_algorithms_conf();
++#else
++int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
++#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, (const OPENSSL_INIT_SETTINGS *) NULL)
++# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, (const OPENSSL_INIT_SETTINGS *) NULL)
+#endif
- QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher);
- if (!ciph.isNull()) {
- if (!ciph.name().toLower().startsWith(QLatin1String("adh")))
- ciphers << ciph;
- }
+ int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- }
+ long q_SSLeay();
++#else
++unsigned long q_OpenSSL_version_num();
++#define q_SSLeay q_OpenSSL_version_num
+#endif
- }
- }
+ // Helper function
+ class QDateTime;
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch
new file mode 100644
index 000000000..836dc13a4
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch
@@ -0,0 +1,40 @@
+--- a/src/corelib/global/qglobal.h
++++ b/src/corelib/global/qglobal.h
+@@ -2482,22 +2482,32 @@ typedef uint Flags;
+
+ #endif /* Q_NO_TYPESAFE_FLAGS */
+
+-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT)
++#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT))
+ /* make use of typeof-extension */
+ template <typename T>
+ class QForeachContainer {
+ public:
+- inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
++ inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { }
+ const T c;
+ int brk;
+ typename T::const_iterator i, e;
++ int control;
+ };
+
++// Explanation of the control word:
++// - it's initialized to 1
++// - that means both the inner and outer loops start
++// - if there were no breaks, at the end of the inner loop, it's set to 0, which
++// causes it to exit (the inner loop is run exactly once)
++// - at the end of the outer loop, it's inverted, so it becomes 1 again, allowing
++// the outer loop to continue executing
++// - if there was a break inside the inner loop, it will exit with control still
++// set to 1; in that case, the outer loop will invert it to 0 and will exit too
+ #define Q_FOREACH(variable, container) \
+ for (QForeachContainer<__typeof__(container)> _container_(container); \
+- !_container_.brk && _container_.i != _container_.e; \
+- __extension__ ({ ++_container_.brk; ++_container_.i; })) \
+- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
++ _container_.control && _container_.i != _container_.e; \
++ ++_container_.i, _container_.control ^= 1) \
++ for (variable = *_container_.i; _container_.control; _container_.control = 0)
+
+ #else
+
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
new file mode 100644
index 000000000..f1a5a12e1
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
@@ -0,0 +1,12 @@
+diff -up qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix
+--- qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS 2015-05-07 09:14:42.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix 2018-02-15 08:25:13.168838577 -0600
+@@ -3,7 +3,7 @@ BUILD_PATH = @BUILD_PATH@
+ QTOBJS = @QMAKE_QTOBJS@
+ QTSRCS = @QMAKE_QTSRCS@
+ QMAKESPEC = @QMAKESPEC@
+-LFLAGS = @QMAKE_LFLAGS@
++LFLAGS = @QMAKE_LFLAGS@ $(QMAKE_LFLAGS_RELEASE)
+
+ #qmake code
+ OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \
diff --git a/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch b/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch
new file mode 100644
index 000000000..71e30c4f9
--- /dev/null
+++ b/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch
@@ -0,0 +1,17 @@
+--- src/gui/kernel/qguiplatformplugin.cpp.adwaita 2015-02-12 14:32:45.217935391 +0100
++++ src/gui/kernel/qguiplatformplugin.cpp 2015-02-12 14:46:11.471866038 +0100
+@@ -165,8 +165,13 @@ QString QGuiPlatformPlugin::styleName()
+ case DE_GNOME: {
+ QStringList availableStyles = QStyleFactory::keys();
+ // Set QGtkStyle for GNOME if available
++ QString adwaitaStyleKey = QString::fromLatin1("adwaita");
+ QString gtkStyleKey = QString::fromLatin1("GTK+");
+- if (availableStyles.contains(gtkStyleKey)) {
++ if (availableStyles.contains(adwaitaStyleKey)) {
++ stylename = adwaitaStyleKey;
++ break;
++ }
++ else if (availableStyles.contains(gtkStyleKey)) {
+ stylename = gtkStyleKey;
+ break;
+ }
diff --git a/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch b/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch
new file mode 100644
index 000000000..e5ab4bad9
--- /dev/null
+++ b/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch
@@ -0,0 +1,50 @@
+diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h
+--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h 2009-02-25 22:09:21.000000000 +0100
++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h 2009-04-01 17:54:21.000000000 +0200
+@@ -115,8 +115,8 @@
+ asm volatile("lock\n"
+ "incl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+@@ -127,8 +127,8 @@
+ asm volatile("lock\n"
+ "decl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h
+--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h 2009-02-25 22:09:21.000000000 +0100
++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h 2009-04-01 17:54:32.000000000 +0200
+@@ -116,8 +116,8 @@
+ asm volatile("lock\n"
+ "incl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+@@ -128,8 +128,8 @@
+ asm volatile("lock\n"
+ "decl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
diff --git a/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch b/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
new file mode 100644
index 000000000..4ab3ea4b1
--- /dev/null
+++ b/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
@@ -0,0 +1,12 @@
+diff -up qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp
+--- qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter 2009-04-21 18:57:41.000000000 -0500
++++ qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp 2009-04-24 11:17:49.562695405 -0500
+@@ -72,7 +72,7 @@
+ #include FT_CONFIG_OPTIONS_H
+ #endif
+
+-#if defined(FT_LCD_FILTER_H) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
++#if defined(FT_LCD_FILTER_H)
+ #define QT_USE_FREETYPE_LCDFILTER
+ #endif
+
diff --git a/source/l/qt/qt-nowebkit.SlackBuild b/source/l/qt/qt-nowebkit.SlackBuild
index 6ce37fad4..c2c92f7d9 100755
--- a/source/l/qt/qt-nowebkit.SlackBuild
+++ b/source/l/qt/qt-nowebkit.SlackBuild
@@ -43,7 +43,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=qt
VERSION=$(ls qt-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
-BUILD=${BUILD:-12}
+BUILD=${BUILD:-13}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
@@ -116,54 +116,54 @@ if [ $ARCH = "i486" -o $ARCH = "i586" ]; then
sed -i -e "s/QMAKE_CFLAGS_RELEASE += -O2/QMAKE_CFLAGS_RELEASE += $SLKCFLAGS/" mkspecs/common/gcc-base.conf || exit 1
fi
-# Fix path to mysql header
-zcat $CWD/qt.mysql.h.diff.gz | patch -p1 --verbose || exit 1
-
-# Stupid idea - remove it:
-zcat $CWD/qt.webkit-no_Werror.patch.gz | patch -p1 --verbose || exit 1
-
-# Fix crash on malformed GIF images (CVE-2014-0190):
-zcat $CWD/qt.fix.broken.gif.crash.diff.gz | patch -p1 --verbose || exit 1
-
-# Implement qsystemtrayicon support for Qt4 applications in Plasma 5:
-zcat $CWD/qt.qsystemtrayicon-plugin-system.diff.gz | patch -p1 --verbose || exit 1
-
-# Apply LibreOffice fixes (QTBUG-37380, QTBUG-34614, QTBUG-38585),
-# Native KDE4 file pickers will be disabled at runtime otherwise.
-zcat $CWD/qt.glib-honor-ExcludeSocketNotifiers-flag.diff.gz | patch -p1 --verbose || exit 1
-zcat $CWD/qt.qclipboard_fix_recursive.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/qt.qclipboard_delay.patch.gz | patch -p1 --verbose || exit 1
-
-# Fix for moc with glibc-2.25+:
-zcat $CWD/qt.QTBUG-22829.diff.gz | patch -p1 --verbose || exit 1
-
-# Another macro definition workaround with newer libraries:
-zcat $CWD/qt.QT_VERSION_CHECK.diff.gz | patch -p1 --verbose || exit 1
-
-# Fix build with gcc 6 or gcc 7:
-zcat $CWD/qt.gcc6.diff.gz | patch -p1 --verbose || exit 1
-
-# Fix test with ALSA 1.1.x:
-zcat $CWD/qt.alsa-1.1.diff.gz | patch -p1 --verbose || exit 1
-
-# Fix QTreeView crash:
-zcat $CWD/qt.qtreeview.crash.diff.gz | patch -p1 --verbose || exit 1
-
-# Increase entity limit:
-zcat $CWD/qt.QTBUG-35459.diff.gz | patch -p1 --verbose || exit 1
-
-# Don't emit a misleading icu4c debug error:
-zcat $CWD/qt.icu4c.nodebug.diff.gz | patch -p1 --verbose || exit 1
-
-## Fix building with icu4c >= 59
-#zcat $CWD/qt.icu59.patch.gz | patch -p1 --verbose || exit 1
-
-# The header files for icu59+ require C++11, so compile only the source file
-# that uses them with that C++ standard:
-zcat $CWD/qt.icu59.c++11.diff.gz | patch -p1 --verbose || exit 1
-
-# Support OpenSSL 1.1.x:
-zcat $CWD/qt4.openssl-1.1.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-cupsEnumDests.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-prefer_adwaita_on_gnome.patch.gz | patch -p0 --verbose || exit 1
+#zcat $CWD/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.6.2-cups.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-s390.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-4.8-poll.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch.gz | patch -p0 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch.gz | patch -p0 --verbose || exit 1
+#zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-aarch64.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch.gz | patch -p1 --verbose || exit 1
# All other distros I checked build with -no-webkit. But this has the downside of
# breaking the build when QtWebKit is present on the build system and some things
diff --git a/source/l/qt/qt.alsa-1.1.diff b/source/l/qt/qt.alsa-1.1.diff
deleted file mode 100644
index aaa15cb77..000000000
--- a/source/l/qt/qt.alsa-1.1.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp
---- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100
-+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100
-@@ -40,7 +40,7 @@
- ****************************************************************************/
-
- #include <alsa/asoundlib.h>
--#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10))
-+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10)))
- #error "Alsa version found too old, require >= 1.0.10"
- #endif
-
diff --git a/source/l/qt/qt.fix.broken.gif.crash.diff b/source/l/qt/qt.fix.broken.gif.crash.diff
deleted file mode 100644
index 7f74d71f1..000000000
--- a/source/l/qt/qt.fix.broken.gif.crash.diff
+++ /dev/null
@@ -1,16 +0,0 @@
---- ./src/gui/image/qgifhandler.cpp.orig 2014-04-10 13:37:12.000000000 -0500
-+++ ./src/gui/image/qgifhandler.cpp 2014-04-25 13:42:48.468692269 -0500
-@@ -358,6 +358,13 @@
- bits = image->bits();
- memset(bits, 0, image->byteCount());
- }
-+
-+ // Check if the previous attempt to create the image failed. If it
-+ // did then the image is broken and we should give up.
-+ if (image->isNull()) {
-+ state = Error;
-+ return -1;
-+ }
-
- disposePrevious(image);
- disposed = false;
diff --git a/source/l/qt/qt.icu59.patch b/source/l/qt/qt.icu59.patch
deleted file mode 100644
index ed6a8b52b..000000000
--- a/source/l/qt/qt.icu59.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- qt-everywhere-opensource-src-4.8.7/src/corelib/tools/qlocale_icu.cpp~ 2017-04-25 07:42:22.000000000 +0000
-+++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/qlocale_icu.cpp 2017-04-25 07:44:34.675363008 +0000
-@@ -43,6 +43,8 @@
- #include "qlibrary.h"
- #include "qdebug.h"
-
-+#define UCHAR_TYPE unsigned short
-+
- #include "unicode/uversion.h"
- #include "unicode/ucol.h"
-
diff --git a/source/l/qt/qt.mysql.h.diff b/source/l/qt/qt.mysql.h.diff
deleted file mode 100644
index 7a41be591..000000000
--- a/source/l/qt/qt.mysql.h.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur qt-x11-opensource-src-4.3.4.orig/src/sql/drivers/mysql/qsql_mysql.h qt-x11-opensource-src-4.3.4/src/sql/drivers/mysql/qsql_mysql.h
---- qt-x11-opensource-src-4.3.4.orig/src/sql/drivers/mysql/qsql_mysql.h 2008-04-02 20:52:11.739343004 -0500
-+++ qt-x11-opensource-src-4.3.4/src/sql/drivers/mysql/qsql_mysql.h 2008-04-02 20:52:05.970610574 -0500
-@@ -51,7 +51,7 @@
- #include <QtCore/qt_windows.h>
- #endif
-
--#include <mysql.h>
-+#include <mysql/mysql.h>
-
- #ifdef QT_PLUGIN
- #define Q_EXPORT_SQLDRIVER_MYSQL
diff --git a/source/l/qt/qt.webkit-no_Werror.patch b/source/l/qt/qt.webkit-no_Werror.patch
deleted file mode 100644
index c8d730e46..000000000
--- a/source/l/qt/qt.webkit-no_Werror.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- qt-everywhere-opensource-src-4.8.4/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-12-02 15:59:44.891550783 +0100
-+++ qt-everywhere-opensource-src-4.8.4/src/3rdparty/webkit/Source/WebKit.pri 2012-12-02 16:52:47.384406539 +0100
-@@ -102,8 +102,6 @@
-
- # Treat warnings as errors on x86/Linux/GCC
- linux-g++* {
-- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
--
- greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) {
- if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) {
- # We need to deactivate those warnings because some names conflicts with upcoming c++0x types (e.g.nullptr).