[llvm-dev] how to add padding to globals?
John Criswell via llvm-dev
llvm-dev at lists.llvm.org
Mon Dec 21 06:31:15 PST 2015
On 12/20/15 7:24 PM, Gry Gunvor via llvm-dev wrote:
> I want LLVM to add padding at the top of my globals. I also want
> expressions that evaluate globals to use a base address that skips
> over the padding. I'm looking for any suggestions as to where to
> change the size of a global and where to change the pointer value used
> when it occurs in an expression.
SAFECode has code which does this at the LLVM IR level. You can find it
(though you will need to update it to use the newer LLVM API).
The pass essentially looks for globals to align and pad. To pad the
objects, it create a new global of structure type: the first structure
element is the global's original type, and the second is an array of
bytes that adds the padding. Uses of the original global are then
replaced with a constant GEP expression that generates a pointer to the
first element of the new global.
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
Department of Computer Science, University of Rochester
More information about the llvm-dev