diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a0b1c0..b787631 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -125,8 +125,11 @@
 endif (Unwind_FOUND)
 
 check_include_file_cxx (dlfcn.h HAVE_DLFCN_H)
+check_include_file_cxx (elf.h HAVE_ELF_H)
 check_include_file_cxx (glob.h HAVE_GLOB_H)
+check_include_file_cxx (link.h HAVE_LINK_H)
 check_include_file_cxx (pwd.h HAVE_PWD_H)
+check_include_file_cxx (sys/exec_elf.h HAVE_SYS_EXEC_ELF_H)
 check_include_file_cxx (sys/syscall.h HAVE_SYS_SYSCALL_H)
 check_include_file_cxx (sys/time.h HAVE_SYS_TIME_H)
 check_include_file_cxx (sys/types.h HAVE_SYS_TYPES_H)
@@ -275,9 +278,9 @@
       set (HAVE_STACKTRACE 1)
     endif (HAVE_SYMBOLIZE)
   elseif (UNIX)
-    cmake_push_check_state (RESET)
-    check_cxx_symbol_exists (__ELF__ "" HAVE_SYMBOLIZE)
-    cmake_pop_check_state ()
+    if (HAVE_ELF_H OR HAVE_SYS_EXEC_ELF_H)
+      set (HAVE_SYMBOLIZE 1)
+    endif (HAVE_ELF_H OR HAVE_SYS_EXEC_ELF_H)
   elseif (APPLE AND HAVE_DLADDR)
     set (HAVE_SYMBOLIZE 1)
   endif (WIN32 OR CYGWIN)
diff --git a/bazel/glog.bzl b/bazel/glog.bzl
index 10cf3d2..199fe01 100644
--- a/bazel/glog.bzl
+++ b/bazel/glog.bzl
@@ -86,11 +86,13 @@
     freebsd_only_copts = [
         # Enable declaration of _Unwind_Backtrace
         "-D_GNU_SOURCE",
+        "-DHAVE_LINK_H",
     ]
 
     linux_only_copts = [
         # For utilities.h.
         "-DHAVE_EXECINFO_H",
+        "-DHAVE_LINK_H",
     ]
 
     darwin_only_copts = [
diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in
index f60570a..2347d74 100644
--- a/src/config.h.cmake.in
+++ b/src/config.h.cmake.in
@@ -52,6 +52,15 @@
 /* Define to 1 if you have the <syslog.h> header file. */
 #cmakedefine HAVE_SYSLOG_H
 
+/* Define to 1 if you have the <elf.h> header file. */
+#cmakedefine HAVE_ELF_H
+
+/* Define to 1 if you have the <sys/exec_elf.h> header file. */
+#cmakedefine HAVE_SYS_EXEC_ELF_H
+
+/* Define to 1 if you have the <link.h> header file. */
+#cmakedefine HAVE_LINK_H
+
 /* Define to 1 if you have the <sys/syscall.h> header file. */
 #cmakedefine HAVE_SYS_SYSCALL_H
 
diff --git a/src/symbolize.cc b/src/symbolize.cc
index 09bc9eb..11a9872 100644
--- a/src/symbolize.cc
+++ b/src/symbolize.cc
@@ -109,16 +109,11 @@
 }  // namespace glog_internal_namespace_
 }  // namespace google
 
-#  if defined(__ELF__)
+#  if defined(HAVE_LINK_H)
 
 #    if defined(HAVE_DLFCN_H)
 #      include <dlfcn.h>
 #    endif
-#    if defined(GLOG_OS_OPENBSD)
-#      include <sys/exec_elf.h>
-#    else
-#      include <elf.h>
-#    endif
 #    include <fcntl.h>
 #    include <sys/stat.h>
 #    include <sys/types.h>
diff --git a/src/symbolize.h b/src/symbolize.h
index dfd5fec..d9ca52d 100644
--- a/src/symbolize.h
+++ b/src/symbolize.h
@@ -61,6 +61,14 @@
 #include "config.h"
 #include "glog/platform.h"
 
+#if defined(HAVE_LINK_H)
+#  include <link.h>  // For ElfW() macro.
+#elif defined(HAVE_ELF_H)
+#  include <elf.h>
+#elif defined(HAVE_SYS_EXEC_ELF_H)
+#  include <sys/exec_elf.h>
+#endif
+
 #if defined(GLOG_USE_GLOG_EXPORT)
 #  include "glog/export.h"
 #endif
