1*412f47f9SXin LiSTYLE REQUIREMENTS 2*412f47f9SXin Li================== 3*412f47f9SXin Li 4*412f47f9SXin Li1. Most code in this sub-directory is expected to be upstreamed into glibc so 5*412f47f9SXin Li the GNU Coding Standard and glibc specific conventions should be followed 6*412f47f9SXin Li to ease upstreaming. 7*412f47f9SXin Li 8*412f47f9SXin Li2. ABI and symbols: the code should be written so it is suitable for inclusion 9*412f47f9SXin Li into a libc with minimal changes. This e.g. means that internal symbols 10*412f47f9SXin Li should be hidden and in the implementation reserved namespace according to 11*412f47f9SXin Li ISO C and POSIX rules. If possible the built shared libraries and static 12*412f47f9SXin Li library archives should be usable to override libc symbols at link time (or 13*412f47f9SXin Li at runtime via LD_PRELOAD). This requires the symbols to follow the glibc ABI 14*412f47f9SXin Li (other than symbol versioning), this cannot be done reliably for static 15*412f47f9SXin Li linking so this is a best effort requirement. 16*412f47f9SXin Li 17*412f47f9SXin Li3. API: include headers should be suitable for benchmarking and testing code 18*412f47f9SXin Li and should not conflict with libc headers. 19*412f47f9SXin Li 20*412f47f9SXin Li 21*412f47f9SXin LiCONTRIBUTION GUIDELINES FOR string SUB-DIRECTORY 22*412f47f9SXin Li================================================ 23*412f47f9SXin Li1. Code: 24*412f47f9SXin Li - The assumptions of the code must be clearly documented. 25*412f47f9SXin Li 26*412f47f9SXin Li - Assembly style should be consistent across different implementations. 27*412f47f9SXin Li 28*412f47f9SXin Li 29*412f47f9SXin Li2. Performance: 30*412f47f9SXin Li - Benchmarking is needed on several microarchitectures. 31