Code was allocating way too much space for the string. gcc/ChangeLog: * config/bpf/core-builtins.cc (process_enum_value): Corrected string allocation. --- gcc/config/bpf/core-builtins.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index e03e986e2c1..ead1777d465 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -872,10 +872,11 @@ process_enum_value (struct cr_builtins *data) { if (TREE_VALUE (l) == expr) { - char *tmp = (char *) ggc_alloc_atomic ((index / 10) + 1); + /* Array size is 21 = ceil(log_10(2^64)) + 1 to hold string + representations of 64 bit integers. */ + char tmp[21]; sprintf (tmp, "%d", index); - ret.str = (const char *) tmp; - + ret.str = CONST_CAST (char *, ggc_strdup(tmp)); break; } index++; -- 2.30.2