This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: "struct target_ops" -> "struct gdbtarg" || "struct target"


Andrew Cagney <ac131313@redhat.com> writes:


> Hello,
> The current "target_ops" structure appeared with GDB 4.  The
> original implementation containing only methods.  Since then the
> target_ops have evolved to include data vis:
>     struct section_table
>      *to_sections;
>     struct section_table
>      *to_sections_end;
> I think, the vector should be re-named to "struct target" or "struct
> gdbtarg" (consistent with gdbarch, and more name space proof) so
> that it correctly reflects its current implementation.
> I'd like to do this now, before the target methods start being
> explicitly parameterized with their target vector.


I should note that an alternative is to have "struct gdbarch" as the object and "struct target_ops" as the methods vis:

	struct target
	{
	  .. data elements ...;
	  const struct target_ops *ops;
	};


You mean 'struct target' not 'struct gdbarch', right?

Obviously.


> The second
alternative seems better to me, since it separates the static stuff
from the dynamic stuff.  (Except, of course, that the 'static' stuff
isn't actually static, because of update_current_target...)

While it seems better, it's significantly harder. It will involve a period of rope jumping (which will likely trip up everyone) during which code wanting to modify things like "target_ops.to_section_end" will co-exist with code wanting to modify "target.to_section_end". There are likely ways to ease the pain, but lets not ignore that there will be pain.


Given this, I think the most straight forward step is a straight:

"struct target_ops" -> "struct gdbtarg"

transformation. Moving the "ops" to a separate "static" vector being a second pass.

Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]