Handling callable addresses


It seems Target::GetCallableLoadAddress does equivalent things for arm/thumb and for mipses, just written in different forms. May I join these cases together?

It's actually a little lame that we have a switch over architectures in generic Target code. This should be gotten from the architecture plugin. GetBreakableLoadAddress is even worse, there's ~150 lines of MIPS specific code in Target.cpp, which seems really wrong to me.

Not really answering your question except formally none of this code should be in Target.cpp...


We now have architecture plug-ins. Target::GetCallableLoadAddress should defer to the architecture plug-ins and any functionality should be moved into those plug-ins. There is one for ARM. We will need to make one for MIPS.


While creating the architecture plugin, I noticed that this code could
be moved there, but never got around to doing that. If the code is
indeed equivalent, then we can make a utility function or a common
base class that both plugins can then reuse.

Could you suggest any public buildbots where I can test such things for ARM, MIPS and others?