xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/asn1/README.template (revision ca1c9b0c534faa5fd4c7d36fd3c199a2a3d7b0e4)
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