%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.