[EXT_EP-9510] C6000: callstack replicates caller function indefinitely when Step Into/Over Created: 26/Aug/19 Updated: 21/May/25 |
|
| Status: | Accepted |
| Project: | Embedded Software & Tools |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Medium |
| Reporter: | TI User | Assignee: | TI User |
| Resolution: | Unresolved | Votes: | 0 |
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Product: | Code Generation Tools |
| Internal ID: | CODEGEN-6662 |
| Forum URL: | https://e2e.ti.com/support/processors/f/791/t/829800 |
| Found In Release: | C6000_8.3.0 |
| Affected Platform/Device: | default |
| Workaround: | No practical workaround |
| Release Notes: | The callstack mysteriously replicates the caller function indefinitely when stepping into or stepping over a function in C. This was verified to happen with CCSv8.3.1 and v9.1.0 on Windows using CGT 8.3.3 for C6000. |
| Description |
|
A function which does not return (such as one that contains an infinite loop) doesn't need to save the return address register, so the compiler may reuse it for some other purpose. When this happens, the debugger may show strange things, especially if the non-returning function itself calls a function, in which case the debugger will get confused and show in the call stack view an infinite recursion of the nested function, which is not correct. The bug is that the DWARF information wasn't updated to indicate that the return address register is invalid, which would have stopped the debugger from trying to interpret it. |