Looking at how Symbion handles syncing SimProcedure addresses, it appears it's not able to properly update them when the binary is PIC.
With that in mind, I'd propose adding another (perhaps optional) method to the Concrete class. Something like symbol_address. It would simply take in a symbol and, if the harness knew how to handle it, could get back either the resolved address for that symbol or None if not resolved.
This would both allow for using simprocs on pic code, and also take away the burden of needing to try to keep up with backend changes of how angr handles simproc registration and such.
Looking at how Symbion handles syncing SimProcedure addresses, it appears it's not able to properly update them when the binary is PIC.
With that in mind, I'd propose adding another (perhaps optional) method to the Concrete class. Something like
symbol_address
. It would simply take in a symbol and, if the harness knew how to handle it, could get back either the resolved address for that symbol or None if not resolved.This would both allow for using simprocs on pic code, and also take away the burden of needing to try to keep up with backend changes of how angr handles simproc registration and such.