diff options
Diffstat (limited to 'source')
66 files changed, 3363 insertions, 2240 deletions
diff --git a/source/d/gcc/gcc.SlackBuild b/source/d/gcc/gcc.SlackBuild index d7443e81..6f93f767 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 1870b6ef..00000000 --- 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 9ffb77a8..00000000 --- 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 043df146..00000000 --- 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 0c73f538..00000000 --- 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 6f8175c8..00000000 --- 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 0ee1c6b0..00000000 --- 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 e124f7c2..00000000 --- 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 2b75e3f1..00000000 --- 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 5a011fdb..419a0d59 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 22b55993..c103a2cf 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 e3b4982c..2afe26d3 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 00000000..aed363c6 --- /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 00000000..cbe815de --- /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 00000000..7d59f22e --- /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 00000000..e0305e11 --- /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 00000000..d4e5924d --- /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 00000000..4279ce2e --- /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 00000000..6fedcc81 --- /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 00000000..5c8b5a1d --- /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 947f7582..947f7582 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 00000000..e84446ce --- /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 00000000..74583146 --- /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 00000000..f0a41a42 --- /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 9c53f3c2..9c53f3c2 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 00000000..86dcc288 --- /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 00000000..dd3a5a02 --- /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 00000000..0494c81f --- /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 00000000..81d74ff4 --- /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 00000000..018872f6 --- /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 dede8324..5ca91145 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 00000000..ee1d1913 --- /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 00000000..fc0ee767 --- /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 00000000..9a9f7735 --- /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 00000000..6a87783e --- /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 00000000..2deeb51b --- /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 00000000..d04d1be5 --- /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 00000000..1ea8af2b --- /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 b6f5525d..b6f5525d 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 d9fe24b7..6d3bf2f2 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 6949bbfe..6949bbfe 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 dcdf51c0..22643e8d 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 00000000..5098c082 --- /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 00000000..63a74629 --- /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 2466a16b..60749d38 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 9bce98ff..9bce98ff 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 00000000..572a955d --- /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 00000000..eeed1b97 --- /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 00000000..456abceb --- /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 aaf1c497..42129293 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 00000000..7e79d217 --- /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 3edcdef0..3edcdef0 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 00000000..7e480138 --- /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 00000000..6456f2c6 --- /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 607613e5..6a994603 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 00000000..836dc13a --- /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 00000000..f1a5a12e --- /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 00000000..71e30c4f --- /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 00000000..e5ab4bad --- /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 00000000..4ab3ea4b --- /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 6ce37fad..c2c92f7d 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 aaa15cb7..00000000 --- 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 7f74d71f..00000000 --- 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 ed6a8b52..00000000 --- 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 7a41be59..00000000 --- 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 c8d730e4..00000000 --- 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). |