gdbarch: improve generation of validation in gdbarch getters
authorAndrew Burgess <aburgess@redhat.com>
Fri, 10 Mar 2023 15:13:55 +0000 (15:13 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Mon, 13 Mar 2023 21:51:04 +0000 (21:51 +0000)
commitc317ea5723689a4304760ff9f095e5f6df915f8d
tree106129b10c37c3581acd9b9879df842d7d427a14
parent350796840f7058bd0bdb4a3be2343014c3704de1
gdbarch: improve generation of validation in gdbarch getters

We currently generate some validation code within the gdbarch getter
methods.

This commit adjusts the algorithm used to generate this validation
slightly to make the gdbarch.py code (I think) clearer; there's no
significant changes to what is generated.

The validation algorithm for gdbarch values is now:

  - If the Value has an 'invalid' field that is a string, use that for
    validation,

  - If the Value has its 'predicate' field set to true, then check the
    predicate returns true, this ensures the predicate has been
    called,

  - If the Value has its 'invalid' field set to True, or the Value has
    'postdefault' field, then check the fields has changed from its
    initial value,

  - Otherwise no validation is performed.

The only changes after this commit are:

  - Some comments change slightly, and

  - For 'gcore_bfd_target' and 'max_insn_length' we now validate by
    calling the predicate rather than checking the field value
    directly, the underlying check being performed is unchanged
    though.

There should be no user visible changes after this commit.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/gdbarch.c
gdb/gdbarch.py