[BACK]Return to sunldgen.sh CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / rump

Annotation of src/sys/rump/sunldgen.sh, Revision 1.1.14.2

1.1.14.2! yamt        1: #!/bin/sh
        !             2: #
        !             3: #       $NetBSD$
        !             4: #
        !             5:
        !             6: # To support the Sun linker we need to make it behave like the GNU linker
        !             7: # for orphaned sections.  That means generating __start/__stop symbols
        !             8: # for them and that means some nopoly-atheist-withoutfood level trickery.
        !             9: # We enumerate all the section names we wish to generate symbols for.
        !            10: # The good news is that it's unlikely for NetBSD to grow any more
        !            11: # link sets, and even if it does, it'll be a build-time failure
        !            12: # on Sun platforms so it's easy to catch and mend the list below.
        !            13:
        !            14: LINKSETS='rump_components evcnts prop_linkpools modules sysctl_funcs
        !            15:          bufq_strats domains dkwedge_methods ieee80211_funcs'
        !            16:
        !            17: exec 1> ldscript_sun.rump
        !            18: printf '# $NetBSD$\n\n$mapfile_version 2\nLOAD_SEGMENT rumpkern_linksets {'
        !            19: for lset in ${LINKSETS}; do
        !            20:        printf '\n\tASSIGN_SECTION { IS_NAME= link_set_start_%s };\n' $lset
        !            21:        printf '\tASSIGN_SECTION { IS_NAME= link_set_%s };\n' $lset
        !            22:        printf '\tASSIGN_SECTION { IS_NAME= link_set_stop_%s };\n' $lset
        !            23:        printf '\tOS_ORDER+= link_set_start_%s\n' $lset
        !            24:        printf '\t    link_set_%s\n' $lset
        !            25:        printf '\t    link_set_stop_%s;\n' $lset
        !            26: done
        !            27: echo '};'
        !            28:
        !            29: exec 1> linksyms_sun.c
        !            30: printf '/* $NetBSD$ */\n\n'
        !            31: for lset in ${LINKSETS}; do
        !            32:        printf 'int __start_link_set_%s[0]\n' $lset
        !            33:        printf '\t__attribute__((__section__("link_set_start_%s")));\n' $lset
        !            34:        printf 'int __link_set_dummy_%s[0]\n' $lset
        !            35:        printf '\t__attribute__((__section__("link_set_%s")));\n' $lset
        !            36:        printf 'int __stop_link_set_%s[0]\n' $lset
        !            37:        printf '\t__attribute__((__section__("link_set_stop_%s")));\n\n' $lset
        !            38: done

CVSweb <webmaster@jp.NetBSD.org>