[LLVMdev] wxGTK sample app compiled by llvm crashes on arm

ankur jain samyak3 at gmail.com
Fri Dec 3 04:16:20 PST 2010


* *Hello,

I am using llvm-2.7 to run a native(executable) on a arm processor.

I have built my wxGtk sample app with llvm-gcc as frontend .

I am using llvm-2.7 and llvm-gcc-4.2.

I built llvm-2.7   with:

../llvm-2.7/configure --prefix=/home/install-llvm  --enable-optimized
--enable-assertions

and llvm gcc with:

../llvm-gcc-4.2-2.7.source/configure --prefix=/home//gcc-disable-shared
--enable-languages=c++,c --enable-checking --enable-llvm=/home/ llvm-objects
--disable-bootstrap --disable-multilib
Now from Samples, I am compiling minimal.cpp by llvm-gcc (binary for x86)
using the following commands:

*Step 1. llvm-gcc -O3 -emit-llvm minimal.cpp -c -o minimal.bc `wxconfig
–cxxflags`*

*Step 2. llc minimal.bc  –march=arm –o minimal.s   (*for generating arm
assembly code*)*

*Step 3 arm_v7_vfp_le-gcc minimal.s –o minimal.native `wxconfig –libs` (*arm
compiler to compile this assembly code into native executable*)*

Now when I am running this native executable on my target it is crashing in
g_object new(). However, if I build my application(wxGTK application) with a
memory allocation using new in the very start, the same exe now would run
successfully.

For your reference I am posting both the codes:

*Case 1: Crash* at a point when it tries to allocate memory in making an
object of MyFrame in the code below.
bool MyApp::OnInit()
{
        if ( !wxApp::OnInit() )
                return false;
                // create the main application window
        MyFrame *frame = new MyFrame(_T("Minimal wxWidgets App"));
        frame->Show(true);
         return true;
}

*Case 2*: The code below is same as above except the first line in the
function body and it *runs fine* .
bool MyApp::OnInit()
{
  *   char *ptr = new char[10000];*
     if ( !wxApp::OnInit() )
                return false;
                // create the main application window
        MyFrame *frame = new MyFrame(_T("Minimal wxWidgets App"));
        frame->Show(true);
         return true;
}

Can anybody give us an explanation for this??

How does using *new *in the start makes a difference??



Thanks & Regards,

Ankur Jain

Senior Software Engineer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20101203/e3c6213f/attachment.html>


More information about the llvm-dev mailing list