title: Debugger stops inside mathematical functions that have floating point arguments
body: <p>I'm using <code>Keil uVision</code> with <code>gcc</code> compiler (Sourcery Codebenchlite for ARM EABI ) to program the <code>STM32F4 cortex M4</code> chip. </p>
  
  <p>The compiler control strings I have set are: </p>
  
  <pre><code>-march=armv7e-m -mfpu=fpv4-sp-d16  -mfloat-abi=softfp -std=gnu99 -fsingle-precision-constant
  </code></pre>
  
  <p>When the debugger encounters some mathematical functions (e.g. <code>asinf()</code>, <code>atan2f()</code> etc), it stops.</p>
  
  <p>I have checked that the arguments for these functions are also single-precision. </p>
  
  <p>I think it is because of some missing compiler directives for the use of <code>VFP</code> floating point, but was unable to identify it. </p>
  
  <p>Is there anything I have missed out? </p>
  
  <p>The disassembly code of an example I did:</p>
  
  <p>The debugger can evaluate atan2f(0.3,0.4), but stops at 0x0803B9CA when it evaluates atan2f(a,b). Didn't know why the number works but not variables.</p>
  
  <pre><code>   377:         float a = 0.3; 
  0x0803B9BA 4B1E      LDR           r3,[pc,#120]  ; @0x0803BA34
  0x0803B9BC 63BB      STR           r3,[r7,#0x38]
     378:         float b = 0.4; 
     379:  
  0x0803B9BE 4B1E      LDR           r3,[pc,#120]  ; @0x0803BA38
  0x0803B9C0 637B      STR           r3,[r7,#0x34]
     380:         float c = atan2f(0.3,0.4); 
  0x0803B9C2 4B1E      LDR           r3,[pc,#120]  ; @0x0803BA3C
  0x0803B9C4 633B      STR           r3,[r7,#0x30]
     381:         float d = atan2f(a,b); 
     382:          
  0x0803B9C6 6BB8      LDR           r0,[r7,#0x38]
  0x0803B9C8 6B79      LDR           r1,[r7,#0x34]
  0x0803B9CA F004F993  BL.W          atan2f (0x0803FCF4)
  0x0803B9CE 62F8      STR           r0,[r7,#0x2C]
  </code></pre>