Annotation of wikisrc/projects/project/verify_netbsd32.mdwn, revision 1.2

1.1       jmmv        1: [[!template id=project
                      3: title="Verification tool for NetBSD32"
                      5: contact="""
                      6: [tech-toolchain](
                      7: """
                      9: mentors="""
                     10: [Jörg Sonnenberger](
                     11: """
1.2     ! jmmv       13: category="userland"
        !            14: difficulty="hard"
1.1       jmmv       15: duration="3 months"
                     17: description="""
                     18: NetBSD supports a number of platforms where both 32bit and 64bit execution is possible.
                     19: The more well known example is the i386/AMD64 pair and the other important one is SPARC/SPARC64.
                     20: On this platforms it is highly desirable to allow running all 32bit applications with a 64bit kernel.
                     21: This is the purpose of the netbsd32 compatibility layer.
                     23: At the moment, the netbsd32 layer consists of a number of system call stubs and structure definitions written and maintained by hand.
                     24: It is hard to ensure that the stubs and definitions are up-to-date and correct.
                     25: One complication is the difference in alignment rules.
                     26: On i386 uint64_t has a 32bit alignment, but on AMD64 it uses natural (64bit) alignment.
                     27: This and the resulting padding introduced by the compiler can create hard to find bugs.
                     29: The goal of this project is to replace the manual labour with an automatic tool.
                     30: This tool should allow both verification / generation of structure definitions for use in netbsd32 code as well as allow generation of system call stubs and conversion functions.
                     31: For this purpose, the [Clang C parser]( or the [libclang frontend]( can be used to analyse the C code.
                     32: Generated stubs should also ensure that no kernel stack data is leaked in hidden padding without having to resort to unnecessary large memset calls.
                     33: """
                     34: ]]
                     36: [[!tag gsoc]]

CVSweb for NetBSD wikisrc <> software: FreeBSD-CVSweb