diff --git a/src/tools/tracegen/etw.cpp b/src/tools/tracegen/etw.cpp index cf185c3fddf..755470af153 100644 --- a/src/tools/tracegen/etw.cpp +++ b/src/tools/tracegen/etw.cpp @@ -22,6 +22,15 @@ static void writeEtwMacro(QTextStream &stream, const Tracepoint::Field &field) { const QString &name = field.name; + if (field.arrayLen > 0) { + for (int i = 0; i < field.arrayLen; i++) { + stream << "TraceLoggingValue(" << name << "[" << i << "], \"" << name << "[" << i << "]\")"; + if (i + 1 < field.arrayLen) + stream << ",\n "; + } + return; + } + switch (field.backendType) { case Tracepoint::Field::QtString: stream << "TraceLoggingCountedWideString(reinterpret_cast(" diff --git a/src/tools/tracegen/lttng.cpp b/src/tools/tracegen/lttng.cpp index 1ca3f4a974f..d230e024c7f 100644 --- a/src/tools/tracegen/lttng.cpp +++ b/src/tools/tracegen/lttng.cpp @@ -19,11 +19,13 @@ static void writeCtfMacro(QTextStream &stream, const Tracepoint::Field &field) const QString &seqLen = field.seqLen; const int arrayLen = field.arrayLen; - switch (field.backendType) { - case Tracepoint::Field::Array: + if (arrayLen > 0) { stream << "ctf_array(" < 0) - return Tracepoint::Field::Array; + int arrayLen = arrayLength(rawType); + if (arrayLen > 0) + rawType = removeBraces(rawType); if (!sequenceLength(rawType).isNull()) return Tracepoint::Field::Sequence; diff --git a/src/tools/tracegen/provider.h b/src/tools/tracegen/provider.h index 86749de502e..18392baaef2 100644 --- a/src/tools/tracegen/provider.h +++ b/src/tools/tracegen/provider.h @@ -21,7 +21,6 @@ struct Tracepoint struct Field { enum BackendType { - Array, Sequence, Integer, IntegerHex,