digitalmars.D.learn - 16 byte alignment
I'm working with 64bit iasm and I would like to have some constant data
16 byte aligned.
I have near the top of my source file:
__gshared immutable
{
ulong[2] sse_0F = [0x0F0F_0F0F_0F0F_0F0F,0x0F0F_0F0F_0F0F_0F0F];
ulong[2] sse_30 = [0x3030_3030_3030_3030,0x3030_3030_3030_3030];
}
However getting this to be 16 byte aligned is a bit of a headache.
I noticed in the DMD changelog:
DMD 2.007
"Data items in static data segment >= 16 bytes in size are now paragraph
aligned."
I have no idea what "paragraph aligned" means.
If it's not possible, could someone point me whereabouts in the dmd
source is responsible for static data alignment?
Jun 02 2011
I made the Following change to backend/elfobj.c
I have no idea what I just did but it has solved my problem
Could anyone explain?
-- align16.patch --
diff --u a/src/backend/elfobj.c b/src/backend/elfobj.c
--- a/src/backend/elfobj.c
+++ b/src/backend/elfobj.c
-683,7 +683,7 void obj_init(Outbuffer *objbuf, const char *filename,
const char *csegname)
elf_newsection2(0, SHT_NULL, 0,
0,0,0,0,0, 0,0);
elf_newsection2(NAMIDX_TEXT,SHT_PROGDEF,SHF_ALLOC|SHF_
XECINSTR,0,0,0,0,0, 4,0);
elf_newsection2(NAMIDX_RELTEXT,SHT_RELA, 0,0,0,0,SHI_SYMTAB,
SHI_TEXT, 8,0x18);
- elf_newsection2(NAMIDX_DATA,SHT_PROGDEF,SHF_ALLOC|SHF_WRITE,
0,0,0,0,0, 8,0);
+ elf_newsection2(NAMIDX_DATA,SHT_PROGDEF,SHF_ALLOC|SHF_WRITE,
0,0,0,0,0, 16,0);
elf_newsection2(NAMIDX_RELDATA64,SHT_RELA, 0,0,0,0,SHI_SYMTAB,
SHI_DATA, 8,0x18);
elf_newsection2(NAMIDX_BSS, SHT_NOBITS,SHF_ALLOC|SHF_WRITE,
0,0,0,0,0, 16,0);
elf_newsection2(NAMIDX_RODATA,SHT_PROGDEF,SHF_ALLOC,
0,0,0,0,0, 16,0);
Jun 03 2011








Shahid <Shahid party.van>