Proto filter: use "bytes" field w/ checksum for bytecode

This CL makes a minor tweak to the bytecode filter
serialization. It's still a packed sequence of varints
with the only two tweaks:
1. Got rid of the proto_filter.proto definition. That
   was not defining anything other than a packed varint
   array but turned out to be very inconvenient to write
   pbtx trace config. In fact arrays in .pbtx require one
   row per entry (in this case, one row per filter word).
   On top of this, I discovered that our pbtx parser doesn't
   support yet packed arrays. So I switched this to be just
   a bytes field (in the next CLs, where it will be plumbed)
   even though its content it's still a sequence of varints.
2. Added a final word to the bytecode with a checksum. This is
   to make sure that we don't screw up accidentally the filter
   in the various proto->string->proto conversions.

Bug: 181012016
Test: updated unittests and fuzzers.
Change-Id: I9d5c5c23de1b4ec93ed307187fdedcc813623572
16 files changed
tree: 597417197a8babcc810e724c3a9e17819ed14222
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. src/
  13. test/
  14. tools/
  15. ui/
  16. .clang-format
  17. .clang-tidy
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. Android.bp
  23. Android.bp.extras
  24. BUILD
  25. BUILD.extras
  26. BUILD.gn
  27. CHANGELOG
  28. codereview.settings
  29. DIR_METADATA
  30. heapprofd.rc
  31. LICENSE
  32. meson.build
  33. METADATA
  34. MODULE_LICENSE_APACHE2
  35. OWNERS
  36. perfetto.rc
  37. PerfettoIntegrationTests.xml
  38. PRESUBMIT.py
  39. README.chromium
  40. README.md
  41. TEST_MAPPING
  42. traced_perf.rc
  43. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.