+gdbarch_significant_addr_bit (struct gdbarch *gdbarch)
+{
+ gdb_assert (gdbarch != NULL);
+ /* Skip verify of significant_addr_bit, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_significant_addr_bit called\n");
+ return gdbarch->significant_addr_bit;
+}
+
+void
+set_gdbarch_significant_addr_bit (struct gdbarch *gdbarch,
+ int significant_addr_bit)
+{
+ gdbarch->significant_addr_bit = significant_addr_bit;
+}
+
+std::string
+gdbarch_memtag_to_string (struct gdbarch *gdbarch, struct value *tag)
+{
+ gdb_assert (gdbarch != NULL);
+ gdb_assert (gdbarch->memtag_to_string != NULL);
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_memtag_to_string called\n");
+ return gdbarch->memtag_to_string (gdbarch, tag);
+}
+
+void
+set_gdbarch_memtag_to_string (struct gdbarch *gdbarch,
+ gdbarch_memtag_to_string_ftype memtag_to_string)
+{
+ gdbarch->memtag_to_string = memtag_to_string;
+}
+
+bool
+gdbarch_tagged_address_p (struct gdbarch *gdbarch, struct value *address)
+{
+ gdb_assert (gdbarch != NULL);
+ gdb_assert (gdbarch->tagged_address_p != NULL);
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_tagged_address_p called\n");
+ return gdbarch->tagged_address_p (gdbarch, address);
+}
+
+void
+set_gdbarch_tagged_address_p (struct gdbarch *gdbarch,
+ gdbarch_tagged_address_p_ftype tagged_address_p)
+{
+ gdbarch->tagged_address_p = tagged_address_p;
+}
+
+bool
+gdbarch_memtag_matches_p (struct gdbarch *gdbarch, struct value *address)
+{
+ gdb_assert (gdbarch != NULL);
+ gdb_assert (gdbarch->memtag_matches_p != NULL);
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_memtag_matches_p called\n");
+ return gdbarch->memtag_matches_p (gdbarch, address);
+}
+
+void
+set_gdbarch_memtag_matches_p (struct gdbarch *gdbarch,
+ gdbarch_memtag_matches_p_ftype memtag_matches_p)
+{
+ gdbarch->memtag_matches_p = memtag_matches_p;
+}
+
+bool
+gdbarch_set_memtags (struct gdbarch *gdbarch, struct value *address, size_t length, const gdb::byte_vector &tags, memtag_type tag_type)
+{
+ gdb_assert (gdbarch != NULL);
+ gdb_assert (gdbarch->set_memtags != NULL);
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_set_memtags called\n");
+ return gdbarch->set_memtags (gdbarch, address, length, tags, tag_type);
+}
+
+void
+set_gdbarch_set_memtags (struct gdbarch *gdbarch,
+ gdbarch_set_memtags_ftype set_memtags)
+{
+ gdbarch->set_memtags = set_memtags;
+}
+
+struct value *
+gdbarch_get_memtag (struct gdbarch *gdbarch, struct value *address, memtag_type tag_type)
+{
+ gdb_assert (gdbarch != NULL);
+ gdb_assert (gdbarch->get_memtag != NULL);
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_get_memtag called\n");
+ return gdbarch->get_memtag (gdbarch, address, tag_type);
+}
+
+void
+set_gdbarch_get_memtag (struct gdbarch *gdbarch,
+ gdbarch_get_memtag_ftype get_memtag)
+{
+ gdbarch->get_memtag = get_memtag;
+}
+
+CORE_ADDR
+gdbarch_memtag_granule_size (struct gdbarch *gdbarch)
+{
+ gdb_assert (gdbarch != NULL);
+ /* Skip verify of memtag_granule_size, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_memtag_granule_size called\n");
+ return gdbarch->memtag_granule_size;
+}
+
+void
+set_gdbarch_memtag_granule_size (struct gdbarch *gdbarch,
+ CORE_ADDR memtag_granule_size)
+{
+ gdbarch->memtag_granule_size = memtag_granule_size;
+}
+
+bool