@@ -72,7 +80,7 @@
 #ifndef GLOG_NO_SYMBOLIZE_DETECTION
 #  ifndef HAVE_SYMBOLIZE
 // defined by gcc
-#    if defined(__ELF__) && defined(GLOG_OS_LINUX)
+#    if defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H)
 #      define HAVE_SYMBOLIZE
 #    elif defined(GLOG_OS_MACOSX) && defined(HAVE_DLADDR)
 // Use dladdr to symbolize.
@@ -86,26 +94,11 @@
 
 #ifdef HAVE_SYMBOLIZE
 
-#  if defined(__ELF__)  // defined by gcc
-#    if defined(__OpenBSD__)
-#      include <sys/exec_elf.h>
-#    else
-#      include <elf.h>
-#    endif
+#  if !defined(SIZEOF_VOID_P) && defined(__SIZEOF_POINTER__)
+#    define SIZEOF_VOID_P __SIZEOF_POINTER__
+#  endif
 
-#    if !defined(GLOG_OS_ANDROID)
-#      include <link.h>  // For ElfW() macro.
-#    endif
-
-// For systems where SIZEOF_VOID_P is not defined, determine it
-// based on __LP64__ (defined by gcc on 64-bit systems)
-#    if !defined(SIZEOF_VOID_P)
-#      if defined(__LP64__)
-#        define SIZEOF_VOID_P 8
-#      else
-#        define SIZEOF_VOID_P 4
-#      endif
-#    endif
+#  if defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H)
 
 // If there is no ElfW macro, let's define it by ourself.
 #    ifndef ElfW
@@ -130,7 +123,7 @@
 }  // namespace glog_internal_namespace_
 }  // namespace google
 
-#  endif /* __ELF__ */
+#  endif
 
 namespace google {
 inline namespace glog_internal_namespace_ {
diff --git a/src/symbolize_unittest.cc b/src/symbolize_unittest.cc
index 30945c1..f07484e 100644
--- a/src/symbolize_unittest.cc
+++ b/src/symbolize_unittest.cc
@@ -40,6 +40,7 @@
 #include "glog/logging.h"
 #include "googletest.h"
 #include "utilities.h"
+#include "stacktrace.h"
 
 #ifdef GLOG_USE_GFLAGS
 #  include <gflags/gflags.h>
@@ -60,7 +61,8 @@
 
 #  define always_inline
 
-#  if defined(__ELF__) || defined(GLOG_OS_WINDOWS) || defined(GLOG_OS_CYGWIN)
+#  if defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H) || \
+      defined(GLOG_OS_WINDOWS) || defined(GLOG_OS_CYGWIN)
 // A wrapper function for Symbolize() to make the unit test simple.
 static const char* TrySymbolize(void* pc, google::SymbolizeOptions options =
                                               google::SymbolizeOptions::kNone) {
@@ -73,8 +75,7 @@
 }
 #  endif
 
-#  if defined(__ELF__)
-
+#  if defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H)
 // This unit tests make sense only with GCC.
 // Uses lots of GCC specific features.
 #    if defined(__GNUC__) && !defined(__OPENCC__)
@@ -449,15 +450,15 @@
 #    endif
   cout << "Test case TestWithReturnAddress passed." << endl;
 }
-#  endif  // __ELF__
-#endif    // HAVE_STACKTRACE
+#  endif
+#endif  // HAVE_STACKTRACE
 
 int main(int argc, char** argv) {
   FLAGS_logtostderr = true;
   InitGoogleLogging(argv[0]);
   InitGoogleTest(&argc, argv);
 #if defined(HAVE_SYMBOLIZE) && defined(HAVE_STACKTRACE)
-#  if defined(__ELF__)
+#  if defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H)
   // We don't want to get affected by the callback interface, that may be
   // used to install some callback function at InitGoogle() time.
   InstallSymbolizeCallback(nullptr);
@@ -472,7 +473,7 @@
 #  else   // GLOG_OS_WINDOWS
   printf("PASS (no symbolize_unittest support)\n");
   return 0;
-#  endif  // __ELF__
+#  endif  // defined(HAVE_ELF_H) || defined(HAVE_SYS_EXEC_ELF_H)
 #else
   printf("PASS (no symbolize support)\n");
   return 0;
