1*ca1c9b0cSelric#!/bin/sh 2*ca1c9b0cSelric 3*ca1c9b0cSelricsize .libs/libasn1.dylib 4*ca1c9b0cSelricsize .libs/libasn1base.a | awk '{sum += $1} END {print sum}' | sed 's/^/TEXT baselib: /' 5*ca1c9b0cSelricsize .libs/asn1_*.o | awk '{sum += $1} END {print sum}' | sed 's/^/generated code stubs: /' 6*ca1c9b0cSelricsize *_asn1-template.o | awk '{sum += $1} END {print sum}' | sed 's/^/TEXT stubs: /' 7*ca1c9b0cSelric 8*ca1c9b0cSelricexit 0 9*ca1c9b0cSelric 10*ca1c9b0cSelricNotes about the template parser: 11*ca1c9b0cSelric 12*ca1c9b0cSelric- assumption: code is large, tables smaller 13*ca1c9b0cSelric 14*ca1c9b0cSelric- how to generate template based stubs: 15*ca1c9b0cSelric 16*ca1c9b0cSelric make check asn1_compile_FLAGS=--template > log 17*ca1c9b0cSelric 18*ca1c9b0cSelric- pretty much the same as the generate code, except uses tables instead of code 19*ca1c9b0cSelric 20*ca1c9b0cSelricTODO: 21*ca1c9b0cSelric - Make hdb work 22*ca1c9b0cSelric 23*ca1c9b0cSelric - Fuzzing tests 24*ca1c9b0cSelric 25*ca1c9b0cSelric - Performance testing 26*ca1c9b0cSelric 27*ca1c9b0cSelric - ASN1_MALLOC_ENCODE() as a function, replaces encode_ and length_ 28*ca1c9b0cSelric 29*ca1c9b0cSelric - Fix SIZE constraits 30*ca1c9b0cSelric 31*ca1c9b0cSelric - Compact types that only contain on entry to not having a header. 32*ca1c9b0cSelric 33*ca1c9b0cSelric 34*ca1c9b0cSelricSIZE - Futher down is later generations of the template parser 35*ca1c9b0cSelric 36*ca1c9b0cSelric code: 37*ca1c9b0cSelric ================== 38*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 39*ca1c9b0cSelric 462848 12288 0 323584 798720 c3000 (O2) 40*ca1c9b0cSelric 41*ca1c9b0cSelric trivial types: 42*ca1c9b0cSelric ================== 43*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 44*ca1c9b0cSelric 446464 12288 0 323584 782336 bf000 (O2) 45*ca1c9b0cSelric 46*ca1c9b0cSelric OPTIONAL 47*ca1c9b0cSelric ================== 48*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 49*ca1c9b0cSelric 425984 16384 0 323584 765952 bb000 (O2) 50*ca1c9b0cSelric 51*ca1c9b0cSelric SEQ OF 52*ca1c9b0cSelric ================== 53*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 54*ca1c9b0cSelric 368640 32768 0 327680 729088 b2000 (O2) 55*ca1c9b0cSelric 348160 32768 0 327680 708608 ad000 (Os) 56*ca1c9b0cSelric 57*ca1c9b0cSelric BOOLEAN 58*ca1c9b0cSelric ================== 59*ca1c9b0cSelric 339968 32768 0 327680 700416 ab000 (Os) 60*ca1c9b0cSelric 61*ca1c9b0cSelric TYPE_EXTERNAL: 62*ca1c9b0cSelric ================== 63*ca1c9b0cSelric 331776 32768 0 327680 692224 a9000 (Os) 64*ca1c9b0cSelric 65*ca1c9b0cSelric SET OF 66*ca1c9b0cSelric ================== 67*ca1c9b0cSelric 327680 32768 0 327680 688128 a8000 (Os) 68*ca1c9b0cSelric 69*ca1c9b0cSelric TYPE_EXTERNAL everywhere 70*ca1c9b0cSelric ================== 71*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 72*ca1c9b0cSelric 167936 69632 0 327680 565248 8a000 (Os) 73*ca1c9b0cSelric 74*ca1c9b0cSelric TAG uses ->ptr (header and trailer) 75*ca1c9b0cSelric ================== 76*ca1c9b0cSelric 229376 102400 0 421888 753664 b8000 (O0) 77*ca1c9b0cSelric 78*ca1c9b0cSelric TAG uses ->ptr (header only) 79*ca1c9b0cSelric ================== 80*ca1c9b0cSelric 221184 77824 0 421888 720896 b0000 (O0) 81*ca1c9b0cSelric 82*ca1c9b0cSelric BER support for octet string (not working) 83*ca1c9b0cSelric ================== 84*ca1c9b0cSelric 180224 73728 0 417792 671744 a4000 (O2) 85*ca1c9b0cSelric 86*ca1c9b0cSelric CHOICE and BIT STRING missign 87*ca1c9b0cSelric ================== 88*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 89*ca1c9b0cSelric 172032 73728 0 417792 663552 a2000 (Os) 90*ca1c9b0cSelric 91*ca1c9b0cSelric No accessor functions to global variable 92*ca1c9b0cSelric ================== 93*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 94*ca1c9b0cSelric 159744 73728 0 393216 626688 99000 (Os) 95*ca1c9b0cSelric 96*ca1c9b0cSelric All types tables (except choice) (id still objects) 97*ca1c9b0cSelric ================== 98*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 99*ca1c9b0cSelric 167936 77824 0 421888 667648 a3000 100*ca1c9b0cSelric base lib: 22820 101*ca1c9b0cSelric 102*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 103*ca1c9b0cSelric ================== 104*ca1c9b0cSelric 167936 77824 0 421888 667648 a3000 (Os) 105*ca1c9b0cSelric baselib: 22820 106*ca1c9b0cSelric generated code stubs: 41472 107*ca1c9b0cSelric TEXT stubs: 112560 108*ca1c9b0cSelric 109*ca1c9b0cSelric All types, id still objects 110*ca1c9b0cSelric ================== 111*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 112*ca1c9b0cSelric 155648 81920 0 430080 667648 a3000 (Os) 113*ca1c9b0cSelric TEXT baselib: 23166 114*ca1c9b0cSelric generated code stubs: 20796 115*ca1c9b0cSelric TEXT stubs: 119891 116*ca1c9b0cSelric 117*ca1c9b0cSelric All types, id still objects, dup compression 118*ca1c9b0cSelric ================== 119*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 120*ca1c9b0cSelric 143360 65536 0 376832 585728 8f000 (Os) 121*ca1c9b0cSelric TEXT baselib: 23166 122*ca1c9b0cSelric generated code stubs: 20796 123*ca1c9b0cSelric TEXT stubs: 107147 124*ca1c9b0cSelric 125*ca1c9b0cSelric All types, dup compression, id vars 126*ca1c9b0cSelric ================== 127*ca1c9b0cSelric __TEXT __DATA __OBJC others dec hex 128*ca1c9b0cSelric 131072 65536 0 352256 548864 86000 129*ca1c9b0cSelric TEXT baselib: 23166 130*ca1c9b0cSelric generated code stubs: 7536 131*ca1c9b0cSelric TEXT stubs: 107147 132