Hello community, here is the log from the commit of package ccache for openSUSE:Factory checked in at 2017-01-22 00:51:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ccache (Old) and /work/SRC/openSUSE:Factory/.ccache.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ccache" Changes: -------- --- /work/SRC/openSUSE:Factory/ccache/ccache.changes 2016-09-12 13:28:05.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ccache.new/ccache.changes 2017-01-22 00:51:27.085590960 +0100 @@ -1,0 +2,15 @@ +Thu Jan 19 21:41:05 UTC 2017 - a...@cryptomilk.org + +- Update to version 3.3.3 + * ccache now detects usage of .incbin assembler directives in + the source code and avoids caching such compilations. +- Changes for version 3.3.2: + * Fixed a regression in ccache 3.3 related to potentially bad + content of dependency files when compiling identical source + code but with different source paths. + * Fixed a regression in ccache 3.3.1: ccache could get confused + when using the compiler option -Wp, to pass multiple options + to the preprocessor, resulting in missing dependency files + from direct mode cache hits. + +------------------------------------------------------------------- Old: ---- ccache-3.3.1.tar.xz ccache-3.3.1.tar.xz.asc New: ---- ccache-3.3.3.tar.xz ccache-3.3.3.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ccache.spec ++++++ --- /var/tmp/diff_new_pack.Vdfxvx/_old 2017-01-22 00:51:27.641512216 +0100 +++ /var/tmp/diff_new_pack.Vdfxvx/_new 2017-01-22 00:51:27.641512216 +0100 @@ -1,7 +1,7 @@ # # spec file for package ccache # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: ccache -Version: 3.3.1 +Version: 3.3.3 Release: 0 Summary: A Fast C/C++ Compiler Cache License: GPL-3.0+ ++++++ ccache-3.3.1.tar.xz -> ccache-3.3.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/AUTHORS.html new/ccache-3.3.3/AUTHORS.html --- old/ccache-3.3.1/AUTHORS.html 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/AUTHORS.html 2016-10-26 23:31:19.000000000 +0200 @@ -734,7 +734,7 @@ <body class="article"> <div id="header"> <h1>ccache authors</h1> -<span id="revnumber">version 3.3+5_g3df7836_dirty</span> +<span id="revnumber">version 3.3.3</span> <div id="toc"> <div id="toctitle">Table of Contents</div> <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> @@ -1065,9 +1065,9 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Version 3.3+5_g3df7836_dirty<br /> +Version 3.3.3<br /> Last updated - 2016-09-07 21:00:33 CEST + 2016-10-26 23:04:27 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/LICENSE.html new/ccache-3.3.3/LICENSE.html --- old/ccache-3.3.1/LICENSE.html 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/LICENSE.html 2016-10-26 23:31:19.000000000 +0200 @@ -734,7 +734,7 @@ <body class="article"> <div id="header"> <h1>ccache copyright and license</h1> -<span id="revnumber">version 3.3+5_g3df7836_dirty</span> +<span id="revnumber">version 3.3.3</span> <div id="toc"> <div id="toctitle">Table of Contents</div> <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> @@ -1205,9 +1205,9 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Version 3.3+5_g3df7836_dirty<br /> +Version 3.3.3<br /> Last updated - 2016-09-07 21:00:33 CEST + 2016-10-26 23:04:27 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/MANUAL.html new/ccache-3.3.3/MANUAL.html --- old/ccache-3.3.1/MANUAL.html 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/MANUAL.html 2016-10-26 23:31:19.000000000 +0200 @@ -734,7 +734,7 @@ <body class="article"> <div id="header"> <h1>CCACHE(1)</h1> -<span id="revnumber">version 3.3+5_g3df7836_dirty</span> +<span id="revnumber">version 3.3.3</span> <div id="toc"> <div id="toctitle">Table of Contents</div> <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> @@ -2021,16 +2021,6 @@ <div class="ulist"><ul> <li> <p> -ccache doesn’t handle the GNU Assembler’s <strong>.incbin</strong> directive correctly. This - directive can be embedded in the source code inside an <strong><em>asm</em></strong> statement in - order to include a file verbatim in the object file. If the included file is - modified, ccache doesn’t pick up the change since the inclusion isn’t done by - the preprocessor. A workaround of this problem is to set - <strong>extra_files_to_hash</strong> to the path of the included file. -</p> -</li> -<li> -<p> The direct mode fails to pick up new header files in some rare scenarios. See <a href="#_the_direct_mode">THE DIRECT MODE</a> above. </p> @@ -2232,9 +2222,9 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Version 3.3+5_g3df7836_dirty<br /> +Version 3.3.3<br /> Last updated - 2016-09-07 21:00:33 CEST + 2016-10-26 23:21:34 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/MANUAL.txt new/ccache-3.3.3/MANUAL.txt --- old/ccache-3.3.1/MANUAL.txt 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/MANUAL.txt 2016-10-26 23:31:19.000000000 +0200 @@ -800,13 +800,6 @@ Caveats ------- -* ccache doesn't handle the GNU Assembler's *.incbin* directive correctly. This - directive can be embedded in the source code inside an *__asm__* statement in - order to include a file verbatim in the object file. If the included file is - modified, ccache doesn't pick up the change since the inclusion isn't done by - the preprocessor. A workaround of this problem is to set - *extra_files_to_hash* to the path of the included file. - * The direct mode fails to pick up new header files in some rare scenarios. See <<_the_direct_mode,THE DIRECT MODE>> above. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/NEWS.html new/ccache-3.3.3/NEWS.html --- old/ccache-3.3.1/NEWS.html 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/NEWS.html 2016-10-26 23:31:19.000000000 +0200 @@ -734,7 +734,7 @@ <body class="article"> <div id="header"> <h1>ccache news</h1> -<span id="revnumber">version 3.3.1</span> +<span id="revnumber">version 3.3.3</span> <div id="toc"> <div id="toctitle">Table of Contents</div> <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> @@ -742,11 +742,53 @@ </div> <div id="content"> <div class="sect1"> +<h2 id="_ccache_3_3_3">ccache 3.3.3</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Release date: 2016-10-26</p></div> +<div class="sect2"> +<h3 id="_bug_fixes">Bug fixes</h3> +<div class="ulist"><ul> +<li> +<p> +ccache now detects usage of <code>.incbin</code> assembler directives in the source code + and avoids caching such compilations. +</p> +</li> +</ul></div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_ccache_3_3_2">ccache 3.3.2</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Release date: 2016-09-28</p></div> +<div class="sect2"> +<h3 id="_bug_fixes_2">Bug fixes</h3> +<div class="ulist"><ul> +<li> +<p> +Fixed a regression in ccache 3.3 related to potentially bad content of + dependency files when compiling identical source code but with different + source paths. +</p> +</li> +<li> +<p> +Fixed a regression in ccache 3.3.1: ccache could get confused when using the + compiler option <code>-Wp,</code> to pass multiple options to the preprocessor, + resulting in missing dependency files from direct mode cache hits. +</p> +</li> +</ul></div> +</div> +</div> +</div> +<div class="sect1"> <h2 id="_ccache_3_3_1">ccache 3.3.1</h2> <div class="sectionbody"> <div class="paragraph"><p>Release date: 2016-09-07</p></div> <div class="sect2"> -<h3 id="_bug_fixes">Bug fixes</h3> +<h3 id="_bug_fixes_3">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -928,7 +970,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_2">Bug fixes</h3> +<h3 id="_bug_fixes_4">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -950,11 +992,29 @@ </div> </div> <div class="sect1"> +<h2 id="_ccache_3_2_9">ccache 3.2.9</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Release date: 2016-09-28</p></div> +<div class="sect2"> +<h3 id="_bug_fixes_5">Bug fixes</h3> +<div class="ulist"><ul> +<li> +<p> +Fixed a regression in ccache 3.2.8: ccache could get confused when using the + compiler option <code>-Wp,</code> to pass multiple options to the preprocessor, + resulting in missing dependency files from direct mode cache hits. +</p> +</li> +</ul></div> +</div> +</div> +</div> +<div class="sect1"> <h2 id="_ccache_3_2_8">ccache 3.2.8</h2> <div class="sectionbody"> <div class="paragraph"><p>Release date: 2016-09-07</p></div> <div class="sect2"> -<h3 id="_bug_fixes_3">Bug fixes</h3> +<h3 id="_bug_fixes_6">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -978,7 +1038,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2016-07-20</p></div> <div class="sect2"> -<h3 id="_bug_fixes_4">Bug fixes</h3> +<h3 id="_bug_fixes_7">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1001,7 +1061,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2016-07-12</p></div> <div class="sect2"> -<h3 id="_bug_fixes_5">Bug fixes</h3> +<h3 id="_bug_fixes_8">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1051,7 +1111,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_6">Bug fixes</h3> +<h3 id="_bug_fixes_9">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1111,7 +1171,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2015-10-08</p></div> <div class="sect2"> -<h3 id="_bug_fixes_7">Bug fixes</h3> +<h3 id="_bug_fixes_10">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1166,7 +1226,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_8">Bug fixes</h3> +<h3 id="_bug_fixes_11">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1220,7 +1280,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_9">Bug fixes</h3> +<h3 id="_bug_fixes_12">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1291,7 +1351,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2014-12-10</p></div> <div class="sect2"> -<h3 id="_bug_fixes_10">Bug fixes</h3> +<h3 id="_bug_fixes_13">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1523,7 +1583,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_11">Bug fixes</h3> +<h3 id="_bug_fixes_14">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1554,7 +1614,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2016-07-12</p></div> <div class="sect2"> -<h3 id="_bug_fixes_12">Bug fixes</h3> +<h3 id="_bug_fixes_15">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1572,7 +1632,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2015-03-07</p></div> <div class="sect2"> -<h3 id="_bug_fixes_13">Bug fixes</h3> +<h3 id="_bug_fixes_16">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1655,7 +1715,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_14">Bug fixes</h3> +<h3 id="_bug_fixes_17">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1695,7 +1755,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2013-01-06</p></div> <div class="sect2"> -<h3 id="_bug_fixes_15">Bug fixes</h3> +<h3 id="_bug_fixes_18">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1766,7 +1826,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_16">Bug fixes</h3> +<h3 id="_bug_fixes_19">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1814,7 +1874,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2012-01-08</p></div> <div class="sect2"> -<h3 id="_bug_fixes_17">Bug fixes</h3> +<h3 id="_bug_fixes_20">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1897,7 +1957,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_18">Bug fixes</h3> +<h3 id="_bug_fixes_21">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1950,7 +2010,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_19">Bug fixes</h3> +<h3 id="_bug_fixes_22">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -1983,7 +2043,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2011-01-09</p></div> <div class="sect2"> -<h3 id="_bug_fixes_20">Bug fixes</h3> +<h3 id="_bug_fixes_23">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2016,7 +2076,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2010-11-28</p></div> <div class="sect2"> -<h3 id="_bug_fixes_21">Bug fixes</h3> +<h3 id="_bug_fixes_24">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2043,7 +2103,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2010-11-21</p></div> <div class="sect2"> -<h3 id="_bug_fixes_22">Bug fixes</h3> +<h3 id="_bug_fixes_25">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2091,7 +2151,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2010-11-07</p></div> <div class="sect2"> -<h3 id="_bug_fixes_23">Bug fixes</h3> +<h3 id="_bug_fixes_26">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2213,7 +2273,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_24">Bug fixes</h3> +<h3 id="_bug_fixes_27">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2299,7 +2359,7 @@ <div class="sectionbody"> <div class="paragraph"><p>Release date: 2010-07-15</p></div> <div class="sect2"> -<h3 id="_bug_fixes_25">Bug fixes</h3> +<h3 id="_bug_fixes_28">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2488,7 +2548,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_bug_fixes_26">Bug fixes</h3> +<h3 id="_bug_fixes_29">Bug fixes</h3> <div class="ulist"><ul> <li> <p> @@ -2633,9 +2693,9 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Version 3.3.1<br /> +Version 3.3.3<br /> Last updated - 2016-09-07 21:19:19 CEST + 2016-10-26 23:30:56 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/NEWS.txt new/ccache-3.3.3/NEWS.txt --- old/ccache-3.3.1/NEWS.txt 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/NEWS.txt 2016-10-26 23:31:19.000000000 +0200 @@ -1,6 +1,33 @@ ccache news =========== +ccache 3.3.3 +------------ +Release date: 2016-10-26 + +Bug fixes +~~~~~~~~~ + +- ccache now detects usage of `.incbin` assembler directives in the source code + and avoids caching such compilations. + + +ccache 3.3.2 +------------ +Release date: 2016-09-28 + +Bug fixes +~~~~~~~~~ + +- Fixed a regression in ccache 3.3 related to potentially bad content of + dependency files when compiling identical source code but with different + source paths. + +- Fixed a regression in ccache 3.3.1: ccache could get confused when using the + compiler option `-Wp,` to pass multiple options to the preprocessor, + resulting in missing dependency files from direct mode cache hits. + + ccache 3.3.1 ------------ Release date: 2016-09-07 @@ -111,6 +138,18 @@ - Fixed build and test for MinGW32 and Windows. +ccache 3.2.9 +------------ +Release date: 2016-09-28 + +Bug fixes +~~~~~~~~~ + +- Fixed a regression in ccache 3.2.8: ccache could get confused when using the + compiler option `-Wp,` to pass multiple options to the preprocessor, + resulting in missing dependency files from direct mode cache hits. + + ccache 3.2.8 ------------ Release date: 2016-09-07 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/ccache.1 new/ccache-3.3.3/ccache.1 --- old/ccache-3.3.1/ccache.1 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/ccache.1 2016-10-26 23:31:19.000000000 +0200 @@ -1,13 +1,13 @@ '\" t .\" Title: ccache .\" Author: [see the "Author" section] -.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 09/07/2016 +.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/> +.\" Date: 10/26/2016 .\" Manual: ccache Manual -.\" Source: ccache 3.3.1 +.\" Source: ccache 3.3.3 .\" Language: English .\" -.TH "CCACHE" "1" "09/07/2016" "ccache 3\&.3\&.1" "ccache Manual" +.TH "CCACHE" "1" "10/26/2016" "ccache 3\&.3\&.3" "ccache Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -1297,23 +1297,6 @@ .sp .RS 4 .ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -ccache doesn\(cqt handle the GNU Assembler\(cqs -\fB\&.incbin\fR -directive correctly\&. This directive can be embedded in the source code inside an -\fB\fIasm\fR\fR -statement in order to include a file verbatim in the object file\&. If the included file is modified, ccache doesn\(cqt pick up the change since the inclusion isn\(cqt done by the preprocessor\&. A workaround of this problem is to set -\fBextra_files_to_hash\fR -to the path of the included file\&. -.RE -.sp -.RS 4 -.ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/ccache.c new/ccache-3.3.3/ccache.c --- old/ccache-3.3.1/ccache.c 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/ccache.c 2016-10-26 23:31:19.000000000 +0200 @@ -815,6 +815,15 @@ inc_path = make_relative_path(inc_path); remember_include_file(inc_path, hash, system); p = q; + } else if (q[0] == '.' && q[1] == 'i' && q[2] == 'n' && q[3] == 'c' + && q[4] == 'b' && q[5] == 'i' && q[6] == 'n') { + // An assembler .incbin statement (which could be part of inline + // assembly) refers to an external file. If the file changes, the hash + // should change as well, but finding out what file to hash is too hard + // for ccache, so just bail out. + cc_log("Found unsupported .incbin directive in source code"); + stats_update(STATS_UNSUPPORTED_DIRECTIVE); + failed(); } else { q++; } @@ -1536,6 +1545,13 @@ } } + // Possibly hash input file location to avoid false positive cache hits since + // the dependency file includes the source file path. + if (generating_dependencies) { + hash_delimiter(hash, "inputfile"); + hash_string(hash, input_file); + } + // Possibly hash the coverage data file path. if (generating_coverage && profile_arcs) { char *dir = dirname(output_obj); @@ -2129,7 +2145,7 @@ if (str_eq(argv[i], "-optf") || str_eq(argv[i], "--options-file")) { if (i > argc) { cc_log("Expected argument after -optf/--options-file"); - stats_update(STATS_UNSUPPORTED); + stats_update(STATS_UNSUPPORTED_OPTION); result = false; goto out; } @@ -2169,7 +2185,7 @@ // These are always too hard. if (compopt_too_hard(argv[i]) || str_startswith(argv[i], "-fdump-")) { cc_log("Compiler option %s is unsupported", argv[i]); - stats_update(STATS_UNSUPPORTED); + stats_update(STATS_UNSUPPORTED_OPTION); result = false; goto out; } @@ -2183,7 +2199,7 @@ // -Xarch_* options are too hard. if (str_startswith(argv[i], "-Xarch_")) { cc_log("Unsupported compiler option :%s", argv[i]); - stats_update(STATS_UNSUPPORTED); + stats_update(STATS_UNSUPPORTED_OPTION); result = false; goto out; } @@ -2193,7 +2209,7 @@ if (arch_args_size == MAX_ARCH_ARGS - 1) { cc_log("Too many -arch compiler options; ccache supports at most %d", MAX_ARCH_ARGS); - stats_update(STATS_UNSUPPORTED); + stats_update(STATS_UNSUPPORTED_OPTION); result = false; goto out; } @@ -2415,7 +2431,7 @@ // file from compiling the preprocessed file will not be equal to the // object file produced when compiling without ccache. cc_log("Too hard option -Wp,-P detected"); - stats_update(STATS_UNSUPPORTED); + stats_update(STATS_UNSUPPORTED_OPTION); failed(); } else if (str_startswith(argv[i], "-Wp,-MD,") && !strchr(argv[i] + 8, ',')) { @@ -2438,8 +2454,15 @@ // Treat it like -D. args_add(cpp_args, argv[i] + 4); continue; - } else if (str_startswith(argv[i], "-Wp,-M")) { - // -MF, -MP, -MQ, -MT, etc. TODO: Make argument to MF/MQ/MT relative. + } else if (str_eq(argv[i], "-Wp,-MP") + || (strlen(argv[i]) > 8 + && str_startswith(argv[i], "-Wp,-M") + && argv[i][7] == ',' + && (argv[i][6] == 'F' + || argv[i][6] == 'Q' + || argv[i][6] == 'T') + && !strchr(argv[i] + 8, ','))) { + // TODO: Make argument to MF/MQ/MT relative. args_add(dep_args, argv[i]); continue; } else if (conf->direct_mode) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/ccache.h new/ccache-3.3.3/ccache.h --- old/ccache-3.3.1/ccache.h 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/ccache.h 2016-10-26 23:31:19.000000000 +0200 @@ -42,7 +42,7 @@ STATS_NOINPUT = 17, STATS_MULTIPLE = 18, STATS_CONFTEST = 19, - STATS_UNSUPPORTED = 20, + STATS_UNSUPPORTED_OPTION = 20, STATS_OUTSTDOUT = 21, STATS_CACHEHIT_DIR = 22, STATS_NOOUTPUT = 23, @@ -52,6 +52,7 @@ STATS_CANTUSEPCH = 27, STATS_PREPROCESSING = 28, STATS_NUMCLEANUPS = 29, + STATS_UNSUPPORTED_DIRECTIVE = 30, STATS_END }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/configure new/ccache-3.3.3/configure --- old/ccache-3.3.1/configure 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/configure 2016-10-26 23:31:19.000000000 +0200 @@ -666,6 +666,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -737,6 +738,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' @@ -989,6 +991,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1126,7 +1137,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1279,6 +1290,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/stats.c new/ccache-3.3.3/stats.c --- old/ccache-3.3.1/stats.c 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/stats.c 2016-10-26 23:31:19.000000000 +0200 @@ -50,40 +50,192 @@ void (*fn)(uint64_t); unsigned flags; } stats_info[] = { - { STATS_CACHEHIT_DIR, "cache hit (direct) ", NULL, FLAG_ALWAYS }, - { STATS_CACHEHIT_CPP, "cache hit (preprocessed) ", NULL, FLAG_ALWAYS }, - { STATS_TOCACHE, "cache miss ", NULL, FLAG_ALWAYS }, - { STATS_LINK, "called for link ", NULL, 0 }, - { STATS_PREPROCESSING, "called for preprocessing ", NULL, 0 }, - { STATS_MULTIPLE, "multiple source files ", NULL, 0 }, - { STATS_STDOUT, "compiler produced stdout ", NULL, 0 }, - { STATS_NOOUTPUT, "compiler produced no output ", NULL, 0 }, - { STATS_EMPTYOUTPUT, "compiler produced empty output ", NULL, 0 }, - { STATS_STATUS, "compile failed ", NULL, 0 }, - { STATS_ERROR, "ccache internal error ", NULL, 0 }, - { STATS_PREPROCESSOR, "preprocessor error ", NULL, 0 }, - { STATS_CANTUSEPCH, "can't use precompiled header ", NULL, 0 }, - { STATS_COMPILER, "couldn't find the compiler ", NULL, 0 }, - { STATS_MISSING, "cache file missing ", NULL, 0 }, - { STATS_ARGS, "bad compiler arguments ", NULL, 0 }, - { STATS_SOURCELANG, "unsupported source language ", NULL, 0 }, - { STATS_COMPCHECK, "compiler check failed ", NULL, 0 }, - { STATS_CONFTEST, "autoconf compile/link ", NULL, 0 }, - { STATS_UNSUPPORTED, "unsupported compiler option ", NULL, 0 }, - { STATS_OUTSTDOUT, "output to stdout ", NULL, 0 }, - { STATS_DEVICE, "output to a non-regular file ", NULL, 0 }, - { STATS_NOINPUT, "no input file ", NULL, 0 }, - { STATS_BADEXTRAFILE, "error hashing extra file ", NULL, 0 }, - { STATS_NUMCLEANUPS, "cleanups performed ", NULL, FLAG_ALWAYS }, - { STATS_NUMFILES, "files in cache ", NULL, - FLAG_NOZERO|FLAG_ALWAYS }, - { STATS_TOTALSIZE, "cache size ", - display_size_times_1024, FLAG_NOZERO|FLAG_ALWAYS }, - { STATS_OBSOLETE_MAXFILES, "OBSOLETE", NULL, - FLAG_NOZERO|FLAG_NEVER}, - { STATS_OBSOLETE_MAXSIZE, "OBSOLETE", NULL, - FLAG_NOZERO|FLAG_NEVER}, - { STATS_NONE, NULL, NULL, 0 } + { + STATS_CACHEHIT_DIR, + "cache hit (direct)", + NULL, + FLAG_ALWAYS + }, + { + STATS_CACHEHIT_CPP, + "cache hit (preprocessed)", + NULL, + FLAG_ALWAYS + }, + { + STATS_TOCACHE, + "cache miss", + NULL, + FLAG_ALWAYS + }, + { + STATS_LINK, + "called for link", + NULL, + 0 + }, + { + STATS_PREPROCESSING, + "called for preprocessing", + NULL, + 0 + }, + { + STATS_MULTIPLE, + "multiple source files", + NULL, + 0 + }, + { + STATS_STDOUT, + "compiler produced stdout", + NULL, + 0 + }, + { + STATS_NOOUTPUT, + "compiler produced no output", + NULL, + 0 + }, + { + STATS_EMPTYOUTPUT, + "compiler produced empty output", + NULL, + 0 + }, + { + STATS_STATUS, + "compile failed", + NULL, + 0 + }, + { + STATS_ERROR, + "ccache internal error", + NULL, + 0 + }, + { + STATS_PREPROCESSOR, + "preprocessor error", + NULL, + 0 + }, + { + STATS_CANTUSEPCH, + "can't use precompiled header", + NULL, + 0 + }, + { + STATS_COMPILER, + "couldn't find the compiler", + NULL, + 0 + }, + { + STATS_MISSING, + "cache file missing", + NULL, + 0 + }, + { + STATS_ARGS, + "bad compiler arguments", + NULL, + 0 + }, + { + STATS_SOURCELANG, + "unsupported source language", + NULL, + 0 + }, + { + STATS_COMPCHECK, + "compiler check failed", + NULL, + 0 + }, + { + STATS_CONFTEST, + "autoconf compile/link", + NULL, + 0 + }, + { + STATS_UNSUPPORTED_OPTION, + "unsupported compiler option", + NULL, + 0 + }, + { + STATS_UNSUPPORTED_DIRECTIVE, + "unsupported code directive", + NULL, + 0 + }, + { + STATS_OUTSTDOUT, + "output to stdout", + NULL, + 0 + }, + { + STATS_DEVICE, + "output to a non-regular file", + NULL, + 0 + }, + { + STATS_NOINPUT, + "no input file", + NULL, + 0 + }, + { + STATS_BADEXTRAFILE, + "error hashing extra file", + NULL, + 0 + }, + { + STATS_NUMCLEANUPS, + "cleanups performed", + NULL, + FLAG_ALWAYS + }, + { + STATS_NUMFILES, + "files in cache", + NULL, + FLAG_NOZERO|FLAG_ALWAYS + }, + { + STATS_TOTALSIZE, + "cache size", + display_size_times_1024, + FLAG_NOZERO|FLAG_ALWAYS + }, + { + STATS_OBSOLETE_MAXFILES, + "OBSOLETE", + NULL, + FLAG_NOZERO|FLAG_NEVER + }, + { + STATS_OBSOLETE_MAXSIZE, + "OBSOLETE", + NULL, + FLAG_NOZERO|FLAG_NEVER + }, + { + STATS_NONE, + NULL, + NULL, + 0 + } }; static void @@ -297,7 +449,7 @@ continue; } - printf("%s ", stats_info[i].message); + printf("%-31s ", stats_info[i].message); if (stats_info[i].fn) { stats_info[i].fn(counters->data[stat]); printf("\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/test/test_argument_processing.c new/ccache-3.3.3/test/test_argument_processing.c --- old/ccache-3.3.1/test/test_argument_processing.c 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/test/test_argument_processing.c 2016-10-26 23:31:19.000000000 +0200 @@ -81,7 +81,7 @@ create_file("foo.c", ""); CHECK(!cc_process_args(orig, &preprocessed, &compiler)); - CHECK_INT_EQ(1, stats_get_pending(STATS_UNSUPPORTED)); + CHECK_INT_EQ(1, stats_get_pending(STATS_UNSUPPORTED_OPTION)); args_free(orig); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/test.sh new/ccache-3.3.3/test.sh --- old/ccache-3.3.1/test.sh 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/test.sh 2016-10-26 23:31:19.000000000 +0200 @@ -976,6 +976,20 @@ expect_stat 'unsupported compiler option' 1 # ------------------------------------------------------------------------- + TEST "-MMD for different source files" + + mkdir a b + touch a/source.c b/source.c + $CCACHE_COMPILE -MMD -c a/source.c + expect_file_content source.d "source.o: a/source.c" + + $CCACHE_COMPILE -MMD -c b/source.c + expect_file_content source.d "source.o: b/source.c" + + $CCACHE_COMPILE -MMD -c a/source.c + expect_file_content source.d "source.o: a/source.c" + + # ------------------------------------------------------------------------- TEST "-Wp,-P" # Check that -Wp,-P disables ccache. (-P removes preprocessor information @@ -1087,6 +1101,18 @@ if [ "$(./c)" != OK ]; then test_failed "Incorrect header file used" fi + + # ------------------------------------------------------------------------- + TEST ".incbin" + + cat <<EOF >incbin.c +char x[] = ".incbin"; +EOF + + $CCACHE_COMPILE -c incbin.c + expect_stat 'cache hit (preprocessed)' 0 + expect_stat 'cache miss' 0 + expect_stat 'unsupported code directive' 1 } # ============================================================================= @@ -1600,15 +1626,33 @@ # ccache could try to parse and make sense of -Wp, with multiple arguments, # but it currently doesn't, so we have to disable direct mode. - $CCACHE_COMPILE -c -Wp,-DFOO,-DGOO test.c 2>/dev/null + touch source.c + + $CCACHE_COMPILE -c -Wp,-MMD,source.d,-MT,source.o source.c 2>/dev/null expect_stat 'cache hit (direct)' 0 expect_stat 'cache hit (preprocessed)' 0 expect_stat 'cache miss' 1 + expect_file_content source.d "source.o: source.c" - $CCACHE_COMPILE -c -Wp,-DFOO,-DGOO test.c 2>/dev/null + $CCACHE_COMPILE -c -Wp,-MMD,source.d,-MT,source.o source.c 2>/dev/null expect_stat 'cache hit (direct)' 0 expect_stat 'cache hit (preprocessed)' 1 expect_stat 'cache miss' 1 + expect_file_content source.d "source.o: source.c" + + # ------------------------------------------------------------------------- + TEST "-MMD for different source files" + + mkdir a b + touch a/source.c b/source.c + $CCACHE_COMPILE -MMD -c a/source.c + expect_file_content source.d "source.o: a/source.c" + + $CCACHE_COMPILE -MMD -c b/source.c + expect_file_content source.d "source.o: b/source.c" + + $CCACHE_COMPILE -MMD -c a/source.c + expect_file_content source.d "source.o: a/source.c" # ------------------------------------------------------------------------- TEST "Multiple object entries in manifest" @@ -3380,11 +3424,11 @@ input_charset " -compiler_location=$(which $COMPILER) +compiler_location=$(which $(echo "$COMPILER" | awk '{print $1}')) if [ "$compiler_location" = "$COMPILER" ]; then echo "Compiler: $COMPILER" else - echo "Compiler: $COMPILER ($(which $COMPILER))" + echo "Compiler: $COMPILER ($compiler_location)" fi echo "Compiler version: $($COMPILER --version | head -n 1)" echo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccache-3.3.1/version.c new/ccache-3.3.3/version.c --- old/ccache-3.3.1/version.c 2016-09-07 21:22:01.000000000 +0200 +++ new/ccache-3.3.3/version.c 2016-10-26 23:31:19.000000000 +0200 @@ -1 +1 @@ -const char CCACHE_VERSION[] = "3.3.1"; +const char CCACHE_VERSION[] = "3.3.3";