diff options
author | Tim Moore <timoore@redhat.com> | 2009-10-27 19:50:06 +0100 |
---|---|---|
committer | Tim Moore <timoore@redhat.com> | 2009-10-27 19:50:06 +0100 |
commit | f70d5f6b702e8da5c6affb3f34836c466b01f1b9 (patch) | |
tree | 46954ea80adcd97d18e21ecd1357b075d97f7e50 /dwflpp.cxx | |
parent | 8447d5545aa58965a5f47d604e14e97e673d1cd9 (diff) | |
parent | 618a8a634b37da88b67a49beec7282634bff3efe (diff) | |
download | systemtap-steved-f70d5f6b702e8da5c6affb3f34836c466b01f1b9.tar.gz systemtap-steved-f70d5f6b702e8da5c6affb3f34836c466b01f1b9.tar.xz systemtap-steved-f70d5f6b702e8da5c6affb3f34836c466b01f1b9.zip |
Merge branch 'master' of ssh://sourceware.org/git/systemtap
Diffstat (limited to 'dwflpp.cxx')
-rw-r--r-- | dwflpp.cxx | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -2182,8 +2182,15 @@ dwflpp::express_as_string (string prelude, fprintf(memstream, "{\n"); fprintf(memstream, "%s", prelude.c_str()); + unsigned int stack_depth; bool deref = c_emit_location (memstream, head, 1, &stack_depth); + + // Ensure that DWARF keeps loc2c to a "reasonable" stack size + // 32 intptr_t leads to max 256 bytes on the stack + if (stack_depth > 32) + throw semantic_error("oversized DWARF stack"); + fprintf(memstream, "%s", postlude.c_str()); fprintf(memstream, " goto out;\n"); |