Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Alan Modra via Gdb-patches <gdb-patches@sourceware.org>
To: "Martin Liška" <mliska@suse.cz>
Cc: Tom Tromey <tom@tromey.com>,
	Alan Modra via Binutils <binutils@sourceware.org>,
	gdb-patches@sourceware.org
Subject: Re: [PATCH] Add startswith function and use it instead of CONST_STRNEQ.
Date: Tue, 23 Mar 2021 10:32:45 +1030	[thread overview]
Message-ID: <20210323000245.GZ6791@bubble.grove.modra.org> (raw)
In-Reply-To: <dbc2e30b-2031-1dec-def1-9e9a8d162901@suse.cz>

On Mon, Mar 22, 2021 at 05:42:50PM +0100, Martin Liška wrote:
> Anyway for the sim failures. What about directly including <string.h> in bfd-in.h?

That would be OK if we didn't care about really old systems.  See for
example the way bfd/sysdep.h includes string.h.

But all of this horrible old code that likely hasn't been tested is
eons should simply disappear.  Instead binutils should be using the
gnulib import already available in the binutils-gdb repository to
support old systems.  I've had that project on my todo list for quite
a while.  We'd be able to include stdint.h and stdbool.h for example,
throwing away bfd_stdint.h and replacing bfd_boolean with bool.

Meanwhile, this is a tidied version of the patch I sent you last
night, Tom.  If you already have one of your own then please ignore
this.

---
Subject: str-util.h

Defining startswith in bfd.h breaks sim targets that don't happen to
include string.h before bfd.h, and since bfd.h is exported, might
break other projects that use bfd.h.

include/
	* str-util.h: New file.
bfd/
	* sysdep.h: Include str-util.h.
	* bfd-in.h (startswith): Delete.
	* bfd-in2.h: Regenerate.
binutils/
	* sysdep.h: Include str-util.h.
gas/
	* as.h: Include str-util.h.
gdbsupport/
	* common-utils.h: Include str-util.h.
ld/
	* sysdep.h: Include str-util.h.
opcodes/
	* sysdep.h: Include str-util.h.

diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index fda9fe0198..92391bb6a3 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -554,11 +554,3 @@ struct ecoff_debug_swap;
 struct ecoff_extr;
 struct bfd_link_info;
 struct bfd_link_hash_entry;
-
-/* Return TRUE if the start of STR matches PREFIX, FALSE otherwise.  */
-
-static inline bfd_boolean
-startswith (const char *str, const char *prefix)
-{
-  return strncmp (str, prefix, strlen (prefix)) == 0;
-}
diff --git a/bfd/sysdep.h b/bfd/sysdep.h
index 338d731112..b04847ffc3 100644
--- a/bfd/sysdep.h
+++ b/bfd/sysdep.h
@@ -119,6 +119,8 @@ extern char *strrchr ();
 
 #include "filenames.h"
 
+#include "str-util.h"
+
 #if !HAVE_DECL_FFS
 extern int ffs (int);
 #endif
diff --git a/binutils/sysdep.h b/binutils/sysdep.h
index 183bb01653..022029a3f9 100644
--- a/binutils/sysdep.h
+++ b/binutils/sysdep.h
@@ -78,6 +78,8 @@ extern char *strrchr ();
 
 #include "binary-io.h"
 
+#include "str-util.h"
+
 #if !HAVE_DECL_STPCPY
 extern char *stpcpy (char *, const char *);
 #endif
diff --git a/gas/as.h b/gas/as.h
index d6ac208289..a0346ad062 100644
--- a/gas/as.h
+++ b/gas/as.h
@@ -97,6 +97,8 @@
 /* Define the standard progress macros.  */
 #include "progress.h"
 
+#include "str-util.h"
+
 /* Other stuff from config.h.  */
 #ifdef NEED_DECLARATION_ENVIRON
 extern char **environ;
