mirror of
https://github.com/gperftools/gperftools
synced 2025-01-02 20:52:03 +00:00
untangle a number of unittests from libtcmalloc_minimal.so
This commit is contained in:
parent
cad457ad23
commit
8a147b4833
151
Makefile.am
151
Makefile.am
@ -149,6 +149,23 @@ WINDOWS_EXTRA = src/windows/preamble_patcher_test.cc \
|
||||
|
||||
### Unittests
|
||||
|
||||
# Note, we skip this test on mingw (and windows in general). It uses
|
||||
# unsetenv, which is not available on win32.
|
||||
if !MINGW
|
||||
TESTS += unique_path_unittest
|
||||
unique_path_unittest_SOURCES = src/tests/unique_path_unittest.cc
|
||||
unique_path_unittest_LDFLAGS = $(PTHREAD_CFLAGS) $(AM_LDFLAGS)
|
||||
unique_path_unittest_LDADD = libcommon.la
|
||||
endif !MINGW
|
||||
|
||||
TESTS += generic_writer_test
|
||||
generic_writer_test_SOURCES = src/tests/generic_writer_test.cc
|
||||
generic_writer_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += proc_maps_iterator_test
|
||||
proc_maps_iterator_test_SOURCES = src/tests/proc_maps_iterator_test.cc
|
||||
proc_maps_iterator_test_LDADD = libcommon.la
|
||||
|
||||
if WITH_HEAP_PROFILER_OR_CHECKER
|
||||
TESTS += low_level_alloc_unittest
|
||||
low_level_alloc_unittest_SOURCES = src/base/low_level_alloc.cc \
|
||||
@ -256,7 +273,70 @@ libtcmalloc_minimal_la_CXXFLAGS = -DNO_TCMALLOC_SAMPLES \
|
||||
libtcmalloc_minimal_la_LDFLAGS = -version-info @TCMALLOC_SO_VERSION@ $(AM_LDFLAGS)
|
||||
libtcmalloc_minimal_la_LIBADD = libcommon.la
|
||||
|
||||
### Unittests
|
||||
### ------- unit tests for various internal modules of tcmalloc
|
||||
|
||||
TESTS += addressmap_unittest
|
||||
addressmap_unittest_SOURCES = src/tests/addressmap_unittest.cc
|
||||
addressmap_unittest_LDADD = libcommon.la
|
||||
|
||||
TESTS += packed_cache_test
|
||||
packed_cache_test_SOURCES = src/tests/packed-cache_test.cc
|
||||
packed_cache_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += safe_strerror_test
|
||||
safe_strerror_test_SOURCES = src/tests/safe_strerror_test.cc \
|
||||
src/safe_strerror.cc
|
||||
safe_strerror_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += pagemap_unittest
|
||||
pagemap_unittest_SOURCES = src/tests/pagemap_unittest.cc \
|
||||
src/internal_logging.cc
|
||||
pagemap_unittest_LDADD = libcommon.la
|
||||
|
||||
# note, it is not so great that page heap testing requires bringing
|
||||
# almost entirety of tcmalloc (short of tcmalloc.cc), but it is what
|
||||
# we have.
|
||||
TESTS += page_heap_test
|
||||
page_heap_test_SOURCES = src/tests/page_heap_test.cc \
|
||||
$(MINIMAL_MALLOC_SRC)
|
||||
page_heap_test_CXXFLAGS = -DNO_HEAP_CHECK -DNO_TCMALLOC_SAMPLES $(AM_CXXFLAGS)
|
||||
page_heap_test_LDADD = libcommon.la
|
||||
|
||||
# note, it is not so great that stack_trace_table testing requires
|
||||
# bringing almost entirety of tcmalloc (short of tcmalloc.cc), but it
|
||||
# is what we have.
|
||||
TESTS += stack_trace_table_test
|
||||
stack_trace_table_test_SOURCES = src/tests/stack_trace_table_test.cc \
|
||||
src/stack_trace_table.cc src/internal_logging.cc
|
||||
stack_trace_table_test_CXXFLAGS = -DSTACK_TRACE_TABLE_IS_TESTED $(AM_CXXFLAGS)
|
||||
stack_trace_table_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += malloc_hook_test
|
||||
malloc_hook_test_SOURCES = src/tests/malloc_hook_test.cc \
|
||||
src/tests/testutil.cc \
|
||||
src/malloc_hook.cc
|
||||
malloc_hook_test_CXXFLAGS = -DNO_TCMALLOC_SAMPLES $(AM_CXXFLAGS)
|
||||
malloc_hook_test_LDADD = libcommon.la
|
||||
|
||||
if WITH_HEAP_PROFILER_OR_CHECKER
|
||||
if !MINGW
|
||||
TESTS += mmap_hook_test
|
||||
mmap_hook_test_SOURCES = src/tests/mmap_hook_test.cc \
|
||||
src/mmap_hook.cc
|
||||
mmap_hook_test_LDADD = libcommon.la
|
||||
endif !MINGW
|
||||
endif WITH_HEAP_PROFILER_OR_CHECKER
|
||||
|
||||
# sampler_test and sampling_test both require sampling to be turned
|
||||
# on, which it's not by default. Use the "standard" value of 2^19.
|
||||
TESTS_ENVIRONMENT += TCMALLOC_SAMPLE_PARAMETER=524288
|
||||
|
||||
TESTS += sampler_test
|
||||
sampler_test_SOURCES = src/tests/sampler_test.cc \
|
||||
src/sampler.cc
|
||||
sampler_test_LDADD = libcommon.la
|
||||
|
||||
### Unittests for libtcmalloc_minimal.la
|
||||
|
||||
TESTS += tcmalloc_minimal_unittest
|
||||
tcmalloc_minimal_unittest_SOURCES = src/tests/tcmalloc_unittest.cc \
|
||||
@ -285,30 +365,13 @@ tcmalloc_minimal_large_heap_fragmentation_unittest_SOURCES = src/tests/large_hea
|
||||
tcmalloc_minimal_large_heap_fragmentation_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
tcmalloc_minimal_large_heap_fragmentation_unittest_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
# These all tests components of tcmalloc_minimal
|
||||
|
||||
TESTS += addressmap_unittest
|
||||
addressmap_unittest_SOURCES = src/tests/addressmap_unittest.cc
|
||||
addressmap_unittest_LDADD = libcommon.la
|
||||
|
||||
if !MINGW
|
||||
TESTS += system_alloc_unittest
|
||||
system_alloc_unittest_SOURCES = src/tests/system-alloc_unittest.cc
|
||||
system_alloc_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
system_alloc_unittest_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
# Note, we skip this test on mingw (and windows in general). It uses
|
||||
# unsetenv, which is not available on win32.
|
||||
TESTS += unique_path_unittest
|
||||
unique_path_unittest_SOURCES = src/tests/unique_path_unittest.cc
|
||||
unique_path_unittest_LDFLAGS = $(PTHREAD_CFLAGS) $(AM_LDFLAGS)
|
||||
unique_path_unittest_LDADD = libcommon.la
|
||||
endif !MINGW
|
||||
|
||||
TESTS += packed_cache_test
|
||||
packed_cache_test_SOURCES = src/tests/packed-cache_test.cc
|
||||
packed_cache_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += frag_unittest
|
||||
frag_unittest_SOURCES = src/tests/frag_unittest.cc
|
||||
frag_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
@ -325,21 +388,6 @@ current_allocated_bytes_test_SOURCES = src/tests/current_allocated_bytes_test.cc
|
||||
current_allocated_bytes_test_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
current_allocated_bytes_test_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
TESTS += malloc_hook_test
|
||||
malloc_hook_test_SOURCES = src/tests/malloc_hook_test.cc \
|
||||
src/tests/testutil.cc
|
||||
malloc_hook_test_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
malloc_hook_test_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
if WITH_HEAP_PROFILER_OR_CHECKER
|
||||
if !MINGW
|
||||
TESTS += mmap_hook_test
|
||||
mmap_hook_test_SOURCES = src/tests/mmap_hook_test.cc \
|
||||
src/mmap_hook.cc
|
||||
mmap_hook_test_LDADD = libcommon.la
|
||||
endif !MINGW
|
||||
endif WITH_HEAP_PROFILER_OR_CHECKER
|
||||
|
||||
TESTS += malloc_extension_test
|
||||
malloc_extension_test_SOURCES = src/tests/malloc_extension_test.cc
|
||||
malloc_extension_test_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
@ -360,39 +408,11 @@ memalign_unittest_LDADD = libtcmalloc_minimal.la
|
||||
endif !OSX
|
||||
endif !MINGW
|
||||
|
||||
TESTS += page_heap_test
|
||||
page_heap_test_SOURCES = src/tests/page_heap_test.cc
|
||||
page_heap_test_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
page_heap_test_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
TESTS += pagemap_unittest
|
||||
pagemap_unittest_SOURCES = src/tests/pagemap_unittest.cc
|
||||
pagemap_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
pagemap_unittest_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
TESTS += safe_strerror_test
|
||||
safe_strerror_test_SOURCES = src/tests/safe_strerror_test.cc \
|
||||
src/safe_strerror.cc
|
||||
safe_strerror_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += generic_writer_test
|
||||
generic_writer_test_SOURCES = src/tests/generic_writer_test.cc
|
||||
generic_writer_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += proc_maps_iterator_test
|
||||
proc_maps_iterator_test_SOURCES = src/tests/proc_maps_iterator_test.cc
|
||||
proc_maps_iterator_test_LDADD = libcommon.la
|
||||
|
||||
TESTS += realloc_unittest
|
||||
realloc_unittest_SOURCES = src/tests/realloc_unittest.cc
|
||||
realloc_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
realloc_unittest_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
TESTS += stack_trace_table_test
|
||||
stack_trace_table_test_SOURCES = src/tests/stack_trace_table_test.cc
|
||||
stack_trace_table_test_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
stack_trace_table_test_LDADD = libtcmalloc_minimal.la
|
||||
|
||||
TESTS += thread_dealloc_unittest
|
||||
thread_dealloc_unittest_SOURCES = src/tests/thread_dealloc_unittest.cc \
|
||||
src/tests/testutil.cc
|
||||
@ -647,15 +667,6 @@ tcmalloc_large_heap_fragmentation_unittest_SOURCES = src/tests/large_heap_fragme
|
||||
tcmalloc_large_heap_fragmentation_unittest_LDFLAGS = $(TCMALLOC_FLAGS) $(AM_LDFLAGS)
|
||||
tcmalloc_large_heap_fragmentation_unittest_LDADD = libtcmalloc.la
|
||||
|
||||
# sampler_test and sampling_test both require sampling to be turned
|
||||
# on, which it's not by default. Use the "standard" value of 2^19.
|
||||
TESTS_ENVIRONMENT += TCMALLOC_SAMPLE_PARAMETER=524288
|
||||
|
||||
TESTS += sampler_test
|
||||
sampler_test_SOURCES = src/tests/sampler_test.cc \
|
||||
src/sampler.cc
|
||||
sampler_test_LDADD = libcommon.la
|
||||
|
||||
# These unittests often need to run binaries. They're in the current dir
|
||||
TESTS_ENVIRONMENT += BINDIR=.
|
||||
|
||||
|
@ -51,6 +51,8 @@
|
||||
#include <stddef.h> // for NULL, size_t
|
||||
#include <string.h> // for memset
|
||||
#include <stdint.h>
|
||||
|
||||
#include "base/basictypes.h"
|
||||
#include "internal_logging.h" // for ASSERT
|
||||
|
||||
// Single-level array
|
||||
|
@ -31,9 +31,10 @@
|
||||
// ---
|
||||
// Author: Andrew Fikes
|
||||
|
||||
#include <config.h>
|
||||
#include "config.h"
|
||||
|
||||
#include "stack_trace_table.h"
|
||||
#include <string.h> // for NULL, memset
|
||||
|
||||
#include "base/spinlock.h" // for SpinLockHolder
|
||||
#include "common.h" // for StackTrace
|
||||
#include "internal_logging.h" // for ASSERT, Log
|
||||
@ -42,24 +43,45 @@
|
||||
|
||||
namespace tcmalloc {
|
||||
|
||||
StackTraceTable::StackTraceTable()
|
||||
: error_(false),
|
||||
depth_total_(0),
|
||||
bucket_total_(0),
|
||||
head_(nullptr) {
|
||||
std::unique_ptr<void*[]> ProduceStackTracesDump(const StackTrace* (*next_fn)(const void** current_head),
|
||||
const void* head) {
|
||||
int depth_total = 0;
|
||||
int bucket_total = 0;
|
||||
for (const void* entry = head; entry != nullptr;) {
|
||||
const StackTrace* trace = next_fn(&entry);
|
||||
depth_total += trace->depth;
|
||||
bucket_total++;
|
||||
}
|
||||
|
||||
int out_len = bucket_total * 3 + depth_total + 1;
|
||||
std::unique_ptr<void*[]> out{new void*[out_len]};
|
||||
|
||||
int idx = 0;
|
||||
for (const void* entry = head; entry != nullptr;) {
|
||||
const StackTrace* trace = next_fn(&entry);
|
||||
out[idx++] = reinterpret_cast<void*>(uintptr_t{1}); // count
|
||||
out[idx++] = reinterpret_cast<void*>(trace->size); // cumulative size
|
||||
out[idx++] = reinterpret_cast<void*>(trace->depth);
|
||||
for (int d = 0; d < trace->depth; ++d) {
|
||||
out[idx++] = trace->stack[d];
|
||||
}
|
||||
}
|
||||
out[idx++] = nullptr;
|
||||
ASSERT(idx == out_len);
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
StackTraceTable::~StackTraceTable() {
|
||||
ASSERT(head_ == nullptr);
|
||||
}
|
||||
// In order to avoid dependencies we're only unit-testing function
|
||||
// above. Stuff below pulls too much and isn't worth own unit-test
|
||||
// (already covered by sampling_test).
|
||||
#ifndef STACK_TRACE_TABLE_IS_TESTED
|
||||
|
||||
void StackTraceTable::AddTrace(const StackTrace& t) {
|
||||
if (error_) {
|
||||
return;
|
||||
}
|
||||
|
||||
depth_total_ += t.depth;
|
||||
bucket_total_++;
|
||||
Entry* entry = allocator_.allocate(1);
|
||||
if (entry == nullptr) {
|
||||
Log(kLog, __FILE__, __LINE__,
|
||||
@ -73,40 +95,15 @@ void StackTraceTable::AddTrace(const StackTrace& t) {
|
||||
}
|
||||
|
||||
void** StackTraceTable::ReadStackTracesAndClear() {
|
||||
void** out = nullptr;
|
||||
|
||||
const int out_len = bucket_total_ * 3 + depth_total_ + 1;
|
||||
if (!error_) {
|
||||
// Allocate output array
|
||||
out = new (std::nothrow_t{}) void*[out_len];
|
||||
if (out == nullptr) {
|
||||
Log(kLog, __FILE__, __LINE__,
|
||||
"tcmalloc: allocation failed for stack traces",
|
||||
out_len * sizeof(*out));
|
||||
}
|
||||
}
|
||||
|
||||
if (out) {
|
||||
// Fill output array
|
||||
int idx = 0;
|
||||
Entry* entry = head_;
|
||||
while (entry != NULL) {
|
||||
out[idx++] = reinterpret_cast<void*>(uintptr_t{1}); // count
|
||||
out[idx++] = reinterpret_cast<void*>(entry->trace.size); // cumulative size
|
||||
out[idx++] = reinterpret_cast<void*>(entry->trace.depth);
|
||||
for (int d = 0; d < entry->trace.depth; ++d) {
|
||||
out[idx++] = entry->trace.stack[d];
|
||||
}
|
||||
entry = entry->next;
|
||||
}
|
||||
out[idx++] = NULL;
|
||||
ASSERT(idx == out_len);
|
||||
}
|
||||
std::unique_ptr<void*[]> out = ProduceStackTracesDump(
|
||||
+[] (const void** current_head) -> const StackTrace* {
|
||||
const Entry* head = static_cast<const Entry*>(*current_head);
|
||||
*current_head = head->next;
|
||||
return &head->trace;
|
||||
}, head_);
|
||||
|
||||
// Clear state
|
||||
error_ = false;
|
||||
depth_total_ = 0;
|
||||
bucket_total_ = 0;
|
||||
|
||||
SpinLockHolder h(Static::pageheap_lock());
|
||||
Entry* entry = head_;
|
||||
@ -117,7 +114,9 @@ void** StackTraceTable::ReadStackTracesAndClear() {
|
||||
}
|
||||
head_ = nullptr;
|
||||
|
||||
return out;
|
||||
return out.release();
|
||||
}
|
||||
|
||||
#endif // STACK_TRACE_TABLE_IS_TESTED
|
||||
|
||||
} // namespace tcmalloc
|
||||
|
@ -35,19 +35,33 @@
|
||||
|
||||
#ifndef TCMALLOC_STACK_TRACE_TABLE_H_
|
||||
#define TCMALLOC_STACK_TRACE_TABLE_H_
|
||||
#include "config.h"
|
||||
|
||||
#include <config.h>
|
||||
#include <stdint.h> // for uintptr_t
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "common.h"
|
||||
#include "internal_logging.h"
|
||||
#include "page_heap_allocator.h"
|
||||
|
||||
namespace tcmalloc {
|
||||
|
||||
class PERFTOOLS_DLL_DECL StackTraceTable {
|
||||
// Given snapshot of StackTrace list, new[] list of machine words and
|
||||
// fill that with profile. See
|
||||
// MallocExtension::GetStackTraces. next_fn and head are
|
||||
// representation of generalized iterator over that list. See uses to
|
||||
// learn how it works.
|
||||
std::unique_ptr<void*[]> ProduceStackTracesDump(const StackTrace* (*next_fn)(const void** updatable_head),
|
||||
const void* head);
|
||||
|
||||
class StackTraceTable {
|
||||
public:
|
||||
// REQUIRES: L < pageheap_lock
|
||||
StackTraceTable();
|
||||
~StackTraceTable();
|
||||
StackTraceTable() = default;
|
||||
~StackTraceTable() {
|
||||
ASSERT(head_ == nullptr);
|
||||
}
|
||||
|
||||
// Adds stack trace "t" to table.
|
||||
//
|
||||
@ -60,21 +74,14 @@ class PERFTOOLS_DLL_DECL StackTraceTable {
|
||||
// REQUIRES: L < pageheap_lock
|
||||
void** ReadStackTracesAndClear();
|
||||
|
||||
// Exposed for PageHeapAllocator
|
||||
// For testing
|
||||
int depth_total() const { return depth_total_; }
|
||||
int bucket_total() const { return bucket_total_; }
|
||||
|
||||
private:
|
||||
struct Entry {
|
||||
Entry* next;
|
||||
StackTrace trace;
|
||||
};
|
||||
|
||||
bool error_;
|
||||
int depth_total_;
|
||||
int bucket_total_;
|
||||
Entry* head_;
|
||||
bool error_{};
|
||||
Entry* head_{};
|
||||
STLPageHeapAllocator<Entry, void> allocator_;
|
||||
};
|
||||
|
||||
|
@ -515,53 +515,6 @@ static void PrintStats(int level) {
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
static void** DumpHeapGrowthStackTraces() {
|
||||
// Count how much space we need
|
||||
int needed_slots = 0;
|
||||
{
|
||||
SpinLockHolder h(Static::pageheap_lock());
|
||||
for (StackTrace* t = Static::growth_stacks();
|
||||
t != NULL;
|
||||
t = reinterpret_cast<StackTrace*>(
|
||||
t->stack[tcmalloc::kMaxStackDepth-1])) {
|
||||
needed_slots += 3 + t->depth;
|
||||
}
|
||||
needed_slots += 100; // Slop in case list grows
|
||||
needed_slots += needed_slots/8; // An extra 12.5% slop
|
||||
}
|
||||
|
||||
void** result = new void*[needed_slots];
|
||||
if (result == NULL) {
|
||||
Log(kLog, __FILE__, __LINE__,
|
||||
"tcmalloc: allocation failed for stack trace slots",
|
||||
needed_slots * sizeof(*result));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SpinLockHolder h(Static::pageheap_lock());
|
||||
int used_slots = 0;
|
||||
for (StackTrace* t = Static::growth_stacks();
|
||||
t != NULL;
|
||||
t = reinterpret_cast<StackTrace*>(
|
||||
t->stack[tcmalloc::kMaxStackDepth-1])) {
|
||||
ASSERT(used_slots < needed_slots); // Need to leave room for terminator
|
||||
if (used_slots + 3 + t->depth >= needed_slots) {
|
||||
// No more room
|
||||
break;
|
||||
}
|
||||
|
||||
result[used_slots+0] = reinterpret_cast<void*>(static_cast<uintptr_t>(1));
|
||||
result[used_slots+1] = reinterpret_cast<void*>(t->size);
|
||||
result[used_slots+2] = reinterpret_cast<void*>(t->depth);
|
||||
for (int d = 0; d < t->depth; d++) {
|
||||
result[used_slots+3+d] = t->stack[d];
|
||||
}
|
||||
used_slots += 3 + t->depth;
|
||||
}
|
||||
result[used_slots] = reinterpret_cast<void*>(static_cast<uintptr_t>(0));
|
||||
return result;
|
||||
}
|
||||
|
||||
static void IterateOverRanges(void* arg, MallocExtension::RangeFunction func) {
|
||||
PageID page = 1; // Some code may assume that page==0 is never used
|
||||
bool done = false;
|
||||
@ -648,7 +601,16 @@ class TCMallocImplementation : public MallocExtension {
|
||||
}
|
||||
|
||||
virtual void** ReadHeapGrowthStackTraces() {
|
||||
return DumpHeapGrowthStackTraces();
|
||||
// Note: growth stacks are append only, and updated atomically. So
|
||||
// we can just read them without any locks. And use arbitrarily long
|
||||
// (since they're never cleared/deleted).
|
||||
const StackTrace* head = Static::growth_stacks();
|
||||
return ProduceStackTracesDump(
|
||||
+[] (const void** current_head) {
|
||||
const StackTrace* current = static_cast<const StackTrace*>(*current_head);
|
||||
*current_head = current->stack[tcmalloc::kMaxStackDepth-1];
|
||||
return current;
|
||||
}, head).release();
|
||||
}
|
||||
|
||||
virtual size_t GetThreadCacheSize() {
|
||||
|
@ -33,23 +33,24 @@
|
||||
|
||||
#include "config_for_unittests.h"
|
||||
|
||||
#include <gperftools/malloc_hook.h>
|
||||
#include "malloc_hook-inl.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <condition_variable>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#include <gperftools/malloc_hook.h>
|
||||
#include "malloc_hook-inl.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/sysinfo.h"
|
||||
#include "base/threading.h"
|
||||
#include "tests/testutil.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
|
||||
namespace {
|
||||
|
||||
std::vector<void (*)()> g_testlist; // the tests to run
|
||||
@ -225,25 +226,22 @@ void MultithreadedTestThread(TestHookList* list, int shift,
|
||||
fprintf(stderr, "thread %d: %s\n", thread_num, message.c_str());
|
||||
}
|
||||
|
||||
static volatile int num_threads_remaining;
|
||||
static int num_threads_remaining;
|
||||
static TestHookList list{kTestValue};
|
||||
static std::mutex threadcount_lock;
|
||||
static std::condition_variable threadcount_ready;
|
||||
|
||||
void MultithreadedTestThreadRunner(int thread_num) {
|
||||
// Wait for all threads to start running.
|
||||
{
|
||||
std::lock_guard ml{threadcount_lock};
|
||||
std::unique_lock ml{threadcount_lock};
|
||||
|
||||
assert(num_threads_remaining > 0);
|
||||
--num_threads_remaining;
|
||||
|
||||
// We should use condvars and the like, but for this test, we'll
|
||||
// go simple and busy-wait.
|
||||
while (num_threads_remaining > 0) {
|
||||
threadcount_lock.unlock();
|
||||
std::this_thread::sleep_for(std::chrono::seconds(1));
|
||||
threadcount_lock.lock();
|
||||
}
|
||||
threadcount_ready.wait(ml, [&] () { return num_threads_remaining == 0; });
|
||||
// the last thread to decrement to 0 will wake everyone
|
||||
threadcount_ready.notify_all();
|
||||
}
|
||||
|
||||
// shift is the smallest number such that (1<<shift) > kHookListMaxValues
|
||||
|
@ -23,13 +23,16 @@ namespace {
|
||||
|
||||
// TODO: add testing from >1 min_span_size setting.
|
||||
|
||||
static bool HaveSystemRelease() {
|
||||
static bool retval = ([] () {
|
||||
bool HaveSystemRelease() {
|
||||
static bool have = ([] () {
|
||||
size_t actual;
|
||||
auto ptr = TCMalloc_SystemAlloc(kPageSize, &actual, 0);
|
||||
return TCMalloc_SystemRelease(ptr, actual);
|
||||
}());
|
||||
return retval;
|
||||
})();
|
||||
#if __linux__
|
||||
assert(have);
|
||||
#endif
|
||||
return have;
|
||||
}
|
||||
|
||||
static void CheckStats(const tcmalloc::PageHeap* ph,
|
||||
@ -207,16 +210,8 @@ static void TestPageHeap_Limit() {
|
||||
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int main() {
|
||||
TestPageHeap_Stats();
|
||||
TestPageHeap_Limit();
|
||||
printf("PASS\n");
|
||||
// on windows as part of library destructors we call getenv which
|
||||
// calls malloc which fails due to our exhausted heap limit. It then
|
||||
// causes fancy stack overflow because log message we're printing
|
||||
// for failed allocation somehow cause malloc calls too
|
||||
//
|
||||
// To keep us out of trouble we just drop malloc limit
|
||||
FLAGS_tcmalloc_heap_limit_mb = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -30,20 +30,18 @@
|
||||
|
||||
// ---
|
||||
// Author: Sanjay Ghemawat
|
||||
#undef NDEBUG
|
||||
|
||||
#include "config_for_unittests.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h> // to get intptr_t
|
||||
#include <sys/types.h>
|
||||
#include <vector>
|
||||
#include "base/logging.h"
|
||||
|
||||
#include "pagemap.h"
|
||||
|
||||
using std::vector;
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void Permute(vector<intptr_t>* elements) {
|
||||
#include <vector>
|
||||
|
||||
#include "base/logging.h"
|
||||
|
||||
static void Permute(std::vector<intptr_t>* elements) {
|
||||
if (elements->empty())
|
||||
return;
|
||||
const size_t num_elements = elements->size();
|
||||
@ -95,7 +93,7 @@ void TestMap(int limit, bool limit_is_below_the_overflow_boundary) {
|
||||
|
||||
{ // Test randomized accesses
|
||||
srand(301); // srand isn't great, but it's portable
|
||||
vector<intptr_t> elements;
|
||||
std::vector<intptr_t> elements;
|
||||
for (intptr_t i = 0; i < static_cast<intptr_t>(limit); i++) elements.push_back(i);
|
||||
Permute(&elements);
|
||||
|
||||
|
@ -7,43 +7,60 @@
|
||||
|
||||
|
||||
#include "config_for_unittests.h"
|
||||
#include <stdio.h> // for puts()
|
||||
|
||||
#include "stack_trace_table.h"
|
||||
|
||||
#include <stdio.h> // for puts()
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "base/spinlock.h"
|
||||
#include "static_vars.h"
|
||||
|
||||
#undef ARRAYSIZE // may be defined on, eg, windows
|
||||
#define ARRAYSIZE(a) ( sizeof(a) / sizeof(*(a)) )
|
||||
class StackTraceTableTestHelper {
|
||||
public:
|
||||
using StackTrace = tcmalloc::StackTrace;
|
||||
|
||||
static void CheckTracesAndReset(tcmalloc::StackTraceTable* table,
|
||||
const uintptr_t* expected, int len) {
|
||||
void** entries = table->ReadStackTracesAndClear();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
CHECK_EQ(reinterpret_cast<uintptr_t>(entries[i]), expected[i]);
|
||||
struct Entry {
|
||||
const StackTrace trace;
|
||||
std::unique_ptr<Entry> next{};
|
||||
Entry(const StackTrace& t) : trace(t) {}
|
||||
};
|
||||
using EntryPtr = std::unique_ptr<Entry>;
|
||||
|
||||
void AddTrace(const StackTrace& t) {
|
||||
EntryPtr e{new Entry{t}};
|
||||
head_.swap(e->next);
|
||||
head_.swap(e);
|
||||
}
|
||||
delete[] entries;
|
||||
}
|
||||
|
||||
static void AddTrace(tcmalloc::StackTraceTable* table,
|
||||
const tcmalloc::StackTrace& t) {
|
||||
// Normally we'd need this lock, but since the test is single-threaded
|
||||
// we don't. I comment it out on windows because the DLL-decl thing
|
||||
// is really annoying in this case.
|
||||
#ifndef _WIN32
|
||||
SpinLockHolder h(tcmalloc::Static::pageheap_lock());
|
||||
#endif
|
||||
table->AddTrace(t);
|
||||
}
|
||||
std::unique_ptr<void*[]> DumpTraces() {
|
||||
auto retval = ProduceStackTracesDump(
|
||||
+[] (const void** current_head) {
|
||||
const Entry* head = static_cast<const Entry*>(*current_head);
|
||||
*current_head = head->next.get();
|
||||
return &head->trace;
|
||||
}, head_.get());
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
tcmalloc::StackTraceTable table;
|
||||
head_.reset();
|
||||
return retval;
|
||||
}
|
||||
|
||||
void CheckTracesAndReset(const uintptr_t* expected, int len) {
|
||||
std::unique_ptr<void*[]> entries = DumpTraces();
|
||||
for (int i = 0; i < len; i++) {
|
||||
CHECK_EQ(reinterpret_cast<uintptr_t>(entries[i]), expected[i]);
|
||||
}
|
||||
}
|
||||
private:
|
||||
EntryPtr head_;
|
||||
};
|
||||
|
||||
int main() {
|
||||
StackTraceTableTestHelper h;
|
||||
|
||||
// Empty table
|
||||
CHECK_EQ(table.depth_total(), 0);
|
||||
CHECK_EQ(table.bucket_total(), 0);
|
||||
static const uintptr_t k1[] = {0};
|
||||
CheckTracesAndReset(&table, k1, ARRAYSIZE(k1));
|
||||
h.CheckTracesAndReset(k1, arraysize(k1));
|
||||
|
||||
tcmalloc::StackTrace t1;
|
||||
t1.size = static_cast<uintptr_t>(1024);
|
||||
@ -51,7 +68,6 @@ int main(int argc, char **argv) {
|
||||
t1.stack[0] = reinterpret_cast<void*>(1);
|
||||
t1.stack[1] = reinterpret_cast<void*>(2);
|
||||
|
||||
|
||||
tcmalloc::StackTrace t2;
|
||||
t2.size = static_cast<uintptr_t>(512);
|
||||
t2.depth = static_cast<uintptr_t>(2);
|
||||
@ -59,19 +75,15 @@ int main(int argc, char **argv) {
|
||||
t2.stack[1] = reinterpret_cast<void*>(1);
|
||||
|
||||
// Table w/ just t1
|
||||
AddTrace(&table, t1);
|
||||
CHECK_EQ(table.depth_total(), 2);
|
||||
CHECK_EQ(table.bucket_total(), 1);
|
||||
h.AddTrace(t1);
|
||||
static const uintptr_t k2[] = {1, 1024, 2, 1, 2, 0};
|
||||
CheckTracesAndReset(&table, k2, ARRAYSIZE(k2));
|
||||
h.CheckTracesAndReset(k2, arraysize(k2));
|
||||
|
||||
// Table w/ t1, t2
|
||||
AddTrace(&table, t1);
|
||||
AddTrace(&table, t2);
|
||||
CHECK_EQ(table.depth_total(), 4);
|
||||
CHECK_EQ(table.bucket_total(), 2);
|
||||
h.AddTrace(t1);
|
||||
h.AddTrace(t2);
|
||||
static const uintptr_t k3[] = {1, 512, 2, 2, 1, 1, 1024, 2, 1, 2, 0};
|
||||
CheckTracesAndReset(&table, k3, ARRAYSIZE(k3));
|
||||
h.CheckTracesAndReset(k3, arraysize(k3));
|
||||
|
||||
// Table w/ t1, t3
|
||||
// Same stack as t1, but w/ different size
|
||||
@ -81,13 +93,10 @@ int main(int argc, char **argv) {
|
||||
t3.stack[0] = reinterpret_cast<void*>(1);
|
||||
t3.stack[1] = reinterpret_cast<void*>(2);
|
||||
|
||||
AddTrace(&table, t1);
|
||||
AddTrace(&table, t3);
|
||||
CHECK_EQ(table.depth_total(), 4);
|
||||
CHECK_EQ(table.bucket_total(), 2);
|
||||
h.AddTrace(t1);
|
||||
h.AddTrace(t3);
|
||||
static const uintptr_t k5[] = {1, 2, 2, 1, 2, 1, 1024, 2, 1, 2, 0};
|
||||
CheckTracesAndReset(&table, k5, ARRAYSIZE(k5));
|
||||
h.CheckTracesAndReset(k5, arraysize(k5));
|
||||
|
||||
puts("PASS");
|
||||
return 0;
|
||||
}
|
||||
|
@ -118,31 +118,29 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -152,12 +150,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -172,7 +169,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -182,12 +179,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NO_TCMALLOC_SAMPLES;PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -202,7 +198,14 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\tests\malloc_hook_test.cc" />
|
||||
<ClCompile Include="..\..\src\malloc_hook.cc" />
|
||||
<ClCompile Include="..\..\src\tests\testutil.cc" />
|
||||
<ClCompile Include="..\..\src\internal_logging.cc" />
|
||||
<ClCompile Include="..\..\src\base\logging.cc" />
|
||||
<ClCompile Include="..\..\src\base\spinlock.cc" />
|
||||
<ClCompile Include="..\..\src\base\spinlock_internal.cc" />
|
||||
<ClCompile Include="..\..\src\base\sysinfo.cc" />
|
||||
<ClCompile Include="..\..\src\windows\port.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\base\logging.h" />
|
||||
@ -212,12 +215,6 @@
|
||||
<ClInclude Include="..\config.h" />
|
||||
<ClInclude Include="..\..\src\windows\port.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libtcmalloc_minimal\libtcmalloc_minimal.vcxproj">
|
||||
<Project>{55e2b3ae-3ca1-4db6-97f7-0a044d6f446f}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@ -14,9 +14,30 @@
|
||||
<ClCompile Include="..\..\src\tests\malloc_hook_test.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\malloc_hook.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\tests\testutil.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\internal_logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\spinlock.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\spinlock_internal.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\sysinfo.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\windows\port.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\gperftools\malloc_hook.h">
|
||||
|
@ -118,31 +118,29 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -152,12 +150,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -172,7 +169,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -182,12 +179,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -202,6 +198,9 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\tests\packed-cache_test.cc" />
|
||||
<ClCompile Include="..\..\src\internal_logging.cc" />
|
||||
<ClCompile Include="..\..\src\base\logging.cc" />
|
||||
<ClCompile Include="..\..\src\windows\port.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\base\basictypes.h" />
|
||||
@ -218,12 +217,6 @@
|
||||
<ClInclude Include="..\config.h" />
|
||||
<ClInclude Include="..\..\src\windows\port.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libtcmalloc_minimal\libtcmalloc_minimal.vcxproj">
|
||||
<Project>{55e2b3ae-3ca1-4db6-97f7-0a044d6f446f}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@ -14,6 +14,15 @@
|
||||
<ClCompile Include="..\..\src\tests\packed-cache_test.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\internal_logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\windows\port.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\config.h">
|
||||
|
@ -118,7 +118,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -129,7 +129,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -140,7 +140,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -154,7 +154,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -169,7 +169,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -183,7 +183,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
|
@ -118,7 +118,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -130,19 +130,18 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -152,12 +151,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -172,7 +170,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -182,12 +180,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -202,6 +199,9 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\tests\pagemap_unittest.cc" />
|
||||
<ClCompile Include="..\..\src\internal_logging.cc" />
|
||||
<ClCompile Include="..\..\src\base\logging.cc" />
|
||||
<ClCompile Include="..\..\src\windows\port.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\base\logging.h" />
|
||||
@ -210,12 +210,6 @@
|
||||
<ClInclude Include="..\config.h" />
|
||||
<ClInclude Include="..\..\src\windows\port.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libtcmalloc_minimal\libtcmalloc_minimal.vcxproj">
|
||||
<Project>{55e2b3ae-3ca1-4db6-97f7-0a044d6f446f}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@ -14,6 +14,15 @@
|
||||
<ClCompile Include="..\..\src\tests\pagemap_unittest.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\internal_logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\windows\port.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\pagemap.h">
|
||||
|
@ -179,7 +179,6 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
|
@ -118,31 +118,29 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -152,12 +150,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -172,7 +169,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
|
||||
@ -182,12 +179,11 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ForceSymbolReferences>__tcmalloc;%(ForceSymbolReferences)</ForceSymbolReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>PERFTOOLS_DLL_DECL=;STACK_TRACE_TABLE_IS_TESTED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -202,6 +198,10 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\src\tests\stack_trace_table_test.cc" />
|
||||
<ClCompile Include="..\..\src\stack_trace_table.cc" />
|
||||
<ClCompile Include="..\..\src\internal_logging.cc" />
|
||||
<ClCompile Include="..\..\src\base\logging.cc" />
|
||||
<ClCompile Include="..\..\src\windows\port.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\config_for_unittests.h" />
|
||||
@ -209,12 +209,6 @@
|
||||
<ClInclude Include="..\config.h" />
|
||||
<ClInclude Include="..\..\src\windows\port.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libtcmalloc_minimal\libtcmalloc_minimal.vcxproj">
|
||||
<Project>{55e2b3ae-3ca1-4db6-97f7-0a044d6f446f}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
@ -14,6 +14,18 @@
|
||||
<ClCompile Include="..\..\src\tests\stack_trace_table_test.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\stack_trace_table.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\internal_logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\base\logging.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\windows\port.cc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\config.h">
|
||||
|
Loading…
Reference in New Issue
Block a user