%FIRSTSTRU = type { i32, double, i32, i8* } struct { int var1; double var2; int var3; char *var4; }firstStru ; Could someone help? If, running a application in windows with MSVC, I allocate a memmory buffer and call a LLVM function with such buffer, there's a structure alignment problem. If the LLVM function call a C function using the same buffer, it runs fine. Any ideas? Thanks, Manoel Teixeira
On Mon, Jun 8, 2009 at 1:53 PM, Manoel Teixeira<manoel at fonetica.com.br> wrote:> > %FIRSTSTRU = type { i32, double, i32, i8* } > > struct { > int var1; > double var2; > int var3; > char *var4; > }firstStru ; > > Could someone help? > If, running a application in windows with MSVC, I allocate a memmory buffer and call a LLVM > function with such buffer, there's a structure alignment problem. > If the LLVM function call a C function using the same buffer, it runs fine. > Any ideas?You're probably passing in the wrong string to the TargetData; try something like the following: target datalayout "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32" -Eli
Hello> %FIRSTSTRU = type { i32, double, i32, i8* } > > struct { > int var1; > double var2; > int var3; > char *var4; > }firstStru ;LLVM type is not equivalent to mentioned C struct type. You need to insert padding field into LLVM type. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
Manoel Teixeira wrote:> %FIRSTSTRU = type { i32, double, i32, i8* } > > struct { > int var1; > double var2; > int var3; > char *var4; > }firstStru ; > > Could someone help? > If, running a application in windows with MSVC, I allocate a memmory buffer and call a LLVM > function with such buffer, there's a structure alignment problem. > If the LLVM function call a C function using the same buffer, it runs fine. > Any ideas?I think it's best if you send the bitcode produced by llvm-gcc/clang. Ciao, Duncan.