implemented debug function name stack
[fw/sdcc] / support / scripts / sdcc.nsi
index b85acea9d95422efe4593969b5b2932ee6a49875..0714463f6e0d3523fdf7943045c6e4410636e583 100644 (file)
 
 !ifdef SDCC.DEBUG
   Var SDCC.FunctionName
+  Var SDCC.StrStack0
+  Var SDCC.StrStack1
+  Var SDCC.StrStack2
+  Var SDCC.StrStack3
+  Var SDCC.StrStack4
+
+!define SDCC.PushStr "!insertmacro MACRO_SDCC_PushStr"
+!macro MACRO_SDCC_PushStr NAME
+  StrCpy $SDCC.StrStack4 $SDCC.StrStack3
+  StrCpy $SDCC.StrStack3 $SDCC.StrStack2
+  StrCpy $SDCC.StrStack2 $SDCC.StrStack1
+  StrCpy $SDCC.StrStack1 $SDCC.StrStack0
+  StrCpy $SDCC.StrStack0 $SDCC.FunctionName
+  StrCpy $SDCC.FunctionName ${NAME}
+!macroend
+
+!define SDCC.PopStr "!insertmacro MACRO_SDCC_PopStr"
+!macro MACRO_SDCC_PopStr
+  StrCpy $SDCC.FunctionName $SDCC.StrStack0
+  StrCpy $SDCC.StrStack0 $SDCC.StrStack1
+  StrCpy $SDCC.StrStack1 $SDCC.StrStack2
+  StrCpy $SDCC.StrStack2 $SDCC.StrStack3
+  StrCpy $SDCC.StrStack3 $SDCC.StrStack4
+!macroend
 !endif
 
 !define DebugMsg "!insertmacro MACRO_SDCC_DebugMsg"
 !macro MACRO_SDCC_Function NAME
   Function "${NAME}"
   !ifdef SDCC.DEBUG
-    StrCpy $SDCC.FunctionName ${NAME}
+    ${SDCC.PushStr} ${NAME}
   !endif
 !macroend
 
 !define FunctionEnd "!insertmacro MACRO_SDCC_FunctionEnd"
 !macro MACRO_SDCC_FunctionEnd
   !ifdef SDCC.DEBUG
-    StrCpy $SDCC.FunctionName ""
+    ${SDCC.PopStr}
   !endif
   FunctionEnd
 !macroend