mirror of
https://github.com/abseil/abseil-cpp.git
synced 2026-06-04 12:07:05 +08:00
Export of internal Abseil changes
-- 05b0b9aaed03199b0041988f3aa31c6257e05712 by Chris Kennelly <ckennelly@google.com>: Accept absl::string_view for internal ForEachSection parameter. PiperOrigin-RevId: 316694540 -- d14d61f1d017e967923bbffaf12b45c4e6b40d36 by Abseil Team <absl-team@google.com>: Allow ABSL_PREDICT_FALSE to be used with a type that's explicitly convertible to bool. So far ABSL_PREDICT_TRUE could be used with these, but not ABSL_PREDICT_FALSE. PiperOrigin-RevId: 316684594 -- 16a8f5e183688b2bd5069f9d3a2c5f2a978d1eaa by Abseil Team <absl-team@google.com>: Allow ABSL_PREDICT_FALSE to be used with a type that's explicitly convertible to bool. So far ABSL_PREDICT_TRUE could be used with these, but not ABSL_PREDICT_FALSE. PiperOrigin-RevId: 316634388 -- 1ecfa42a400a5ea9435110e6a5416a46414bb6fb by Gennadiy Rozental <rogeeff@google.com>: Internal change PiperOrigin-RevId: 316547270 -- ee915dffdf18818b30107b79c82792d6ca7fc691 by Andy Getzendanner <durandal@google.com>: Remove a copy-pasted comment and add a missing cmake dep. PiperOrigin-RevId: 316541265 -- 26c74c5a61269afe37cd459c9a508ddd0a47f8f3 by Gennadiy Rozental <rogeeff@google.com>: Make absl/flag/reflection target publicly visible. PiperOrigin-RevId: 316523446 GitOrigin-RevId: 05b0b9aaed03199b0041988f3aa31c6257e05712 Change-Id: I0aaa8b0b81c2a79fbc42d116c105512176010b25
This commit is contained in:
@@ -711,5 +711,6 @@ absl_cc_test(
|
||||
${ABSL_TEST_COPTS}
|
||||
DEPS
|
||||
absl::core_headers
|
||||
absl::optional
|
||||
gtest_main
|
||||
)
|
||||
|
||||
@@ -12,10 +12,6 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// This test serves primarily as a compilation test for base/raw_logging.h.
|
||||
// Raw logging testing is covered by logging_unittest.cc, which is not as
|
||||
// portable as this test.
|
||||
|
||||
#include "absl/base/optimization.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
@@ -100,6 +100,7 @@ cc_test(
|
||||
"//absl/base:core_headers",
|
||||
"//absl/base:raw_logging_internal",
|
||||
"//absl/memory",
|
||||
"//absl/strings",
|
||||
"@com_google_googletest//:gtest",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -85,6 +85,7 @@ absl_cc_test(
|
||||
absl::core_headers
|
||||
absl::memory
|
||||
absl::raw_logging_internal
|
||||
absl::strings
|
||||
gmock
|
||||
)
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <cstdint>
|
||||
|
||||
#include "absl/base/config.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
#ifdef ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE
|
||||
#error ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE cannot be directly set
|
||||
@@ -45,7 +46,7 @@ namespace debugging_internal {
|
||||
//
|
||||
// This is not async-signal-safe.
|
||||
bool ForEachSection(int fd,
|
||||
const std::function<bool(const std::string& name,
|
||||
const std::function<bool(absl::string_view name,
|
||||
const ElfW(Shdr) &)>& callback);
|
||||
|
||||
// Gets the section header for the given name, if it exists. Returns true on
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
#include "absl/base/port.h"
|
||||
#include "absl/debugging/internal/demangle.h"
|
||||
#include "absl/debugging/internal/vdso_support.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
@@ -498,7 +499,7 @@ static ABSL_ATTRIBUTE_NOINLINE bool GetSectionHeaderByType(
|
||||
const int kMaxSectionNameLen = 64;
|
||||
|
||||
bool ForEachSection(int fd,
|
||||
const std::function<bool(const std::string &name,
|
||||
const std::function<bool(absl::string_view name,
|
||||
const ElfW(Shdr) &)> &callback) {
|
||||
ElfW(Ehdr) elf_header;
|
||||
if (!ReadFromOffsetExact(fd, &elf_header, sizeof(elf_header), 0)) {
|
||||
@@ -520,7 +521,7 @@ bool ForEachSection(int fd,
|
||||
return false;
|
||||
}
|
||||
off_t name_offset = shstrtab.sh_offset + out.sh_name;
|
||||
char header_name[kMaxSectionNameLen + 1];
|
||||
char header_name[kMaxSectionNameLen];
|
||||
ssize_t n_read =
|
||||
ReadFromOffset(fd, &header_name, kMaxSectionNameLen, name_offset);
|
||||
if (n_read == -1) {
|
||||
@@ -529,9 +530,8 @@ bool ForEachSection(int fd,
|
||||
// Long read?
|
||||
return false;
|
||||
}
|
||||
header_name[n_read] = '\0';
|
||||
|
||||
std::string name(header_name);
|
||||
absl::string_view name(header_name, strnlen(header_name, n_read));
|
||||
if (!callback(name, out)) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "absl/base/optimization.h"
|
||||
#include "absl/debugging/internal/stack_consumption.h"
|
||||
#include "absl/memory/memory.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
using testing::Contains;
|
||||
|
||||
@@ -401,8 +402,8 @@ TEST(Symbolize, ForEachSection) {
|
||||
|
||||
std::vector<std::string> sections;
|
||||
ASSERT_TRUE(absl::debugging_internal::ForEachSection(
|
||||
fd, [§ions](const std::string &name, const ElfW(Shdr) &) {
|
||||
sections.push_back(name);
|
||||
fd, [§ions](const absl::string_view name, const ElfW(Shdr) &) {
|
||||
sections.emplace_back(name);
|
||||
return true;
|
||||
}));
|
||||
|
||||
|
||||
@@ -169,9 +169,6 @@ cc_library(
|
||||
],
|
||||
copts = ABSL_DEFAULT_COPTS,
|
||||
linkopts = ABSL_DEFAULT_LINKOPTS,
|
||||
visibility = [
|
||||
"//absl/flags:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
":commandlineflag",
|
||||
":commandlineflag_internal",
|
||||
|
||||
@@ -28,15 +28,8 @@
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// TODO(rogeeff): remove this declaration
|
||||
CommandLineFlag* FindCommandLineFlag(absl::string_view name);
|
||||
|
||||
namespace flags_internal {
|
||||
|
||||
// TODO(rogeeff): remove this alias
|
||||
using absl::FindCommandLineFlag;
|
||||
|
||||
// Executes specified visitor for each non-retired flag in the registry.
|
||||
// Requires the caller hold the registry lock.
|
||||
void ForEachFlagUnlocked(std::function<void(CommandLineFlag&)> visitor);
|
||||
|
||||
Reference in New Issue
Block a user