Use protozero in IPC framing protocol

This CL switches the root layer of the IPC to protozero.
Note that this CL doesn't fully remove the libprotobuf
dep from the IPC layer. The auto-generated .ipc.{cc,h}
classes, in fact, still refer to the .pb.h headers for
now (the next CL will sort that out).
This CL takes care only of the raw IPC machinery that
deals with framing (BufferedFrameDeserializer).
The major change introduced is making varint decoding
resilient against ints larger than 64 bits. The IPC
layer needs to defend against too-large frames.
Also failing varint decoding on numbers > 2**64
seems generally a nice property.
I manually inspected all other uses of ParseVarInt
and adapted the only other affected one (ProtoDecoder)
to this new behavior.

Bug: 132880619
Change-Id: I2c8b64ee7cf175a07f70845db04f0639bf3291af
13 files changed
tree: 49c189de0df4f1011f895c38078e2dddd66845e0
  1. bazel/
  2. build_overrides/
  3. buildtools/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  11. test/
  12. tools/
  13. ui/
  14. .clang-format
  15. .gitignore
  16. .gn
  17. .style.yapf
  18. Android.bp
  19. Android.bp.extras
  20. BUILD
  21. BUILD.extras
  22. BUILD.gn
  23. codereview.settings
  24. heapprofd.rc
  25. MODULE_LICENSE_APACHE2
  26. NOTICE
  27. OWNERS
  28. perfetto.rc
  29. PRESUBMIT.py
  30. README.chromium
  31. README.md
  32. TEST_MAPPING
  33. WORKSPACE
README.md

Perfetto - Performance instrumentation and tracing

Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.

See www.perfetto.dev for docs.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.

Community

You can reach us on our Discord channel. If you prefer using IRC we have an experimental Discord <> IRC bridge synced with #perfetto-dev on Freenode.