This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

app crashes when compiled with OTime O3 using RVDS 4.0

Note: This was originally posted on 1st December 2008 at http://forums.arm.com

Hi,
I am using RVDS 4.0 trial version. When I compile my app using OTime O3 compiler flag, the application crashes. But if I specify O2 then it is working properly.

My compiler flags are :

-DRVCT -DDYNAMIC_APP -DBREW --cpu=ARM926EJ-S --apcs=/ropi/interwork/norwpi -c -Otime -O2 --littleend --split_sections -zo


My linker flags are:

--split --reloc --entry AEEMod_Load --first AEEMod_Load --callgraph

please do let me know if i need to specify anything else in the compiler/linker flag options
  • Note: This was originally posted on 1st December 2008 at http://forums.arm.com

    There are a a couple of likely explanations:

    • When you compile with "-O3", the compiler uses multifile compilation by default. Where multifile compilation causes problems, it generally does so at compile time, though it might be worth adding the "-no_multifile" switch to check. If you're compiling one file at a time, this won't make any difference.
    • As you might expect, "-O3 -Otime" will produce larger code than "-O2 -Otime" as it aggressively optimizes for speed at the cost of code size. Thus, it's possible that your binary image has crossed a page boundary or exceeded some other size limit.
    Have a look at the RVCT reference manual to see if the side-effects of your options can cause the problems you are seeing in your specific system. "-Otime" is documented [url="http://infocenter.arm.com/help/topic/com.arm.doc.dui0348b/CIHCBJIF.html"]here[/url], and "-O3" is documented [url="http://infocenter.arm.com/help/topic/com.arm.doc.dui0348b/CIHGFGFB.html"]here[/url].

    I hope that helps,
    Jacob
  • Note: This was originally posted on 1st December 2008 at http://forums.arm.com

    In addition, it's also possible that you've done something in your code which isn't guaranteed to do what you think. The C specification is quite vague about a number of things, and turning up the optimization level can expose bugs in which the code makes assumptions about how data will be stored or handled. Finding these bugs can be very difficult.
  • Note: This was originally posted on 5th December 2008 at http://forums.arm.com

    I had same issues with RVDS 3.1, my application used to crash in -O3 -Otime optimization settings but worked fine till -O2. After applying the patch for the RVCT available on the ARM site it worked totally fine.

    RVDS 4.0 is quite new and I guess it might take some time for them to come up with patches for the same  ( If its required at all in the first place ). I dont know if u could fix the problem from Jacob`s suggestion, but this is another perspective to a similar problem.

    check out if any patches are available.