Re: [PATCH 3/4] Drop use of bfd_boolean from findcmd.c

Guinevere Larsen <[email protected]>
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
On 3/7/26 3:20 PM, Tom Tromey wrote:
> This changes findcmd.c to remove the use of bfd_boolean.  Instead, the
> byte order is used directly.  put_bits is also rewritten in terms of
> store_unsigned_integer.
> ---
>   gdb/findcmd.c | 33 +++++++++++++--------------------
>   1 file changed, 13 insertions(+), 20 deletions(-)
>
> diff --git a/gdb/findcmd.c b/gdb/findcmd.c
> index c4ee0ec97e4..b52c44d48d0 100644
> --- a/gdb/findcmd.c
> +++ b/gdb/findcmd.c
> @@ -24,27 +24,20 @@
>   #include "cli/cli-utils.h"
>   #include <algorithm>
>   #include "gdbsupport/byte-vector.h"
> +#include "extract-store-integer.h"
>   
> -/* Copied from bfd_put_bits.  */
> +/* Append DATA to BUF, writing only the specified number of bits,
> +   using the given endian-ness.  */
I think that this comment should probably specify that it should be an 
integer number of bytes, because I thought you could have like 9 bits 
and was wondering how the code managed that (I misread the diff thinking 
the assert was removed).
>   
>   static void
> -put_bits (uint64_t data, gdb::byte_vector &buf, int bits, bfd_boolean big_p)
> +put_bits (uint64_t data, gdb::byte_vector &buf, int bits,
> +	  bfd_endian byte_order)
>   {
> -  int i;
> -  int bytes;
> -
>     gdb_assert (bits % 8 == 0);
> -
> -  bytes = bits / 8;
> +  int bytes = bits / 8;
>     size_t last = buf.size ();
>     buf.resize (last + bytes);
> -  for (i = 0; i < bytes; i++)
> -    {
> -      int index = big_p ? bytes - i - 1 : i;
> -
> -      buf[last + index] = data & 0xff;
> -      data >>= 8;
> -    }
> +  store_unsigned_integer (&buf[last], bytes, byte_order, data);
>   }
>   
>   /* Subroutine of find_command to simplify it.
> @@ -53,7 +46,7 @@ put_bits (uint64_t data, gdb::byte_vector &buf, int bits, bfd_boolean big_p)
>   static gdb::byte_vector
>   parse_find_args (const char *args, ULONGEST *max_countp,
>   		 CORE_ADDR *start_addrp, ULONGEST *search_space_lenp,
> -		 bfd_boolean big_p)
> +		 bfd_endian byte_order)
>   {
>     /* Default to using the specified type.  */
>     char size = '\0';
> @@ -171,13 +164,13 @@ parse_find_args (const char *args, ULONGEST *max_countp,
>   	      pattern_buf.push_back (x);
>   	      break;
>   	    case 'h':
> -	      put_bits (x, pattern_buf, 16, big_p);
> +	      put_bits (x, pattern_buf, 16, byte_order);
>   	      break;
>   	    case 'w':
> -	      put_bits (x, pattern_buf, 32, big_p);
> +	      put_bits (x, pattern_buf, 32, byte_order);
>   	      break;
>   	    case 'g':
> -	      put_bits (x, pattern_buf, 64, big_p);
> +	      put_bits (x, pattern_buf, 64, byte_order);
>   	      break;
>   	    }
>   	}
> @@ -210,7 +203,7 @@ static void
>   find_command (const char *args, int from_tty)
>   {
>     struct gdbarch *gdbarch = get_current_arch ();
> -  bfd_boolean big_p = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG;
> +  bfd_endian byte_order = gdbarch_byte_order (gdbarch);
>     /* Command line parameters.
>        These are initialized to avoid uninitialized warnings from -Wall.  */
>     ULONGEST max_count = 0;
> @@ -223,7 +216,7 @@ find_command (const char *args, int from_tty)
>     gdb::byte_vector pattern_buf = parse_find_args (args, &max_count,
>   						  &start_addr,
>   						  &search_space_len,
> -						  big_p);
> +						  byte_order);
>   
>     /* Perform the search.  */
>   
>

-- 
Cheers,
Guinevere Larsen
it/its
she/her (deprecated)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.