Upgrade Abseil to LTS 2020923.2
diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl
index 37b2cb0..ab4ee1c 100644
--- a/bazel/grpc_deps.bzl
+++ b/bazel/grpc_deps.bzl
@@ -249,11 +249,11 @@
     if "com_google_absl" not in native.existing_rules():
         http_archive(
             name = "com_google_absl",
-            sha256 = "f368a8476f4e2e0eccf8a7318b98dafbe30b2600f4e3cf52636e5eb145aba06a",
-            strip_prefix = "abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d",
+            sha256 = "3d74cdc98b42fd4257d91f652575206de195e2c824fcd8d6e6d227f85cb143ef",
+            strip_prefix = "abseil-cpp-0f3bb466b868b523cf1dc9b2aaaed65c77b28862",
             urls = [
-                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
-                "https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz",
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862.tar.gz",
+                "https://github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862.tar.gz",
             ],
         )
 
diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec
index eff1756..7f5136f 100644
--- a/gRPC-C++.podspec
+++ b/gRPC-C++.podspec
@@ -183,7 +183,7 @@
     ss.header_mappings_dir = '.'
     ss.dependency "#{s.name}/Interface", version
     ss.dependency 'gRPC-Core', version
-    abseil_version = '1.20200225.0'
+    abseil_version = '1.20200923.2'
     ss.dependency 'abseil/base/base', abseil_version
     ss.dependency 'abseil/container/flat_hash_set', abseil_version
     ss.dependency 'abseil/container/inlined_vector', abseil_version
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index e5337e0..47e8870 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -46,7 +46,7 @@
   s.requires_arc = false
 
   name = 'grpc'
-  abseil_version = '1.20200225.0'
+  abseil_version = '1.20200923.2'
 
   # When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework.
   # This lets users write their includes like `#include <grpc/grpc.h>` as opposed to `#include
diff --git a/src/abseil-cpp/preprocessed_builds.yaml b/src/abseil-cpp/preprocessed_builds.yaml
index a6a35f2..257efad 100644
--- a/src/abseil-cpp/preprocessed_builds.yaml
+++ b/src/abseil-cpp/preprocessed_builds.yaml
@@ -93,12 +93,14 @@
   name: absl/base:core_headers
   src: []
 - cmake_target: absl::dynamic_annotations
-  deps: []
+  deps:
+  - absl/base:config
+  - absl/base:core_headers
   headers:
   - third_party/abseil-cpp/absl/base/dynamic_annotations.h
+  - third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h
   name: absl/base:dynamic_annotations
-  src:
-  - third_party/abseil-cpp/absl/base/dynamic_annotations.cc
+  src: []
 - cmake_target: absl::endian
   deps:
   - absl/base:config
@@ -124,6 +126,13 @@
   name: absl/base:exponential_biased
   src:
   - third_party/abseil-cpp/absl/base/internal/exponential_biased.cc
+- cmake_target: absl::fast_type_id
+  deps:
+  - absl/base:config
+  headers:
+  - third_party/abseil-cpp/absl/base/internal/fast_type_id.h
+  name: absl/base:fast_type_id
+  src: []
 - cmake_target: absl::log_severity
   deps:
   - absl/base:config
@@ -187,6 +196,16 @@
   name: absl/base:spinlock_wait
   src:
   - third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc
+- cmake_target: absl::strerror
+  deps:
+  - absl/base:config
+  - absl/base:core_headers
+  - absl/base:errno_saver
+  headers:
+  - third_party/abseil-cpp/absl/base/internal/strerror.h
+  name: absl/base:strerror
+  src:
+  - third_party/abseil-cpp/absl/base/internal/strerror.cc
 - cmake_target: absl::throw_delegate
   deps:
   - absl/base:config
@@ -206,6 +225,7 @@
   - absl/container:layout
   - absl/memory:memory
   - absl/meta:type_traits
+  - absl/strings:cord
   - absl/strings:strings
   - absl/types:compare
   - absl/utility:utility
@@ -233,7 +253,9 @@
   src: []
 - cmake_target: absl::container_memory
   deps:
+  - absl/base:config
   - absl/memory:memory
+  - absl/meta:type_traits
   - absl/utility:utility
   headers:
   - third_party/abseil-cpp/absl/container/internal/container_memory.h
@@ -242,6 +264,7 @@
 - cmake_target: absl::fixed_array
   deps:
   - absl/algorithm:algorithm
+  - absl/base:config
   - absl/base:core_headers
   - absl/base:dynamic_annotations
   - absl/base:throw_delegate
@@ -278,6 +301,7 @@
   deps:
   - absl/base:config
   - absl/hash:hash
+  - absl/strings:cord
   - absl/strings:strings
   headers:
   - third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h
@@ -350,6 +374,7 @@
   src: []
 - cmake_target: absl::layout
   deps:
+  - absl/base:config
   - absl/base:core_headers
   - absl/meta:type_traits
   - absl/strings:strings
@@ -516,15 +541,38 @@
   - absl/base:raw_logging_internal
   - absl/debugging:debugging_internal
   - absl/debugging:demangle_internal
+  - absl/strings:strings
   headers:
   - third_party/abseil-cpp/absl/debugging/internal/symbolize.h
   - third_party/abseil-cpp/absl/debugging/symbolize.h
+  - third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc
   - third_party/abseil-cpp/absl/debugging/symbolize_elf.inc
   - third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc
   - third_party/abseil-cpp/absl/debugging/symbolize_win32.inc
   name: absl/debugging:symbolize
   src:
   - third_party/abseil-cpp/absl/debugging/symbolize.cc
+- cmake_target: absl::flags_commandlineflag
+  deps:
+  - absl/base:config
+  - absl/base:fast_type_id
+  - absl/flags:commandlineflag_internal
+  - absl/strings:strings
+  - absl/types:optional
+  headers:
+  - third_party/abseil-cpp/absl/flags/commandlineflag.h
+  name: absl/flags:commandlineflag
+  src:
+  - third_party/abseil-cpp/absl/flags/commandlineflag.cc
+- cmake_target: absl::flags_commandlineflag_internal
+  deps:
+  - absl/base:config
+  - absl/base:fast_type_id
+  headers:
+  - third_party/abseil-cpp/absl/flags/internal/commandlineflag.h
+  name: absl/flags:commandlineflag_internal
+  src:
+  - third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc
 - cmake_target: absl::flags_config
   deps:
   - absl/base:config
@@ -546,9 +594,7 @@
   - absl/base:core_headers
   - absl/flags:config
   - absl/flags:flag_internal
-  - absl/flags:handle
-  - absl/flags:marshalling
-  - absl/flags:registry
+  - absl/flags:reflection
   - absl/strings:strings
   headers:
   - third_party/abseil-cpp/absl/flags/declare.h
@@ -561,29 +607,21 @@
   - absl/base:base
   - absl/base:config
   - absl/base:core_headers
+  - absl/flags:commandlineflag
+  - absl/flags:commandlineflag_internal
   - absl/flags:config
-  - absl/flags:handle
-  - absl/flags:registry
+  - absl/flags:marshalling
+  - absl/flags:reflection
   - absl/memory:memory
+  - absl/meta:type_traits
   - absl/strings:strings
   - absl/synchronization:synchronization
+  - absl/utility:utility
   headers:
   - third_party/abseil-cpp/absl/flags/internal/flag.h
   name: absl/flags:flag_internal
   src:
   - third_party/abseil-cpp/absl/flags/internal/flag.cc
-- cmake_target: absl::flags_handle
-  deps:
-  - absl/base:config
-  - absl/base:core_headers
-  - absl/flags:config
-  - absl/flags:marshalling
-  - absl/strings:strings
-  - absl/types:optional
-  headers:
-  - third_party/abseil-cpp/absl/flags/internal/commandlineflag.h
-  name: absl/flags:handle
-  src: []
 - cmake_target: absl::flags_marshalling
   deps:
   - absl/base:config
@@ -600,12 +638,14 @@
   deps:
   - absl/base:config
   - absl/base:core_headers
+  - absl/flags:commandlineflag
+  - absl/flags:commandlineflag_internal
   - absl/flags:config
   - absl/flags:flag
   - absl/flags:flag_internal
