X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Futils.h;h=71860191403508bbf706f4c2a6a0ab4e3269e1f7;hb=234529260a90b6ac6ed38ddac45d6ed15149e8f8;hp=76f0da69f712bce7f5559a37c4182d83d5352d8c;hpb=2a3c1174c3c0db1140180fb3fc56ac324d1c0a7c;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/utils.h b/gdb/utils.h index 76f0da69f7..7186019140 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -25,6 +25,10 @@ #include "gdbsupport/scoped_restore.h" #include +#ifdef HAVE_LIBXXHASH +#include +#endif + struct completion_match_for_lcd; class compiled_regex; @@ -101,8 +105,6 @@ extern int streq_hash (const void *, const void *); extern int subset_compare (const char *, const char *); -int compare_positive_ints (const void *ap, const void *bp); - /* Compare C strings for std::sort. */ static inline bool @@ -123,7 +125,7 @@ void reset_prompt_for_continue_wait_time (void); /* Return the time spent in prompt_for_continue. */ std::chrono::steady_clock::duration get_prompt_for_continue_wait_time (); -/* Parsing utilites. */ +/* Parsing utilities. */ extern int parse_pid_to_attach (const char *args); @@ -144,10 +146,7 @@ public: } /* A constructor that calls buildargv on STR. STR may be NULL, in - which case this object is initialized with a NULL array. If - buildargv fails due to out-of-memory, call malloc_failure. - Therefore, the value is guaranteed to be non-NULL, unless the - parameter itself is NULL. */ + which case this object is initialized with a NULL array. */ explicit gdb_argv (const char *str) : m_argv (NULL) @@ -569,4 +568,19 @@ extern void copy_bitwise (gdb_byte *dest, ULONGEST dest_offset, const gdb_byte *source, ULONGEST source_offset, ULONGEST nbits, int bits_big_endian); +/* A fast hashing function. This can be used to hash data in a fast way + when the length is known. If no fast hashing library is available, falls + back to iterative_hash from libiberty. START_VALUE can be set to + continue hashing from a previous value. */ + +static inline unsigned int +fast_hash (const void *ptr, size_t len, unsigned int start_value = 0) +{ +#ifdef HAVE_LIBXXHASH + return XXH64 (ptr, len, start_value); +#else + return iterative_hash (ptr, len, start_value); +#endif +} + #endif /* UTILS_H */