My change
1ac72f0659d64d6a14da862242db0d841d2878d0 ("sim: convert to
bfd_endian") subtly broke the watchpoint module on little endian host
systems. The old code used 0 to mean "whatever the host endian is",
and while that was changed to use BFD_ENDIAN_UNKNOWN, this caller was
missed. Since its API used an int instead of an enum, the coercion
from 0 to the BFD endian enum was silently missed, and 0 happens to
be BFD_ENDIAN_BIG.
Instead of restoring the old logic by passing in BFD_ENDIAN_UNKNOWN,
we know the right host endian at compile time, so use that directly.
+2021-01-13 Mike Frysinger <vapier@gentoo.org>
+
+ * sim-events.c (sim_events_watch_sim): Change byte_order type to
+ enum bfd_endian.
+ (sim_events_watch_core): Likewise.
+ * sim-events.h (sim_events_watch_sim, sim_events_watch_core): Likewise.
+ * sim-watch.c (schedule_watchpoint): Change 0 to HOST_BYTE_ORDER in
+ call to sim_events_watch_sim.
+
2021-01-12 Mike Frysinger <vapier@gentoo.org>
* sim-profile.h [!WITH_PROFILE]: Rewrite to use #error.
sim_events_watch_sim (SIM_DESC sd,
void *host_addr,
int nr_bytes,
- int byte_order,
+ enum bfd_endian byte_order,
int is_within,
unsigned64 lb,
unsigned64 ub,
address_word core_addr,
unsigned core_map,
int nr_bytes,
- int byte_order,
+ enum bfd_endian byte_order,
int is_within,
unsigned64 lb,
unsigned64 ub,
(SIM_DESC sd,
void *host_addr,
int nr_bytes,
- int byte_order,
+ enum bfd_endian byte_order,
int is_within,
unsigned64 lb,
unsigned64 ub,
address_word core_addr,
unsigned map,
int nr_bytes,
- int byte_order,
+ enum bfd_endian byte_order,
int is_within,
unsigned64 lb,
unsigned64 ub,
point->event = sim_events_watch_sim (sd,
watch->pc,
watch->sizeof_pc,
- 0/* host-endian */,
+ HOST_BYTE_ORDER,
point->is_within,
point->arg0, point->arg1,
/* PC in arg0..arg1 */