[LLVMdev] Extend llvm to fix global addresses
Peter Cooper
peter_cooper at apple.com
Mon Dec 5 19:18:36 PST 2011
Hi all
It would be nice to add support for placing globals at fixed addresses in memory.
For example, low level driver code tends to contain things like this
*(int*)0x00001000
which is horrible.
Alternatively people are using linker scripts and assembly hacks to put symbols at fixed addresses.
I propose we add first class support to this in the compiler. Like addrspace(#) we should have something like fixedaddr(#) to put a symbol at the address specified (naming is open to suggestions)
Support for this would be needed in the following places:
Clang - with suggestions open to syntax, particularly if anyone knows of existing compilers with syntax for this
IR - "fixedaddr" as above with new attribute on globals (and probably on functions if there's a need to bind functions to fixed addresses too)
Object files - this might be possible within current formats like ELF by doing horrible things with relocations, but we'll have to experiment
Linker - like object file support, but additionally would be nice to improve them to the point where we can avoid using linker scripts to do this
Comments are very welcome.
Thanks,
Pete
More information about the llvm-dev
mailing list