Luis R. Rodriguez wrote:
Today at the summit we spoke about mangling symbols for driver-slect. Here's a quick nasty take on this but without doing this for driver-select specifically just for testing. It seems to compile, but someone more motivated may want to test and make this apply somehow only for driver-select or perhaps when a -D define is used. Reason for this is to help distributions / OEMs / ODMs who want to replace just *one* driver with compat-wireless.
I think it would be better to generate the list of mangled symbols dynamically. In older Ubuntu releases (before depmod behavior was corrected), we have to run a 'munge' script to preface all of the exported symbols so that a compat-wireless driver references the compat-wireless protocol stack symbols. See the attached munge script for compat-wireless on 2.6.24. We can either do something like this for compat-wireless, or we could use a subset of this logic to generate the list of symbols contained within the '#ifdef CONFIG_COMPAT_WIRELESS_MANGLE' clause.
rtg -- Tim Gardner tim.gardner@xxxxxxxxxxxxx
#!/bin/bash # # Isolate the compat-wireless exported symbols and munge every occurence such that # there is no possibility of conflict with the main kernel. # TL=token_list FL=file_list SL=sed_list TL_EXCEPTIONS=token_list_exceptions find compat-wireless-2.6 -name "*.[ch]" > ${FL} rm -f ${TL_EXCEPTIONS} for i in wireless_send_event iw_handler_set_spy wireless_spy_update iw_handler_get_thrspy iw_handler_get_spy iw_handler_set_thrspy do echo ${i} >> ${TL_EXCEPTIONS} done cat ${FL} | \ egrep -v "compat\.[ch]" |\ xargs grep -h EXPORT_SYMBOL | \ grep -v -f ${TL_EXCEPTIONS} |\ sed -e 's/^.*EXPORT_SYMBOL_GPL(//' -e 's/);//' -e 's/^.*EXPORT_SYMBOL(//' -e 's/);//' |\ sort -r | uniq > ${TL} rm -f ${SL} cat ${TL} | while read token do echo s/${token}/cw_${token}/g >> ${SL} done cat ${FL} | while read f do sed -i -f ${SL} "${f}" done rm -f ${TL} ${FL} ${SL} ${TL_EXCEPTIONS}