#!/usr/bin/gawk -f BEGIN { seq = 0; } /GLOBAL/ && !/UNDEF/ { size = $3; type = $4; split($8, nv, "@@"); name = nv[1]; version = nv[2]; name_seq = sprintf("%s_%d", name, seq++); if (name == "_init" || name == "_fini") { next; } if (type == "FUNC") { printf "void %s() { }\n", name_seq; } else if (type == "OBJECT") { printf "char %s[%s];\n", name_seq, size; } printf "asm(\".symver %s, %s@@%s\");\n\n", name_seq, name, version; }