-  - absl/flags:handle
+  - absl/flags:private_handle_accessor
   - absl/flags:program_name
-  - absl/flags:registry
+  - absl/flags:reflection
   - absl/flags:usage
   - absl/flags:usage_internal
   - absl/strings:strings
@@ -624,6 +664,17 @@
   - third_party/abseil-cpp/absl/flags/internal/path_util.h
   name: absl/flags:path_util
   src: []
+- cmake_target: absl::flags_private_handle_accessor
+  deps:
+  - absl/base:config
+  - absl/flags:commandlineflag
+  - absl/flags:commandlineflag_internal
+  - absl/strings:strings
+  headers:
+  - third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h
+  name: absl/flags:private_handle_accessor
+  src:
+  - third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc
 - cmake_target: absl::flags_program_name
   deps:
   - absl/base:config
@@ -636,22 +687,23 @@
   name: absl/flags:program_name
   src:
   - third_party/abseil-cpp/absl/flags/internal/program_name.cc
-- cmake_target: absl::flags_registry
+- cmake_target: absl::flags_reflection
   deps:
   - absl/base:config
   - absl/base:core_headers
-  - absl/base:raw_logging_internal
+  - absl/container:flat_hash_map
+  - absl/flags:commandlineflag
+  - absl/flags:commandlineflag_internal
   - absl/flags:config
-  - absl/flags:handle
+  - absl/flags:private_handle_accessor
   - absl/strings:strings
   - absl/synchronization:synchronization
   headers:
   - third_party/abseil-cpp/absl/flags/internal/registry.h
-  - third_party/abseil-cpp/absl/flags/internal/type_erased.h
-  name: absl/flags:registry
+  - third_party/abseil-cpp/absl/flags/reflection.h
+  name: absl/flags:reflection
   src:
-  - third_party/abseil-cpp/absl/flags/internal/registry.cc
-  - third_party/abseil-cpp/absl/flags/internal/type_erased.cc
+  - third_party/abseil-cpp/absl/flags/reflection.cc
 - cmake_target: absl::flags_usage
   deps:
   - absl/base:config
@@ -668,13 +720,14 @@
   deps:
   - absl/base:config
   - absl/base:core_headers
+  - absl/flags:commandlineflag
   - absl/flags:config
   - absl/flags:flag
   - absl/flags:flag_internal
-  - absl/flags:handle
   - absl/flags:path_util
+  - absl/flags:private_handle_accessor
   - absl/flags:program_name
-  - absl/flags:registry
+  - absl/flags:reflection
   - absl/strings:strings
   headers:
   - third_party/abseil-cpp/absl/flags/internal/usage.h
@@ -746,6 +799,7 @@
   src: []
 - cmake_target: absl::int128
   deps:
+  - absl/base:bits
   - absl/base:config
   - absl/base:core_headers
   headers:
@@ -758,25 +812,16 @@
 - cmake_target: absl::random_internal_distribution_caller
   deps:
   - absl/base:config
+  - absl/base:fast_type_id
+  - absl/utility:utility
   headers:
   - third_party/abseil-cpp/absl/random/internal/distribution_caller.h
   name: absl/random/internal:distribution_caller
   src: []
-- cmake_target: absl::random_internal_distributions
-  deps:
-  - absl/base:base
-  - absl/meta:type_traits
-  - absl/random/internal:distribution_caller
-  - absl/random/internal:traits
-  - absl/random/internal:uniform_helper
-  - absl/strings:strings
-  headers:
-  - third_party/abseil-cpp/absl/random/internal/distributions.h
-  name: absl/random/internal:distributions
-  src: []
 - cmake_target: absl::random_internal_fast_uniform_bits
   deps:
   - absl/base:config
+  - absl/meta:type_traits
   headers:
   - third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h
   name: absl/random/internal:fast_uniform_bits
@@ -806,16 +851,17 @@
   - third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h
   name: absl/random/internal:iostream_state_saver
   src: []
-- cmake_target: absl::random_internal_mocking_bit_gen_base
+- cmake_target: absl::random_internal_mock_helpers
   deps:
