From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 777 invoked by alias); 27 Jun 2013 08:44:47 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 740 invoked by uid 89); 27 Jun 2013 08:44:47 -0000 X-Spam-SWARE-Status: No, score=-6.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD autolearn=ham version=3.3.1 Received: from mga09.intel.com (HELO mga09.intel.com) (134.134.136.24) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 27 Jun 2013 08:44:46 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 27 Jun 2013 01:42:22 -0700 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 27 Jun 2013 01:44:43 -0700 Received: from ulslx001.iul.intel.com (ulslx001.iul.intel.com [172.28.207.63]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id r5R8igSX009512; Thu, 27 Jun 2013 09:44:42 +0100 Received: from ulslx001.iul.intel.com (localhost [127.0.0.1]) by ulslx001.iul.intel.com with ESMTP id r5R8ighu003493; Thu, 27 Jun 2013 10:44:42 +0200 Received: (from mgherza1@localhost) by ulslx001.iul.intel.com with id r5R8igtf003489; Thu, 27 Jun 2013 10:44:42 +0200 From: Mircea Gherzan To: tromey@redhat.com, palves@redhat.com, jan.kratochvil@redhat.com Cc: gdb-patches@sourceware.org, Mircea Gherzan Subject: [PATCH 7/7] gdbserver: add fallback implementation for memmem Date: Thu, 27 Jun 2013 08:45:00 -0000 Message-Id: <1372322622-3216-8-git-send-email-mircea.gherzan@intel.com> In-Reply-To: <1372322622-3216-1-git-send-email-mircea.gherzan@intel.com> References: <1372322622-3216-1-git-send-email-mircea.gherzan@intel.com> X-SW-Source: 2013-06/txt/msg00814.txt.bz2 The memmem() function is a GNU extension. 2013-06-26 Mircea Gherzan gdbserver/ * configure.ac (AC_CHECK_FUNCS): Add memmem. * configure: Rebuild. * config.in: Rebuild. * server.c (memmem): New function, included only if it's not already provided by the system. Signed-off-by: Mircea Gherzan --- gdb/gdbserver/config.in | 3 +++ gdb/gdbserver/configure | 2 +- gdb/gdbserver/configure.ac | 2 +- gdb/gdbserver/server.c | 23 +++++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in index 4a5a51d..5ed56c3 100644 --- a/gdb/gdbserver/config.in +++ b/gdb/gdbserver/config.in @@ -97,6 +97,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H +/* Define to 1 if you have the `memmem' function. */ +#undef HAVE_MEMMEM + /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index 5df8fe3..874a899 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -4795,7 +4795,7 @@ fi done -for ac_func in pread pwrite pread64 readlink fdwalk pipe2 +for ac_func in pread pwrite pread64 readlink fdwalk pipe2 memmem 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" diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac index 8142e91..7cbc6ea 100644 --- a/gdb/gdbserver/configure.ac +++ b/gdb/gdbserver/configure.ac @@ -70,7 +70,7 @@ AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl netinet/tcp.h arpa/inet.h sys/wait.h wait.h sys/un.h dnl linux/perf_event.h sys/time.h sys/param.h) -AC_CHECK_FUNCS(pread pwrite pread64 readlink fdwalk pipe2) +AC_CHECK_FUNCS(pread pwrite pread64 readlink fdwalk pipe2 memmem) AC_REPLACE_FUNCS(vasprintf vsnprintf) # Check for UST diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index 4a1d1dc..99c2229 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -761,6 +761,29 @@ gdb_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) } } +#ifndef HAVE_MEMMEM + +/* Find the NEEDLE in the HAYSTACK and return its position. */ + +static void * +memmem (const void *haystack, size_t haystack_len, const void *needle, + size_t needle_len) +{ + size_t i; + const gdb_byte *p; + + for (i = 0; i <= haystack_len - needle_len; i++) + { + p = (gdb_byte *)haystack + i; + if (memcmp (p, needle, needle_len) == 0) + return p; + } + + return NULL; +} + +#endif + /* Subroutine of handle_search_memory to simplify it. */ static int -- 1.7.12.4