Skip to content

Commit

Permalink
- 6194c9b0d6dbdbeeb27b19d5c61562f985b25ff2 Removing support for NaCL…
Browse files Browse the repository at this point in the history
… in dynamic_annotations.h. by Abseil Team <absl-team@google.com>

  - 6f89386971a21422c4cd9653e965c96d9f7a3573 Fix handling of VDSOs that are loaded lower then their li... by Abseil Team <absl-team@google.com>
  - f27a7269ab714c9c75fe4e15fa1bce8b12531a92 Check that __GLIBC__ is defined before checking for __GLI... by Derek Mauro <dmauro@google.com>

GitOrigin-RevId: 6194c9b0d6dbdbeeb27b19d5c61562f985b25ff2
Change-Id: I3eceb6f76bf2b25d55d1f5f77fba57af947da0cf
  • Loading branch information
Abseil Team authored and jueminyang committed May 14, 2018
1 parent dd9911a commit add89fd
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 42 deletions.
21 changes: 0 additions & 21 deletions absl/base/dynamic_annotations.h
Expand Up @@ -50,25 +50,6 @@
# define DYNAMIC_ANNOTATIONS_ENABLED 0
#endif

#if defined(__native_client__)
#include "nacl/dynamic_annotations.h"

// Stub out the macros missing from the NaCl version.
#ifndef ANNOTATE_CONTIGUOUS_CONTAINER
#define ANNOTATE_CONTIGUOUS_CONTAINER(beg, end, old_mid, new_mid)
#endif
#ifndef ANNOTATE_RWLOCK_CREATE_STATIC
#define ANNOTATE_RWLOCK_CREATE_STATIC(lock)
#endif
#ifndef ADDRESS_SANITIZER_REDZONE
#define ADDRESS_SANITIZER_REDZONE(name)
#endif
#ifndef ANNOTATE_MEMORY_IS_UNINITIALIZED
#define ANNOTATE_MEMORY_IS_UNINITIALIZED(address, size)
#endif

#else /* !__native_client__ */

#if DYNAMIC_ANNOTATIONS_ENABLED != 0

/* -------------------------------------------------------------
Expand Down Expand Up @@ -404,6 +385,4 @@ inline T ANNOTATE_UNPROTECTED_READ(const volatile T &x) { /* NOLINT */
#undef ATTRIBUTE_IGNORE_READS_BEGIN
#undef ATTRIBUTE_IGNORE_READS_END

#endif /* !__native_client__ */

#endif /* ABSL_BASE_DYNAMIC_ANNOTATIONS_H_ */
2 changes: 1 addition & 1 deletion absl/base/policy_checks.h
Expand Up @@ -86,7 +86,7 @@
// in May, 2010 and includes some functionality used in Google software
// (for instance pthread_setname_np):
// https://sourceware.org/ml/libc-alpha/2010-05/msg00000.html
#ifdef __GLIBC_PREREQ
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
#if !__GLIBC_PREREQ(2, 12)
#error "Minimum required version of glibc is 2.12."
#endif
Expand Down
22 changes: 2 additions & 20 deletions absl/debugging/internal/elf_mem_image.cc
Expand Up @@ -121,7 +121,7 @@ const void *ElfMemImage::GetSymAddr(const ElfW(Sym) *sym) const {
return reinterpret_cast<const void *>(sym->st_value);
}
ABSL_RAW_CHECK(link_base_ < sym->st_value, "symbol out of range");
return GetTableElement<char>(ehdr_, 0, 1, sym->st_value) - link_base_;
return GetTableElement<char>(ehdr_, 0, 1, sym->st_value - link_base_);
}

const ElfW(Verdef) *ElfMemImage::GetVerdef(int index) const {
Expand Down Expand Up @@ -161,10 +161,6 @@ void ElfMemImage::Init(const void *base) {
if (!base) {
return;
}
const intptr_t base_as_uintptr_t = reinterpret_cast<uintptr_t>(base);
// Fake VDSO has low bit set.
const bool fake_vdso = ((base_as_uintptr_t & 1) != 0);
base = reinterpret_cast<const void *>(base_as_uintptr_t & ~1);
const char *const base_as_char = reinterpret_cast<const char *>(base);
if (base_as_char[EI_MAG0] != ELFMAG0 || base_as_char[EI_MAG1] != ELFMAG1 ||
base_as_char[EI_MAG2] != ELFMAG2 || base_as_char[EI_MAG3] != ELFMAG3) {
Expand Down Expand Up @@ -224,21 +220,7 @@ void ElfMemImage::Init(const void *base) {
reinterpret_cast<ElfW(Dyn) *>(dynamic_program_header->p_vaddr +
relocation);
for (; dynamic_entry->d_tag != DT_NULL; ++dynamic_entry) {
ElfW(Xword) value = dynamic_entry->d_un.d_val;
if (fake_vdso) {
// A complication: in the real VDSO, dynamic entries are not relocated
// (it wasn't loaded by a dynamic loader). But when testing with a
// "fake" dlopen()ed vdso library, the loader relocates some (but
// not all!) of them before we get here.
if (dynamic_entry->d_tag == DT_VERDEF) {
// The only dynamic entry (of the ones we care about) libc-2.3.6
// loader doesn't relocate.
value += relocation;
}
} else {
// Real VDSO. Everything needs to be relocated.
value += relocation;
}
const ElfW(Xword) value = dynamic_entry->d_un.d_val + relocation;
switch (dynamic_entry->d_tag) {
case DT_HASH:
hash_ = reinterpret_cast<ElfW(Word) *>(value);
Expand Down

0 comments on commit add89fd

Please sign in to comment.