Reland "Update to protobuf 3.20.0"

This reverts commit d8c5cddc77e0e0aed839a336cefbb9aa914ec7d7.

With the new release, we can retire some patches:

- 0003-remove-static-initializers.patch: Upstream protobuf no longer has
  variables like Status::OK but constructor functions like OkStatus(),
  so there is no more static initializer.
  https://github.com/protocolbuffers/protobuf/commit/3a7bd9c236fda465c16b90567f6b8706915da6cb

- 0004-fix-integer-types-and-shared-library-exports.patch: Half of this
  patch is no longer needed. Upstream protobuf no longer has
  PROTOBUF_ULONGLONG, etc.

- 0009-uninline-arenastring.patch: No longer applies, function in
  question seems to be gone.

- 0023-fix-delimited-message-parsing.patch: Merged upstream

- 0024-fix-thread-priority-on-protobuf-initialization.patch: No longer
  needed. Protobuf now uses constant initialization. See cl/351672714

We can also remove the instructions to copy in third_party/six.
protobuf no longer uses it.

Also adds some new patches to fix a static initializer and other
compile failures. See go/protobuf-init-chrome (internal) for details
on that saga. In addition adds a patch to clean up descriptor allocation
code that incorrectly tried to work around a CFI check.

This CL should probably followed up with an update to 3.20.1, which
was released in the time it took to put this together. However,
we cannot update to 21.1 (new version scheme) for now because
upstream moved the JavaScript compiler to a new repo and haven't yet
made a release from that repo.

davidben@chromium.org was the one that prepared this roll, and this
reland CL just adds a minor workaround for the CFI issue.

Original CL: https://crrev.com/c/3594212
Revert CL: https://crrev.com/c/3718597

Bug: 1294200
Change-Id: If5fdc6e716684f914acf93dce0f2b81f94e3d89b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3733827
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1019285}
1505 files changed
tree: 34063aaa18fac9ba5d0db5f1e121a620f9745df1
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. weblayer/
  51. .clang-format
  52. .clang-tidy
  53. .eslintrc.js
  54. .git-blame-ignore-revs
  55. .gitattributes
  56. .gitignore
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython
  61. .vpython3
  62. .yapfignore
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. DEPS
  68. DIR_METADATA
  69. ENG_REVIEW_OWNERS
  70. LICENSE
  71. LICENSE.chromium_os
  72. OWNERS
  73. PRESUBMIT.py
  74. PRESUBMIT_test.py
  75. PRESUBMIT_test_mocks.py
  76. README.md
  77. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.