| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If one of the included files in a precompiled header is touched,
changing only its mtime, clang will produce a fatal error when the
precompiled header is then used:
file 'foo.h' has been modified since the precompiled header 'foo.pch' was built
We need to take this into account when producing precompiled headers,
so that we don't pick out stale objects from the cache. This works
fine for direct mode, but in preprocess mode we don't have enough
information to decide if the object is still valid, so we skip the
cache entirely in that mode.
|
|
|
|
| |
The size is no longer part of this check.
|
|
|
|
|
|
|
|
|
|
|
| |
The whole code seems to be a thinko. For a hit, neither ctime
nor mtime should be greater than or equal to time_of_compilation.
The code only seems to work because time_of_compilation is 0
at this stage (i.e. has not been initialized).
While at it, I also introduce an optimization: when sizes do
not match, it's a good chance to bail out early; there is no
point in further hashing the file.
|
|
|
|
| |
manifest.c:264:46: runtime error: left shift of 72057594037927935 by 8 places cannot be represented in type 'long int'
|
| |
|
| |
|
|
|
|
| |
Bug found by Riley Avron.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Based on a patch by Mike Frysinger <vapier@gentoo.org>:
"Linux supports creating pid namespaces cheaply and running processes
inside of them. When you try to share a single cache among multiple such
runs, the fact that the code relies on pid numbers as globally unique
values quickly fails. Instead, switch to standard mkstemp to generate temp
files for us."
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* maint:
Fix clang build warning "shift count >= width of type"
Clean up stale files in internal tempdir once an hour
Add signal handler to clean up temporary files at unexpected program exit
Don't needlessly allocate empty counter_updates data in stats_flush()
Conflicts:
ccache.c
manifest.c
stats.c
|
| | |
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* maint:
manifest file_info fix
Clean up dead code flagged by cppcheck and clang-analyzer
Mark fatal() with __attribute__((noreturn)) to please clang-analyzer
Fix bug in common_dir_prefix_length
Conflicts:
ccache.h
test/test_util.c
util.c
|
| | |
|
| |
| |
| |
| |
| |
| | |
This makes manifest file names unique per manifest version, thus avoiding
ccache versions with different manifest versions overwriting each other's
manifests.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
If CCACHE_SLOPPINESS includes "file_stat_matches", ccache will consider
two files which match in name, size, mtime, and ctime to have the same
contents. This allows ccache to avoid reading the file, thus speeding
up cache hits.
|
|\ \
| |/
| |
| |
| |
| |
| |
| | |
* maint:
Rename static_assert macro to avoid clash with any preexisting static_assert
Conflicts:
manifest.c
|
| | |
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* master:
while (1) -> while (true)
Fixup after merge: Make directory creation failure fatal
Update NEWS
Also recognize -specs=file in addition to --specs=file
Revert GCC bug compatibility for -MTarg and -MQarg
Fix minor memory leaks
Correct log message when unify mode is enabled
Hash environment variables that affect the preprocessor output
Hash mtime or content of GCC plugins specified with -fplugin=
Use hash_compiler for explicit --specs= options as well
Refactor code into a hash_compiler function
Improve description on how to fix bad object files in the cache
Make failure to create files in cache fatal
Make failure to create cache directories fatal
Remove unused print_executed_command function
Handle non-writable CCACHE_DIR gracefully
Conflicts:
manifest.c
test/framework.c
|
| |\ \
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* maint:
Update NEWS
Also recognize -specs=file in addition to --specs=file
Revert GCC bug compatibility for -MTarg and -MQarg
Fix minor memory leaks
Correct log message when unify mode is enabled
Hash environment variables that affect the preprocessor output
Hash mtime or content of GCC plugins specified with -fplugin=
Use hash_compiler for explicit --specs= options as well
Refactor code into a hash_compiler function
Improve description on how to fix bad object files in the cache
Make failure to create files in cache fatal
Make failure to create cache directories fatal
Remove unused print_executed_command function
Handle non-writable CCACHE_DIR gracefully
Conflicts:
ccache.c
test.sh
test/test_argument_processing.c
|
| | | |
|
|/ / |
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
* maint:
Remove corrupt manifest files so that they won't block direct mode hits
Avoid creating empty file before creating new manifest file
Compensate for bug in gzputc in zlib 1.2.5
Conflicts:
manifest.c
|
| | |
|
| | |
|
| |
| |
| |
| | |
gzputc(f, -1) returns -1 (== EOF) in zlib 1.2.5 but should return 255.
|
| | |
|
| | |
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
* maint:
Fall back to preprocessor mode when seeing a non-regular include file
Properly close fd in manifest_get if gzdopen fails
Check for CRC errors after decompression
doc: Sort environment variables correctly
Minor doc string fixes
Fix NFS object corruption
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Since the rename-into-place idiom is already used, a race between two
processes will only result in one lost entry, which is not a big deal, and
it's also very unlikely.
|
| |
|
| |
|
| |
|
|
|
|
| |
Windows' rename() will not overwrite existing files.
|
| |
|