diff --git a/gdbsupport/common-utils.h b/gdbsupport/common-utils.h
index 1de747f186..65569ffe78 100644
--- a/gdbsupport/common-utils.h
+++ b/gdbsupport/common-utils.h
@@ -45,6 +45,8 @@
 
 #include "gdb_string_view.h"
 
+#include "str-util.h"
+
 /* xmalloc(), xrealloc() and xcalloc() have already been declared in
    "libiberty.h". */
 
diff --git a/include/str-util.h b/include/str-util.h
new file mode 100644
index 0000000000..24aba56563
--- /dev/null
+++ b/include/str-util.h
@@ -0,0 +1,27 @@
+/* String utility functions used by GDB and binutils.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef STR_UTIL_H
+#define STR_UTIL_H
+
+/* Return 1 if the start of STR matches PREFIX, 0 otherwise.  */
+
+static inline int
+startswith (const char *str, const char *prefix)
+{
+  return strncmp (str, prefix, strlen (prefix)) == 0;
+}
+#endif
diff --git a/ld/sysdep.h b/ld/sysdep.h
index 206c02c8c5..9e97d2d95b 100644
--- a/ld/sysdep.h
+++ b/ld/sysdep.h
@@ -68,6 +68,8 @@ extern char *strrchr ();
 #include "fopen-same.h"
 #endif
 
+#include "str-util.h"
+
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #else
diff --git a/opcodes/sysdep.h b/opcodes/sysdep.h
index bcac6d851c..a0732861b7 100644
--- a/opcodes/sysdep.h
+++ b/opcodes/sysdep.h
@@ -52,6 +52,8 @@
 #endif
 #endif
 
+#include "str-util.h"
+
 #if !HAVE_DECL_STPCPY
 extern char *stpcpy (char *__dest, const char *__src);
 #endif


-- 
Alan Modra
Australia Development Lab, IBM

  reply	other threads:[~2021-03-23  0:02 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4d8880dd-4a83-f0fc-dafd-2079493d4093@suse.cz>
     [not found] ` <alpine.BSF.2.20.16.2103181426260.908@arjuna.pair.com>
     [not found]   ` <20210319063759.GM6791@bubble.grove.modra.org>
     [not found]     ` <b0e46fde-465a-8884-d3e7-2c441a4a62c1@suse.cz>
2021-03-20  7:00       ` Alan Modra via Gdb-patches
2021-03-20 18:58         ` Tom Tromey
2021-03-21 13:12           ` Alan Modra via Gdb-patches
2021-03-22  2:13             ` Tom Tromey
2021-03-22 12:06               ` Alan Modra via Gdb-patches
2021-03-22 16:13                 ` Luis Machado via Gdb-patches
2021-03-22 22:56                   ` Alan Modra via Gdb-patches
2021-03-25 10:53                     ` Luis Machado via Gdb-patches
2021-03-25 11:54                       ` Alan Modra via Gdb-patches
2021-03-25 12:05                         ` Luis Machado via Gdb-patches
2021-03-25 19:47                         ` Luis Machado via Gdb-patches
2021-03-25 22:31                           ` Mike Frysinger via Gdb-patches
2021-03-26 11:44                             ` Luis Machado via Gdb-patches
2021-03-30 11:58                               ` Luis Machado via Gdb-patches
2021-03-31 13:12                                 ` Martin Liška
2021-03-31 13:44                                   ` Luis Machado via Gdb-patches
2021-03-22 16:42                 ` Martin Liška
2021-03-23  0:02                   ` Alan Modra via Gdb-patches [this message]
2021-03-23  4:49                     ` Mike Frysinger via Gdb-patches
2021-03-31 20:18                     ` Tom Tromey
2021-03-22  6:57             ` Mike Frysinger via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210323000245.GZ6791@bubble.grove.modra.org \
    --to=gdb-patches@sourceware.org \
    --cc=amodra@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=mliska@suse.cz \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox