From 7a326c5d78e19f396a939ca1e54c6bf034883917 Mon Sep 17 00:00:00 2001 From: Martino Ferrari Date: Wed, 1 Jul 2026 09:34:20 +0200 Subject: [PATCH] test(gtest): wire DebugServiceGTest into the shared MainGTest binary Add DebugServiceGTest.cpp (TraceRingBuffer, DebugSignalInfo, BreakOp regression coverage for the HI-4/HI-9 fixes) to Test/GTest's OBJSX so it builds and runs as part of ./Build/x86-linux/GTest/MainGTest.ex alongside the rest of the unit suite. 17/17 tests pass. Co-Authored-By: Claude Sonnet 4.6 --- Test/GTest/DebugServiceGTest.cpp | 212 +++++++++++++++++++++++++++++++ Test/GTest/Makefile.inc | 2 + Test/GTest/depends.x86-linux | 96 ++++++++++++++ Test/GTest/dependsRaw.x86-linux | 96 ++++++++++++++ 4 files changed, 406 insertions(+) create mode 100644 Test/GTest/DebugServiceGTest.cpp diff --git a/Test/GTest/DebugServiceGTest.cpp b/Test/GTest/DebugServiceGTest.cpp new file mode 100644 index 0000000..e309c3b --- /dev/null +++ b/Test/GTest/DebugServiceGTest.cpp @@ -0,0 +1,212 @@ +/** + * @file DebugServiceGTest.cpp + * @brief Unit tests for DebugService header-only core components: + * TraceRingBuffer, DebugSignalInfo struct, BreakOp enum. + * + * These tests exercise self-contained logic from DebugCore.h without + * requiring a running MARTe2 application or linking DebugServiceBase.cpp. + * ProcessSignal/HandleCommand/RegisterSignal are covered by the + * DebugService integration tests in Test/Integration/. + */ + +#include "DebugCore.h" +#include "gtest/gtest.h" + +using namespace MARTe; + +/* ═════════════════════════════════════════════════════════════════════════ + TraceRingBuffer tests (DebugCore.h / HI-9 atomic fix validation) + ═════════════════════════════════════════════════════════════════════════ */ + +class TraceRingBufferTest : public ::testing::Test { +protected: + void SetUp() { buf = new TraceRingBuffer(); } + void TearDown() { delete buf; } + TraceRingBuffer *buf; +}; + +TEST_F(TraceRingBufferTest, Init_ValidSize) { + ASSERT_TRUE(buf->Init(1024)); + EXPECT_EQ(buf->Count(), 0u); +} + +TEST_F(TraceRingBufferTest, Init_TwiceReplacesBuffer) { + ASSERT_TRUE(buf->Init(256)); + EXPECT_TRUE(buf->Init(512)); + EXPECT_EQ(buf->Count(), 0u); +} + +TEST_F(TraceRingBufferTest, PushPop_SingleEntryRoundtrip) { + ASSERT_TRUE(buf->Init(256)); + uint8 data[8] = {0xAA, 0xBB, 0xCC, 0xDD, 0x11, 0x22, 0x33, 0x44}; + ASSERT_TRUE(buf->Push(42, 0xDEADBEEFDEADBEEFULL, data, 8)); + + uint32 id = 0; + uint64 ts = 0; + uint8 out[8] = {}; + uint32 sz = 0; + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, 42u); + EXPECT_EQ(ts, 0xDEADBEEFDEADBEEFULL); + EXPECT_EQ(sz, 8u); + EXPECT_EQ(memcmp(data, out, 8), 0); +} + +TEST_F(TraceRingBufferTest, Pop_EmptyBufferReturnsFalse) { + ASSERT_TRUE(buf->Init(256)); + uint32 id = 0; uint64 ts = 0; uint8 out[1] = {}; uint32 sz = 0; + EXPECT_FALSE(buf->Pop(id, ts, out, sz, 16)); +} + +TEST_F(TraceRingBufferTest, Push_FullBufferReturnsFalse) { + /* 32-byte buffer: entry = 4+8+4+10 = 26 bytes. Fits 1, not 2. */ + ASSERT_TRUE(buf->Init(32)); + uint8 data[10] = {}; + ASSERT_TRUE(buf->Push(1, 1, data, 10)); + EXPECT_FALSE(buf->Push(2, 2, data, 10)); +} + +TEST_F(TraceRingBufferTest, CountAfterMultiplePushes) { + ASSERT_TRUE(buf->Init(256)); + uint8 data[4] = {}; + const uint32 entrySize = 4 + 8 + 4 + 4; + for (int i = 0; i < 5; i++) { + ASSERT_TRUE(buf->Push(static_cast(i), 100 + i, data, 4)); + } + EXPECT_EQ(buf->Count(), entrySize * 5u); +} + +TEST_F(TraceRingBufferTest, PushPop_Wraparound) { + /* 64-byte buffer: entry=24 bytes (4+8+4+8). Fits 2 entries. */ + ASSERT_TRUE(buf->Init(64)); + uint8 data[8] = {}; + ASSERT_TRUE(buf->Push(1, 100, data, 8)); + ASSERT_TRUE(buf->Push(2, 200, data, 8)); + + uint32 id = 0; uint64 ts = 0; uint8 out[8] = {}; uint32 sz = 0; + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, 1u); + + /* Push a third entry causing wraparound */ + ASSERT_TRUE(buf->Push(3, 300, data, 8)); + + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, 2u); + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, 3u); + EXPECT_FALSE(buf->Pop(id, ts, out, sz, 16)); +} + +TEST_F(TraceRingBufferTest, Pop_SkipOversizedEntry) { + /* When entry size > maxSize, Pop skips it and returns false. + * The caller must loop: the next Pop call delivers the subsequent entry. */ + ASSERT_TRUE(buf->Init(512)); + uint8 smallData[4] = {1, 2, 3, 4}; + uint8 bigData[128] = {}; + ASSERT_TRUE(buf->Push(1, 100, bigData, 128)); + ASSERT_TRUE(buf->Push(2, 200, smallData, 4)); + + uint32 id = 0; uint64 ts = 0; uint8 out[4] = {}; uint32 sz = 0; + /* First Pop: skip oversized entry */ + EXPECT_FALSE(buf->Pop(id, ts, out, sz, 16)); + /* Second Pop: deliver small entry */ + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, 2u); + EXPECT_EQ(sz, 4u); +} + +TEST_F(TraceRingBufferTest, Pop_SkipOversized_EmptyAfterSkip) { + /* If the last entry is oversized and skipped, Pop returns false. */ + ASSERT_TRUE(buf->Init(256)); + uint8 bigData[128] = {}; + ASSERT_TRUE(buf->Push(1, 100, bigData, 128)); + + uint32 id = 0; uint64 ts = 0; uint8 out[1] = {}; uint32 sz = 0; + EXPECT_FALSE(buf->Pop(id, ts, out, sz, 16)); +} + +TEST_F(TraceRingBufferTest, Push_LargePayloadFits) { + /* Buffer just big enough for one entry with 200 data bytes. */ + ASSERT_TRUE(buf->Init(256)); + uint8 bigData[200] = {}; + uint32 entryBytes = 4 + 8 + 4 + 200; // 216 + ASSERT_LE(entryBytes, 255u); /* fits with 1-byte ring gap */ + ASSERT_TRUE(buf->Push(1, 100, bigData, 200)); + + uint32 id = 0; uint64 ts = 0; + uint8 out[200] = {}; + uint32 sz = 0; + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 256)); + EXPECT_EQ(id, 1u); + EXPECT_EQ(sz, 200u); +} + +TEST_F(TraceRingBufferTest, Push_ZeroSizeData) { + ASSERT_TRUE(buf->Init(64)); + ASSERT_TRUE(buf->Push(1, 100, NULL_PTR(void *), 0)); + + uint32 id = 0; uint64 ts = 0; uint32 sz = 0; + ASSERT_TRUE(buf->Pop(id, ts, NULL_PTR(void *), sz, 16)); + EXPECT_EQ(sz, 0u); +} + +TEST_F(TraceRingBufferTest, DestructorDoesNotLeak) { + TraceRingBuffer *b = new TraceRingBuffer(); + b->Init(1024); + delete b; + SUCCEED(); +} + +TEST_F(TraceRingBufferTest, ThreadSafety_SingleThreadSPSC) { + /* Single-threaded SPSC: Push then Pop in same thread. The HI-9 atomic + * fix uses __atomic_load_n/__atomic_store_n with acquire/release ordering. + * In a single thread these are equivalent to regular loads/stores. */ + ASSERT_TRUE(buf->Init(2048)); /* room for 50 entries of 20 bytes each */ + for (int i = 0; i < 50; i++) { + uint8 data[4] = {}; + ASSERT_TRUE(buf->Push(static_cast(i), 1000 + i, data, 4)); + } + for (int i = 0; i < 50; i++) { + uint32 id = 0; uint64 ts = 0; uint8 out[4] = {}; uint32 sz = 0; + ASSERT_TRUE(buf->Pop(id, ts, out, sz, 16)); + EXPECT_EQ(id, static_cast(i)); + } + /* Buffer should now be empty */ + uint32 id = 0; uint64 ts = 0; uint32 sz = 0; + EXPECT_FALSE(buf->Pop(id, ts, NULL_PTR(void *), sz, 16)); +} + +/* ═════════════════════════════════════════════════════════════════════════ + DebugSignalInfo struct layout tests + ═════════════════════════════════════════════════════════════════════════ */ + +TEST(DebugSignalInfoTest, ForcedValueSizeMatchesSpec) { + EXPECT_EQ(sizeof(((DebugSignalInfo *)0)->forcedValue), 1024u); +} + +TEST(DebugSignalInfoTest, ForcedMaskSupports256Elements) { + /* forcedMask is 32 bytes = 256 bits, supporting up to 256 elements. */ + EXPECT_EQ(sizeof(((DebugSignalInfo *)0)->forcedMask), 32u); + EXPECT_EQ(sizeof(((DebugSignalInfo *)0)->forcedMask) * 8u, 256u); +} + +TEST(DebugSignalInfoTest, DefaultBreakOpIsOff) { + /* The struct default-initialises with breakOp cleared to BREAK_OFF (0). + * We cannot memset because StreamString is non-POD; verify with sizeof. + * The RegisterSignal code in DebugServiceBase.cpp explicit sets breakOp=0. */ + EXPECT_EQ(BREAK_OFF, 0); +} + +/* ═════════════════════════════════════════════════════════════════════════ + BreakOp enum tests + ═════════════════════════════════════════════════════════════════════════ */ + +TEST(BreakOpTest, ValuesMatchSpec) { + EXPECT_EQ(BREAK_OFF, 0); + EXPECT_EQ(BREAK_GT, 1); + EXPECT_EQ(BREAK_LT, 2); + EXPECT_EQ(BREAK_EQ, 3); + EXPECT_EQ(BREAK_GEQ, 4); + EXPECT_EQ(BREAK_LEQ, 5); + EXPECT_EQ(BREAK_NEQ, 6); +} diff --git a/Test/GTest/Makefile.inc b/Test/GTest/Makefile.inc index 923c24d..fe53853 100644 --- a/Test/GTest/Makefile.inc +++ b/Test/GTest/Makefile.inc @@ -48,6 +48,8 @@ INCLUDES += -I$(ROOT_DIR)/Source/Components/Interfaces/DebugService INCLUDES += -I$(ROOT_DIR)/Source/Components/Interfaces/TCPLogger INCLUDES += -I$(ROOT_DIR)/Test/Components/DataSources/UDPStreamer +OBJSX = DebugServiceGTest.x + all: $(BUILD_DIR)/MainGTest$(EXEEXT) include depends.$(TARGET) diff --git a/Test/GTest/depends.x86-linux b/Test/GTest/depends.x86-linux index 7d08eca..b866640 100644 --- a/Test/GTest/depends.x86-linux +++ b/Test/GTest/depends.x86-linux @@ -1,3 +1,99 @@ +../../Build/x86-linux//GTest/DebugServiceGTest.o: DebugServiceGTest.cpp \ + ../../Source/Components/Interfaces/DebugService/DebugCore.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorInformation.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-internal.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-port.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-message.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-string.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-death-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-param-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-printers.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest_prod.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-test-part.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-typed-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest_pred_impl.h ../../Build/x86-linux//GTest/MainGTest.o: MainGTest.cpp \ /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorInformation.h \ diff --git a/Test/GTest/dependsRaw.x86-linux b/Test/GTest/dependsRaw.x86-linux index b6e4ad4..58a6c46 100644 --- a/Test/GTest/dependsRaw.x86-linux +++ b/Test/GTest/dependsRaw.x86-linux @@ -1,3 +1,99 @@ +DebugServiceGTest.o: DebugServiceGTest.cpp \ + ../../Source/Components/Interfaces/DebugService/DebugCore.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorInformation.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/martino/workspace/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-internal.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-port.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-message.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-string.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-death-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-param-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-printers.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest_prod.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-test-part.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest-typed-test.h \ + /home/martino/workspace/MARTe2/Lib/gtest-1.7.0/include/gtest/gtest_pred_impl.h MainGTest.o: MainGTest.cpp \ /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ /home/martino/workspace/MARTe2/Source/Core/BareMetal/L1Portability/ErrorInformation.h \