/* ldbuildid.c - Build Id support routines
- Copyright (C) 2013-2018 Free Software Foundation, Inc.
+ Copyright (C) 2013-2021 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
#endif
#define streq(a,b) strcmp ((a), (b)) == 0
-#define strneq(a,b,n) strncmp ((a), (b), (n)) == 0
-bfd_boolean
+bool
validate_build_id_style (const char *style)
{
if ((streq (style, "md5")) || (streq (style, "sha1"))
- || (streq (style, "uuid")) || (strneq (style, "0x", 2)))
- return TRUE;
+ || (streq (style, "uuid")) || (startswith (style, "0x")))
+ return true;
- return FALSE;
+ return false;
}
bfd_size_type
if (streq (style, "sha1"))
return 160 / 8;
- if (strneq (style, "0x", 2))
+ if (startswith (style, "0x"))
{
bfd_size_type size = 0;
/* ID is in string form (hex). Count the bytes. */
return 0;
}
-bfd_boolean
+bool
generate_build_id (bfd *abfd,
const char *style,
checksum_fn checksum_contents,
md5_init_ctx (&ctx);
if (!(*checksum_contents) (abfd, (sum_fn) &md5_process_bytes, &ctx))
- return FALSE;
+ return false;
md5_finish_ctx (&ctx, id_bits);
}
else if (streq (style, "sha1"))
sha1_init_ctx (&ctx);
if (!(*checksum_contents) (abfd, (sum_fn) &sha1_process_bytes, &ctx))
- return FALSE;
+ return false;
sha1_finish_ctx (&ctx, id_bits);
}
else if (streq (style, "uuid"))
int fd = open ("/dev/urandom", O_RDONLY);
if (fd < 0)
- return FALSE;
+ return false;
n = read (fd, id_bits, size);
close (fd);
if (n < size)
- return FALSE;
+ return false;
#else /* __MINGW32__ */
typedef RPC_STATUS (RPC_ENTRY * UuidCreateFn) (UUID *);
UUID uuid;
HMODULE rpc_library = LoadLibrary ("rpcrt4.dll");
if (!rpc_library)
- return FALSE;
- uuid_create = (UuidCreateFn) GetProcAddress (rpc_library, "UuidCreate");
+ return false;
+ uuid_create = (UuidCreateFn) (void (WINAPI *)(void)) GetProcAddress (rpc_library, "UuidCreate");
if (!uuid_create)
{
FreeLibrary (rpc_library);
- return FALSE;
+ return false;
}
if (uuid_create (&uuid) != RPC_S_OK)
{
FreeLibrary (rpc_library);
- return FALSE;
+ return false;
}
FreeLibrary (rpc_library);
memcpy (id_bits, &uuid,
(size_t) size < sizeof (UUID) ? (size_t) size : sizeof (UUID));
#endif /* __MINGW32__ */
}
- else if (strneq (style, "0x", 2))
+ else if (startswith (style, "0x"))
{
/* ID is in string form (hex). Convert to bits. */
const char *id = style + 2;
else
abort (); /* Should have been validated earlier. */
- return TRUE;
+ return true;
}