[gdbserver] return ENOSYS if readlink not supported.

This reproduces on the GDBserver side what GDB does when readlink is
not supported.

gdb/gdbserver/ChangeLog:

        * configure.ac: Add readlink to AC_CHECK_FUNCS list.
        * configure, config.in: Regenerate.
        * hostio.c: Provide an alternate implementation if HAVE_READLINK
        is not defined.
This commit is contained in:
Joel Brobecker 2012-02-09 17:29:34 +00:00
parent 1916efaf84
commit f8255c2a40
5 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2012-02-09 Joel Brobecker <brobecker@adacore.com>
* configure.ac: Add readlink to AC_CHECK_FUNCS list.
* configure, config.in: Regenerate.
* hostio.c: Provide an alternate implementation if HAVE_READLINK
is not defined.
2012-02-02 Pedro Alves <palves@redhat.com>
Try SIGKILL first, then PTRACE_KILL.

View File

@ -128,6 +128,9 @@
/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H

View File

@ -4163,7 +4163,7 @@ fi
done
for ac_func in pread pwrite pread64
for ac_func in pread pwrite pread64 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"

View File

@ -43,7 +43,7 @@ AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
errno.h fcntl.h signal.h sys/file.h malloc.h dnl
sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
netinet/tcp.h arpa/inet.h sys/wait.h)
AC_CHECK_FUNCS(pread pwrite pread64)
AC_CHECK_FUNCS(pread pwrite pread64 readlink)
AC_REPLACE_FUNCS(memmem vasprintf vsnprintf)
# Check for UST

View File

@ -459,6 +459,7 @@ handle_unlink (char *own_buf)
static void
handle_readlink (char *own_buf, int *new_packet_len)
{
#if defined (HAVE_READLINK)
char filename[PATH_MAX], linkname[PATH_MAX];
char *p;
int ret, bytes_sent;
@ -485,6 +486,9 @@ handle_readlink (char *own_buf, int *new_packet_len)
to return a partial response, but simply fail. */
if (bytes_sent < ret)
sprintf (own_buf, "F-1,%x", FILEIO_ENAMETOOLONG);
#else /* ! HAVE_READLINK */
sprintf (own_buf, "F-1,%x", FILEIO_ENOSYS);
#endif
}
/* Handle all the 'F' file transfer packets. */