-  - absl/random:random
-  - absl/strings:strings
+  - absl/base:fast_type_id
+  - absl/types:optional
   headers:
-  - third_party/abseil-cpp/absl/random/internal/mocking_bit_gen_base.h
-  name: absl/random/internal:mocking_bit_gen_base
+  - third_party/abseil-cpp/absl/random/internal/mock_helpers.h
+  name: absl/random/internal:mock_helpers
   src: []
 - cmake_target: ''
   deps:
+  - absl/base:config
   - absl/base:core_headers
   - absl/base:raw_logging_internal
   - absl/random/internal:platform
@@ -832,7 +878,6 @@
   - absl/random/internal:pool_urbg
   - absl/random/internal:salted_seed_seq
   - absl/random/internal:seed_material
-  - absl/strings:strings
   - absl/types:optional
   - absl/types:span
   headers:
@@ -855,10 +900,10 @@
   - absl/base:config
   headers:
   - third_party/abseil-cpp/absl/random/internal/platform.h
-  - third_party/abseil-cpp/absl/random/internal/randen-keys.inc
   - third_party/abseil-cpp/absl/random/internal/randen_traits.h
   name: absl/random/internal:platform
-  src: []
+  src:
+  - third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc
 - cmake_target: absl::random_internal_pool_urbg
   deps:
   - absl/base:base
@@ -960,7 +1005,9 @@
   src: []
 - cmake_target: absl::random_internal_uniform_helper
   deps:
+  - absl/base:config
   - absl/meta:type_traits
+  - absl/random/internal:traits
   headers:
   - third_party/abseil-cpp/absl/random/internal/uniform_helper.h
   name: absl/random/internal:uniform_helper
@@ -978,10 +1025,11 @@
 - cmake_target: absl::random_bit_gen_ref
   deps:
   - absl/base:core_headers
+  - absl/base:fast_type_id
   - absl/meta:type_traits
   - absl/random/internal:distribution_caller
   - absl/random/internal:fast_uniform_bits
-  - absl/random/internal:mocking_bit_gen_base
+  - absl/random:random
   headers:
   - third_party/abseil-cpp/absl/random/bit_gen_ref.h
   name: absl/random:bit_gen_ref
@@ -992,7 +1040,7 @@
   - absl/base:config
   - absl/base:core_headers
   - absl/meta:type_traits
-  - absl/random/internal:distributions
+  - absl/random/internal:distribution_caller
   - absl/random/internal:fast_uniform_bits
   - absl/random/internal:fastmath
   - absl/random/internal:generate_real
@@ -1001,12 +1049,10 @@
   - absl/random/internal:uniform_helper
   - absl/random/internal:wide_multiply
   - absl/strings:strings
-  - absl/types:span
   headers:
   - third_party/abseil-cpp/absl/random/bernoulli_distribution.h
   - third_party/abseil-cpp/absl/random/beta_distribution.h
   - third_party/abseil-cpp/absl/random/discrete_distribution.h
-  - third_party/abseil-cpp/absl/random/distribution_format_traits.h
   - third_party/abseil-cpp/absl/random/distributions.h
   - third_party/abseil-cpp/absl/random/exponential_distribution.h
   - third_party/abseil-cpp/absl/random/gaussian_distribution.h
@@ -1055,6 +1101,7 @@
   - third_party/abseil-cpp/absl/random/seed_sequences.cc
 - cmake_target: absl::status
   deps:
+  - absl/base:atomic_hook
   - absl/base:config
   - absl/base:core_headers
   - absl/base:raw_logging_internal
@@ -1066,16 +1113,31 @@
   - absl/strings:strings
   - absl/types:optional
   headers:
+  - third_party/abseil-cpp/absl/status/internal/status_internal.h
   - third_party/abseil-cpp/absl/status/status.h
   - third_party/abseil-cpp/absl/status/status_payload_printer.h
   name: absl/status:status
   src:
   - third_party/abseil-cpp/absl/status/status.cc
   - third_party/abseil-cpp/absl/status/status_payload_printer.cc
