Position independent code and symbol table providing shared library in bare metal app

Riccardo Manfrin riccardomanfrin@gmail.com
Sun Jun 2 17:03:00 GMT 2013


Hi list,
I'm working with a project that needs on air reprogramming on a cortexm3 
architecture with gcc 4.8.1, target arm-none-eabi.

The final outcome of the project would have to be a user application 
that relies on a shared library that I can dynamically update.

For the purpose, I'd need
- the shared library code to be position independent (all addresses and 
jumps should have to be relative and not absolute[right?]),
- the user application to be able to fetch the required symbols 
addresses from a table that allow library symbols remapping without the 
app having to be aware of that.

By fulfilling these requisites, I would have the user application rely 
on a fixed place symbols table, with a fixed number of symbols, that 
would target arbitrary locations. when updating the library I would 
rewrite the symbols table with the new positions of the library 
functions in the memory. Relative addressing (position independency) 
would allow me to place the library at arbitrary position in flash while 
preserving jumping instructions coherence.

If you can address me in any way I'd appreciate that.

Thanks in advance.
RM






More information about the Gcc-help mailing list