add to_identity
Right now a target_ops has an odd sense of identity. Most times some identity is needed, a pointer to a static object is passed in. For example, calls to unpush_target generally work like this: unpush_target (&exec_ops); Conceptually this is a kind of "instanceof" checking. Now, consider this with "to_xclose" targets. In this case the target_ops is allocated on the heap and there's no good way to talk about the identity. Code could remember the pointer, of course, but this usually just begs the question. For example in a to_open implementation it is reasonably normal to check target_is_pushed and then do nothing if the target is pushed. However, there's no reasonable way way to do this with a to_xclose target. This patch introduces a to_identity field that just points to the "prototype" implementation of a target_ops. This lets us convert targets to to_xclose without difficulty. 2014-07-29 Tom Tromey <tromey@redhat.com> * bfd-target.c (target_bfd_reopen): Set to_identity. * target.c (complete_target_initialization): Set to_identity. (unpush_target): Check to_identity. Call target_close on the real target. (target_is_pushed): Check to_identity. * target.h (struct target_ops) <to_identity>: New field.
Loading
Please register or sign in to comment