+- cmake_target: absl::statusor
+  deps:
+  - absl/base:core_headers
+  - absl/base:raw_logging_internal
+  - absl/meta:type_traits
+  - absl/status:status
+  - absl/strings:strings
+  - absl/types:variant
+  - absl/utility:utility
+  headers:
+  - third_party/abseil-cpp/absl/status/internal/statusor_internal.h
+  - third_party/abseil-cpp/absl/status/statusor.h
+  name: absl/status:statusor
+  src:
+  - third_party/abseil-cpp/absl/status/statusor.cc
 - cmake_target: absl::cord
   deps:
   - absl/base:base
-  - absl/base:base_internal
   - absl/base:core_headers
   - absl/base:endian
   - absl/base:raw_logging_internal
@@ -1087,6 +1149,7 @@
   - absl/strings:internal
   - absl/strings:str_format
   - absl/strings:strings
+  - absl/types:optional
   headers:
   - third_party/abseil-cpp/absl/strings/cord.h
   name: absl/strings:cord
@@ -1094,6 +1157,8 @@
   - third_party/abseil-cpp/absl/strings/cord.cc
 - cmake_target: absl::cord
   deps:
+  - absl/base:base_internal
+  - absl/container:compressed_tuple
   - absl/meta:type_traits
   - absl/strings:strings
   headers:
@@ -1127,11 +1192,14 @@
   src: []
 - cmake_target: absl::str_format_internal
   deps:
+  - absl/base:bits
   - absl/base:config
   - absl/base:core_headers
+  - absl/functional:function_ref
   - absl/meta:type_traits
   - absl/numeric:int128
   - absl/strings:strings
+  - absl/types:optional
   - absl/types:span
   headers:
   - third_party/abseil-cpp/absl/strings/internal/str_format/arg.h
@@ -1311,6 +1379,7 @@
   deps:
   - absl/base:config
   - absl/base:core_headers
+  - absl/base:fast_type_id
   - absl/meta:type_traits
   - absl/types:bad_any_cast
   - absl/utility:utility
diff --git a/templates/gRPC-C++.podspec.template b/templates/gRPC-C++.podspec.template
index c5d11c5..8d917f5 100644
--- a/templates/gRPC-C++.podspec.template
+++ b/templates/gRPC-C++.podspec.template
@@ -165,7 +165,7 @@
       ss.header_mappings_dir = '.'
       ss.dependency "#{s.name}/Interface", version
       ss.dependency 'gRPC-Core', version
-      abseil_version = '1.20200225.0'
+      abseil_version = '1.20200923.2'
       % for abseil_spec in grpcpp_abseil_specs:
       ss.dependency '${abseil_spec}', abseil_version
       % endfor
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index c1d53a7..bc0f2a5 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -123,7 +123,7 @@
     s.requires_arc = false
 
     name = 'grpc'
-    abseil_version = '1.20200225.0'
+    abseil_version = '1.20200923.2'
 
     # When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework.
     # This lets users write their includes like `#include <grpc/grpc.h>` as opposed to `#include
diff --git a/third_party/abseil-cpp b/third_party/abseil-cpp
index df3ea78..0f3bb46 160000
--- a/third_party/abseil-cpp
+++ b/third_party/abseil-cpp
@@ -1 +1 @@
-Subproject commit df3ea785d8c30a9503321a3d35ee7d35808f190d
+Subproject commit 0f3bb466b868b523cf1dc9b2aaaed65c77b28862
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 9558ab2..9d9e711 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -26,7 +26,7 @@
 
 git submodule | awk '{ print $1 }' | sort > "$submodules"
 cat << EOF | awk '{ print $1 }' | sort > "$want_submodules"
- df3ea785d8c30a9503321a3d35ee7d35808f190d third_party/abseil-cpp (heads/master)
+ 0f3bb466b868b523cf1dc9b2aaaed65c77b28862 third_party/abseil-cpp (heads/master)
  090faecb454fbd6e6e17a75ef8146acb037118d4 third_party/benchmark (v1.5.0)
  73594cde8c9a52a102c4341c244c833aa61b9c06 third_party/bloaty (remotes/origin/wide-14-g73594cd)
  88aeb757f1a415c71fb4cbf5af936ecae4bc8179 third_party/boringssl-with-bazel (remotes/origin/master-with-bazel)