diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-12-27 14:48:14 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2005-12-27 14:48:14 +0000 |
commit | 64cd3e83c9993f3c1a3c24ea3030a22ccf35e12d (patch) | |
tree | 8808fad08bb8677b0e0d2158c65096eae5484767 /scripts | |
parent | e3173d2c996d8e30dfe44e9bf530881da6df6aaa (diff) | |
download | glibc-64cd3e83c9993f3c1a3c24ea3030a22ccf35e12d.tar.gz |
Updated to fedora-glibc-20051227T1426
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/gen-as-const.awk | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/scripts/gen-as-const.awk b/scripts/gen-as-const.awk index a315066422..c529fa42c8 100644 --- a/scripts/gen-as-const.awk +++ b/scripts/gen-as-const.awk @@ -13,7 +13,17 @@ BEGIN { started = 0 } /^#/ { print; next } NF >= 1 && !started { - print "void dummy(void) {"; + if (test) { + print "\n#include <stdio.h>"; + print "\nstatic int do_test (void)\n{\n int bad = 0, good = 0;\n"; + print "#define TEST(name, source, expr) \\\n" \ + " if (asconst_##name != (expr)) { ++bad;" \ + " fprintf (stderr, \"%s: %s is %ld but %s is %ld\\n\"," \ + " source, #name, (long int) asconst_##name, #expr, (long int) (expr));" \ + " } else ++good;\n"; + } + else + print "void dummy(void) {"; started = 1; } @@ -25,8 +35,18 @@ NF == 1 { sub(/^.*$/, "& &"); } NF > 1 { name = $1; sub(/^[^ ]+[ ]+/, ""); - printf "asm (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" (%s));\n", - name, $0; + if (test) + print " TEST (" name ", \"" FILENAME ":" FNR "\", " $0 ")"; + else + printf "asm (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" (%s));\n", + name, $0; } -END { if (started) print "}" } +END { + if (test) { + print " printf (\"%d errors in %d tests\\n\", bad, good + bad);" + print " return bad != 0 || good == 0;\n}\n"; + print "#define TEST_FUNCTION do_test ()"; + } + else if (started) print "}"; +} |