+2020-08-25 Alan Modra <amodra@gmail.com>
+
+ PR 26452
+ * som.c (som_compute_checksum): XOR 32-bit words in header,
+ not unsigned long sized words.
+
2020-08-25 Alan Modra <amodra@gmail.com>
PR 26430
static bfd_boolean som_is_space (asection *);
static bfd_boolean som_is_subspace (asection *);
static int compare_subspaces (const void *, const void *);
-static unsigned long som_compute_checksum (struct som_external_header *);
+static uint32_t som_compute_checksum (struct som_external_header *);
static bfd_boolean som_build_and_write_symbol_table (bfd *);
static unsigned int som_slurp_symbol_table (bfd *);
/* Compute and return the checksum for a SOM file header. */
-static unsigned long
+static uint32_t
som_compute_checksum (struct som_external_header *hdr)
{
- unsigned long checksum, count, i;
- unsigned long *buffer = (unsigned long *) hdr;
+ size_t count, i;
+ uint32_t checksum;
+ uint32_t *buffer = (uint32_t *) hdr;
checksum = 0;
- count = sizeof (struct som_external_header) / 4;
+ count = sizeof (*hdr) / sizeof (*buffer);
for (i = 0; i < count; i++)
checksum ^= *(buffer + i);