aboutsummaryrefslogtreecommitdiff
path: root/libbacktrace
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-22 13:38:10 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-22 13:38:10 +0000
commit7b3574e4981235f2f04ec12f55d1cae7bc5518f5 (patch)
tree45668dec72f6f6dbdf72fb967ca86b70695798e0 /libbacktrace
parent3cbe14441c82b3d0b4f29452f883bb9145da2241 (diff)
PR sanitizer/77631
* configure.ac: Check for lstat and readlink. * elf.c (lstat, readlink): Provide dummy versions if real versions are not available. * configure, config.h.in: Rebuild. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253095 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libbacktrace')
-rw-r--r--libbacktrace/ChangeLog8
-rw-r--r--libbacktrace/config.h.in6
-rwxr-xr-xlibbacktrace/configure13
-rw-r--r--libbacktrace/configure.ac1
-rw-r--r--libbacktrace/elf.c29
5 files changed, 57 insertions, 0 deletions
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index d611a1fb4e7..ed996781c06 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,11 @@
+2017-09-22 Ian Lance Taylor <iant@golang.org>
+
+ PR sanitizer/77631
+ * configure.ac: Check for lstat and readlink.
+ * elf.c (lstat, readlink): Provide dummy versions if real versions
+ are not available.
+ * configure, config.h.in: Rebuild.
+
2017-09-21 Ian Lance Taylor <iant@google.com>
PR go/82284
diff --git a/libbacktrace/config.h.in b/libbacktrace/config.h.in
index 9fc771564ba..1c38e8ed3b5 100644
--- a/libbacktrace/config.h.in
+++ b/libbacktrace/config.h.in
@@ -37,9 +37,15 @@
/* Define if AIX loadquery is available. */
#undef HAVE_LOADQUERY
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
diff --git a/libbacktrace/configure b/libbacktrace/configure
index 3ef933110c0..660a7786d76 100755
--- a/libbacktrace/configure
+++ b/libbacktrace/configure
@@ -12708,6 +12708,19 @@ cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_STRNLEN $ac_have_decl
_ACEOF
+for ac_func in lstat readlink
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
# Check for getexecname function.
if test -n "${with_target_subdir}"; then
diff --git a/libbacktrace/configure.ac b/libbacktrace/configure.ac
index 97e6e960829..c88122d8555 100644
--- a/libbacktrace/configure.ac
+++ b/libbacktrace/configure.ac
@@ -373,6 +373,7 @@ if test "$have_fcntl" = "yes"; then
fi
AC_CHECK_DECLS(strnlen)
+AC_CHECK_FUNCS(lstat readlink)
# Check for getexecname function.
if test -n "${with_target_subdir}"; then
diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c
index eb7d303712a..fac46860a54 100644
--- a/libbacktrace/elf.c
+++ b/libbacktrace/elf.c
@@ -75,6 +75,35 @@ xstrnlen (const char *s, size_t maxlen)
#endif
+#ifndef HAVE_LSTAT
+
+/* Dummy version of lstat for systems that don't have it. */
+
+static int
+xlstat (const char *path ATTRIBUTE_UNUSED, struct stat *st ATTRIBUTE_UNUSED)
+{
+ return -1;
+}
+
+#define lstat xlstat
+
+#endif
+
+#ifndef HAVE_READLINK
+
+/* Dummy version of readlink for systems that don't have it. */
+
+static ssize_t
+xreadlink (const char *path ATTRIBUTE_UNUSED, char *buf ATTRIBUTE_UNUSED,
+ size_t bufsz ATTRIBUTE_UNUSED)
+{
+ return -1;
+}
+
+#define readlink xreadlink
+
+#endif
+
#ifndef HAVE_DL_ITERATE_PHDR
/* Dummy version of dl_iterate_phdr for systems that don't have it. */