blob: 540ce7857b3e2a2b86174a1467d17eddd1e71b7c [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiang91776952021-11-19 13:10:32 +08004 KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}
5}
6export -f pre_defconfig_cmds
7
8function post_defconfig_cmds() {
wanwei.jiang9c76b702022-03-23 20:58:59 +08009 # checkout config
wanwei.jiang91776952021-11-19 13:10:32 +080010 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080011}
12export -f post_defconfig_cmds
13
14function read_ext_module_config() {
15 ALL_LINE=""
16 while read LINE
17 do
18 if [[ $LINE != \#* && $LINE != "" ]]; then
19 ALL_LINE="$ALL_LINE"" ""$LINE"
20 fi
21 done < $1
wanwei.jiang5c861ae2022-04-21 00:51:50 +080022
23 echo "${ALL_LINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080024}
25
26function read_ext_module_predefine() {
27 PRE_DEFINE=""
28
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080029 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080030 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
31 done
32
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080033 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080034 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
35 done
36
wanwei.jiang5c861ae2022-04-21 00:51:50 +080037 echo "${PRE_DEFINE}"
wanwei.jiang91776952021-11-19 13:10:32 +080038}
39
40function prepare_module_build() {
wanwei.jiang5c861ae2022-04-21 00:51:50 +080041 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080042 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang5c861ae2022-04-21 00:51:50 +080043 sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
44 GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
45 GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
46 export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
wanwei.jiang91776952021-11-19 13:10:32 +080047 fi
wanwei.jiang5c861ae2022-04-21 00:51:50 +080048
49 for ext_module_config in ${EXT_MODULES_CONFIG}; do
50 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
51 GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
52 GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
53 done
54 export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
55 echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
56 echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
57
58 local flag=0
59 for ext_module_path in ${EXT_MODULES_PATH}; do
60 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
61 local ext_drivers=`cat ${temp_file}`
62 EXT_MODULES="
63 ${EXT_MODULES}
64 ${ext_drivers}
65 "
66
67 extra_symbols="KBUILD_EXTRA_SYMBOLS +="
68 while read LINE
69 do
70 ext_mod_rel=$(rel_path ${ROOT_DIR}/${LINE} ${KERNEL_DIR})
71 if [[ ${flag} -eq "1" ]]; then
72 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/, /# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ROOT_DIR}/${LINE}/Makefile
73 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ROOT_DIR}/${LINE}/Makefile
74 sed -i "2 i ${extra_symbols}" ${ROOT_DIR}/${LINE}/Makefile
75 sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ROOT_DIR}/${LINE}/Makefile
76 echo "${ROOT_DIR}/${LINE}/Makefile add: ${extra_symbols}"
77 fi
78 flag=1
79 extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
80 done < ${temp_file}
81
82 done
83 export EXT_MODULES
84 echo EXT_MODULES=${EXT_MODULES}
85
86 rm ${temp_file}
wanwei.jiang91776952021-11-19 13:10:32 +080087}
88
89export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +080090
wanwei.jiang5c861ae2022-04-21 00:51:50 +080091function extra_cmds() {
92 local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
93 local flag=0
94
95 for ext_module_path in ${EXT_MODULES_PATH}; do
96 sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
97 while read LINE
98 do
99 if [[ ${flag} -eq "1" ]]; then
100 sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/, /# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ROOT_DIR}/${LINE}/Makefile
101 fi
102 flag=1
103 done < ${temp_file}
104 done
105
106 rm ${temp_file}
107}
108
109export -f extra_cmds
110
wanwei.jiang612a8882021-11-23 17:12:23 +0800111function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800112 local ko=$1
113 local loop
114 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
115 mod_probe $loop
116 echo insmod $loop >> __install.sh
117 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800118}
119
wanwei.jiangb12abc82021-12-25 22:17:10 +0800120function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800121 if [[ -n $1 ]]; then
122 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800123 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800124
125 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
126 cp modules.dep modules.dep.temp
127
128 soc_module=()
129 for chip in ${chips[@]}; do
130 chip_module=`ls amlogic-*-soc-${chip}.ko`
131 soc_module=(${soc_module[@]} ${chip_module[@]})
132 done
133 echo soc_module=${soc_module[*]}
134
135 delete_soc_module=()
136 if [[ ${#soc_module[@]} == 0 ]]; then
137 echo "Use all soc module"
138 else
139 for module in `ls amlogic-*-soc-*`; do
140 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
141 echo Delete soc module: ${module}
142 sed -n "/${module}:/p" modules.dep.temp
143 sed -i "/${module}:/d" modules.dep.temp
144 delete_soc_module=(${delete_soc_module[@]} ${module})
145 fi
146 done
147 echo delete_soc_module=${delete_soc_module[*]}
148 fi
149
150 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800151 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800152 modules=`ls ${module}*`
153 delete_module=(${delete_module[@]} ${modules[@]})
154 done
155 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800156 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800157 else
158 echo delete_module=${delete_module[*]}
159 for module in ${delete_module[@]}; do
160 echo Delete module: ${module}
161 sed -n "/${module}:/p" modules.dep.temp
162 sed -i "/${module}:/d" modules.dep.temp
163 done
164 fi
165
166 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
167 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
168 for module in ${delete_modules[@]}; do
169 match=`sed -n "/${module}/=" modules.dep.temp1`
170 for match in ${match[@]}; do
171 match_count=(${match_count[@]} $match)
172 done
173 if [[ ${#match_count[@]} != 0 ]]; then
174 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800175 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800176 exit
177 fi
178 rm -f ${module}
179 done
180 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800181 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800182
183 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
184 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800185 sed -n "/${module}:/p" modules.dep.temp
186 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
187 sed -i "/${module}:/d" modules.dep.temp
188 sed -n "/${module}.*\.ko:/p" modules.dep.temp
189 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
190 sed -i "/${module}.*\.ko:/d" modules.dep.temp
191 done
192
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800193 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
194 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
195 sed -n "/${module}:/p" modules.dep.temp
196 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
197 sed -i "/${module}:/d" modules.dep.temp
198 sed -n "/${module}.*\.ko:/p" modules.dep.temp
199 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
200 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800201 done
202
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800203 if [ -f modules.dep.temp2 ]; then
204 rm modules.dep.temp2
205 fi
206 touch modules.dep.temp2
207 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
208 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
209 sed -n "/${module}:/p" modules.dep.temp
210 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
211 sed -i "/${module}:/d" modules.dep.temp
212 sed -n "/${module}.*\.ko:/p" modules.dep.temp
213 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
214 sed -i "/${module}.*\.ko:/d" modules.dep.temp
215 done
216
217 cat modules.dep.temp >> modules.dep.temp1
218 cat modules.dep.temp2 >> modules.dep.temp1
219
wanwei.jiangb12abc82021-12-25 22:17:10 +0800220 cp modules.dep.temp1 modules.dep
221 rm modules.dep.temp
222 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800223 rm modules.dep.temp2
224}
225
wanwei.jiang50759e12022-03-24 12:36:17 +0800226create_ramdis_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800227 install_temp=$1
228 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
229 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
230 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
231 for line in ${last_ramdisk_module_line}; do
232 ramdisk_last_line=${line}
233 done
234 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800235 mkdir ramdisk
236 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800237
238 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
239 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
240 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800241 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800242
243 file_last_line=`sed -n "$=" ${install_temp}`
244 let line=${file_last_line}-${ramdisk_last_line}
245 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800246 mkdir vendor
247 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800248
249 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
250 echo "echo Install vendor modules success!" >> vendor_install.sh
251 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800252 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800253}
254
wanwei.jiang612a8882021-11-23 17:12:23 +0800255function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800256 arg1=$1
257
wanwei.jiang236e9a32021-12-07 16:34:14 +0800258 pushd ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800259 rm modules -rf
260 mkdir modules
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800261 local modules_list=$(find ${MODULES_STAGING_DIR}/lib/modules -type f -name "*.ko")
wanwei.jiang67a191d2022-04-18 20:39:13 +0800262 #cp ${modules_list} modules
263 for module in ${modules_list}; do
264 cp ${module} modules/
265 done
wanwei.jiang612a8882021-11-23 17:12:23 +0800266
267 local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
268 echo stagin_module=${stagin_module}
269 cp ${stagin_module}/modules.dep modules
270
271 cd modules
272 sed -i 's#[^ ]*/##g' modules.dep
273
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800274 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800275
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800276 touch __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800277 for loop in `cat modules.dep | sed 's/:.*//'`; do
278 mod_probe $loop
279 echo insmod $loop >> __install.sh
280 done
281
282 cat __install.sh | awk ' {
283 if (!cnt[$2]) {
284 print $0;
285 cnt[$2]++;
286 }
287 }' > __install.sh.tmp
288
wanwei.jiang50759e12022-03-24 12:36:17 +0800289 create_ramdis_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800290
wanwei.jiang612a8882021-11-23 17:12:23 +0800291 cp __install.sh.tmp __install.sh
292
wanwei.jiang50759e12022-03-24 12:36:17 +0800293 #sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
294 #echo "echo Install modules success!" >> __install.sh
295 #chmod 755 __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800296
297 echo "#!/bin/sh" > install.sh
298 # echo "./__install.sh || reboot" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800299 # echo "./__install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800300 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800301 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800302 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800303 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800304 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800305 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800306
307 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
wanwei.jiang50759e12022-03-24 12:36:17 +0800308 rm __install.sh __install.sh.tmp modules.dep
wanwei.jiang612a8882021-11-23 17:12:23 +0800309
310 cd ../
wanwei.jiang236e9a32021-12-07 16:34:14 +0800311 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800312}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800313export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800314
315function rebuild_rootfs() {
316 pushd ${DIST_DIR}
317
Lei Zhang475c17b2022-03-03 11:08:50 +0800318 local ARCH=arm64
319 if [[ -n $1 ]]; then
320 ARCH=$1
321 fi
322
wanwei.jiang612a8882021-11-23 17:12:23 +0800323 rm rootfs -rf
324 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800325 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800326 cd rootfs
327 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
328 gunzip rootfs_base.cpio.gz
329 mkdir rootfs
330 cd rootfs
331 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800332 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
333 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800334 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800335 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800336
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800337 #modules_modules=`ls modules/*.ko`
338 ramdisk_modules=`ls modules/ramdisk/*.ko`
339 vendor_modules=`ls modules/vendor/*.ko`
340 strip_modules=(${modules_modules[@]} ${ramdisk_modules[@]} ${vendor_modules[@]})
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800341 if [[ -n ${LLVM} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800342 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800343 ${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-objcopy --strip-debug ${module}
344 done
345 elif [[ -n ${CROSS_COMPILE} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800346 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800347 ${CROSS_COMPILE}objcopy --strip-debug ${module}
348 done
349 else
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800350 echo "can't find compile tool"
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800351 fi
352
wanwei.jiang612a8882021-11-23 17:12:23 +0800353 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
354 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800355 mkimage -A ${ARCH} -O linux -T ramdisk -C none -d rootfs_new.cpio.gz rootfs_new.cpio.gz.uboot
wanwei.jiang612a8882021-11-23 17:12:23 +0800356 mv rootfs_new.cpio.gz.uboot ../
357 cd ../
358
359 popd
360}
361export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800362
363function check_undefined_symbol() {
wanwei.jiang236e9a32021-12-07 16:34:14 +0800364 pushd ${DIST_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800365 echo
366 echo "========================================================"
367 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800368 if [[ -n ${LLVM} ]]; then
369 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
370 elif [[ -n ${CROSS_COMPILE} ]]; then
371 compile_tool=${CROSS_COMPILE}
372 else
373 echo "can't find compile tool"
374 fi
375 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
376 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
377 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
378 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
379 cp ramdisk/*.ko .
380 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800381 while read LINE
382 do
383 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800384 for U in `${compile_tool}nm ${LINE} | grep " U " | sed -e 's/^\s*//' -e 's/\s*$//' | cut -d ' ' -f 2`
wanwei.jiang403c9942021-11-30 18:29:02 +0800385 do
386 #echo ${U}
387 U_v=`grep -w ${U} vmlinux_T.txt`
388 in_vmlinux=0
389 if [ -n "${U_v}" ];
390 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800391 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800392 in_vmlinux=1
393 continue
394 fi
395 in_module=0
396 MODULE=
397 while read LINE1
398 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800399 U_m=`${compile_tool}nm ${LINE1} | grep -E " T | D | B | R " | grep -v "\.cfi_jt" | grep "${U}"`
wanwei.jiang403c9942021-11-30 18:29:02 +0800400 if [ -n "${U_m}" ];
401 then
402 in_module=1
403 MODULE=${LINE1}
404 fi
405 done < module_list.txt
406 if [ ${in_module} -eq "1" ];
407 then
408 printf "\t%-50s <== %s\n" ${U} ${MODULE}
409 continue
410 else
411 printf "\t%-50s <== none\n" ${U}
412 fi
413 done
414 echo
415 echo
416 done < module_list.txt
417 rm vmlinux_T.txt
418 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800419 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800420 popd
421}
422export -f check_undefined_symbol