I do not think GNU awk specifies the array iteration order. The enum type with the tunables indices is defined like this: # Now, the enum names print "\ntypedef enum" print "{" for (tnm in types) { split (tnm, indices, SUBSEP); t = indices[1]; n = indices[2]; m = indices[3]; printf (" TUNABLE_ENUM_NAME(%s, %s, %s),\n", t, n, m); } print "} tunable_id_t;\n" So the assigned indices depend on array iteration order. This could be a problem if building glibc multilibs (for glibc-hwcaps), where the (baseline) ld.so and multilib libc.so.6 come from different builds and have potentially different iteration order. This can cause crashes because __tunable_get_val does not perform any type checking. It may store a larger tunable value than the caller specifies through the value pointer, causing memory corruption.