Help for C++ compiler bug workaround RRS feed

  • General discussion

  • The C++ for ARM in the Application Builder has a bug.

    When compiling C++ programs for WEC2013 (Windows Embedded Compact 2013) the .EXE file is generated. Additionally the .PDB is created that contains debug information. Unfortunately the .PDB contains incorrect information about function parameters on the ARM platform if optimization is enabled.

    The ARM calling convention (ABI) uses registers r0-r3 for the first 4 parameters. But the debugger finds the PDB as the parameters would be on the stack. If optimization is disabled, the compiler pushes the registers r0-r4 to the stack in the function prolog code. In that case the PDB information is correct. But the optimization omits this push operation.

    How can we instruct the compiler to create debug information that matches the generated code? Is there anything else than disabling optimization?

    The compiler version is "Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50728.6 for ARM". The WEC2013 Update Version is 61. The updates 62,63, and 64 include only security fixes for the WEC2013 site. Reading the complete file list of these three updates show that there is no update for the build tools.
    • Edited by Harper23 Sunday, January 19, 2020 10:44 AM
    • Changed type Harper23 Thursday, June 11, 2020 1:43 PM No response
    Saturday, January 18, 2020 8:25 AM

All replies