diff options
-rw-r--r-- | gdb/gdbarch.c | 13 | ||||
-rw-r--r-- | gdb/gdbarch.h | 4 | ||||
-rwxr-xr-x | gdb/gdbarch.sh | 21 |
3 files changed, 38 insertions, 0 deletions
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index f33536d..b23ec91 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -357,6 +357,19 @@ gdbarch_alloc (const struct gdbarch_info *info, } +/* Free a gdbarch struct. This should never happen in normal + operation --- once you've created a gdbarch, you keep it around. + However, if an architecture's init function encounters an error + building the structure, it may need to clean up a partially + constructed gdbarch. */ +void +gdbarch_free (struct gdbarch *arch) +{ + /* At the moment, this is trivial. */ + free (arch); +} + + /* Ensure that all values in a GDBARCH are reasonable. */ static void diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index ee695ab..8d37120 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -909,6 +909,10 @@ extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *ar extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep); +/* Helper function. Free a partially-constructed ``struct gdbarch''. */ +extern void gdbarch_free (struct gdbarch *); + + /* Helper function. Force an update of the current architecture. Used by legacy targets that have added their own target specific architecture manipulation commands. diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 66e16c5..32b8d94 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -512,6 +512,10 @@ extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *ar extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep); +/* Helper function. Free a partially-constructed \`\`struct gdbarch''. */ +extern void gdbarch_free (struct gdbarch *); + + /* Helper function. Force an update of the current architecture. Used by legacy targets that have added their own target specific architecture manipulation commands. @@ -961,6 +965,23 @@ cat <<EOF } EOF +# Free a gdbarch struct. +echo "" +echo "" +cat <<EOF +/* Free a gdbarch struct. This should never happen in normal + operation --- once you've created a gdbarch, you keep it around. + However, if an architecture's init function encounters an error + building the structure, it may need to clean up a partially + constructed gdbarch. */ +void +gdbarch_free (struct gdbarch *arch) +{ + /* At the moment, this is trivial. */ + free (arch); +} +EOF + # verify a new architecture echo "" echo "" |