diff options
author | Michael Forney <mforney@mforney.org> | 2020-03-16 23:08:02 -0700 |
---|---|---|
committer | Mike Frysinger <vapier@chromium.org> | 2020-03-17 06:30:52 +0000 |
commit | 23e6fbf571a6638ce9642fc1f50baf1af0f54268 (patch) | |
tree | c3ec1270f8769b6baf2eacbc029de6adbd9b6603 /src | |
parent | Roll src/src/third_party/lss/ f70e2f164..fd00dbbd0 (2 commits) (diff) | |
download | breakpad-23e6fbf571a6638ce9642fc1f50baf1af0f54268.tar.xz |
Use ULONG_MAX instead of __WORDSIZE to determine native ELF architecture
__WORDSIZE is an internal libc definition. Instead, we can use
ULONG_MAX from limits.h, whose value corresponds to the machine's
native word size.
This allows us to remove the fallback definition of __WORDSIZE in
the Android compatibility headers.
Bug: google-breakpad:631
Change-Id: I7b9e6f3b2121f78ccad9e32bf26acac518aefd8f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2107100
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/common/android/include/elf.h | 11 | ||||
-rw-r--r-- | src/common/dwarf/elf_reader.cc | 17 | ||||
-rw-r--r-- | src/tools/linux/md2core/minidump-2-core.cc | 3 |
3 files changed, 11 insertions, 20 deletions
diff --git a/src/common/android/include/elf.h b/src/common/android/include/elf.h index b2a28df4..e6f0c672 100644 --- a/src/common/android/include/elf.h +++ b/src/common/android/include/elf.h @@ -109,17 +109,6 @@ typedef struct { } Elf64_Dyn; -// __WORDSIZE is GLibc-specific and used by Google Breakpad on Linux. -#ifndef __WORDSIZE -#if defined(__i386__) || defined(__ARM_EABI__) || defined(__mips__) -#define __WORDSIZE 32 -#elif defined(__x86_64__) || defined(__aarch64__) -#define __WORDSIZE 64 -#else -#error "Unsupported Android CPU ABI" -#endif -#endif - // The Android headers don't always define this constant. #ifndef EM_X86_64 #define EM_X86_64 62 diff --git a/src/common/dwarf/elf_reader.cc b/src/common/dwarf/elf_reader.cc index 4135a51a..7dc46fd2 100644 --- a/src/common/dwarf/elf_reader.cc +++ b/src/common/dwarf/elf_reader.cc @@ -20,8 +20,8 @@ // Although most of this code can deal with arbitrary ELF files of // either word size, the public ElfReader interface only examines // files loaded into the current address space, which must all match -// __WORDSIZE. This code cannot handle ELF files with a non-native -// byte ordering. +// the machine's native word size. This code cannot handle ELF files +// with a non-native byte ordering. // // TODO(chatham): It would be nice if we could accomplish this task // without using malloc(), so we could use it as the process is dying. @@ -30,12 +30,13 @@ #define _GNU_SOURCE // needed for pread() #endif -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/mman.h> -#include <unistd.h> #include <fcntl.h> +#include <limits.h> #include <string.h> +#include <sys/mman.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> #include <algorithm> #include <map> @@ -1053,9 +1054,9 @@ ElfReader::~ElfReader() { // The only word-size specific part of this file is IsNativeElfFile(). -#if __WORDSIZE == 32 +#if ULONG_MAX == 0xffffffff #define NATIVE_ELF_ARCH Elf32 -#elif __WORDSIZE == 64 +#elif ULONG_MAX == 0xffffffffffffffff #define NATIVE_ELF_ARCH Elf64 #else #error "Invalid word size" diff --git a/src/tools/linux/md2core/minidump-2-core.cc b/src/tools/linux/md2core/minidump-2-core.cc index 941586e9..a60be323 100644 --- a/src/tools/linux/md2core/minidump-2-core.cc +++ b/src/tools/linux/md2core/minidump-2-core.cc @@ -33,6 +33,7 @@ #include <elf.h> #include <errno.h> +#include <limits.h> #include <link.h> #include <stdio.h> #include <stdlib.h> @@ -54,7 +55,7 @@ #include "third_party/lss/linux_syscall_support.h" #include "tools/linux/md2core/minidump_memory_range.h" -#if __WORDSIZE == 64 +#if ULONG_MAX == 0xffffffffffffffff #define ELF_CLASS ELFCLASS64 #else #define ELF_CLASS ELFCLASS32 |