blob: 8a0a640af0645607249c0b7f5ac1e4c0f39c1b40 [file] [log] [blame]
wanwei.jiang91776952021-11-19 13:10:32 +08001#!/bin/bash
2
3function pre_defconfig_cmds() {
wanwei.jiang9c76b702022-03-23 20:58:59 +08004 echo "" >> ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +08005 if [[ ${AMLOGIC_BREAK_GKI} -eq "1" ]]; then
6 echo "CONFIG_AMLOGIC_BREAK_GKI=y" >> ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiang5c8d2b62021-11-26 20:36:33 +08007 else
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +08008 echo "CONFIG_AMLOGIC_BREAK_GKI=n" >> ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiang5c8d2b62021-11-26 20:36:33 +08009 fi
10
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080011 if [[ ${IN_KERNEL_MODULES} -eq "1" ]]; then
12 echo "CONFIG_AMLOGIC_IN_KERNEL_MODULES=y" >> ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080013 SKIP_EXT_MODULES=1
14 export SKIP_EXT_MODULES
15 EXT_MODULES=
16 export EXT_MODULES
wanwei.jiang5c8d2b62021-11-26 20:36:33 +080017 else
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080018 echo "CONFIG_AMLOGIC_IN_KERNEL_MODULES=n" >> ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080019 fi
20 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}
21}
22export -f pre_defconfig_cmds
23
24function post_defconfig_cmds() {
wanwei.jiang9c76b702022-03-23 20:58:59 +080025 # checkout config
wanwei.jiang91776952021-11-19 13:10:32 +080026 rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}
wanwei.jiang7ef5fd42022-02-18 16:36:19 +080027 pushd ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}
wanwei.jiang9c76b702022-03-23 20:58:59 +080028 # sed -i '5,${/CONFIG_AMLOGIC_BREAK_GKI/d}' ${ROOT_DIR}/${FRAGMENT_CONFIG}
29 # sed -i '5,${/CONFIG_AMLOGIC_IN_KERNEL_MODULES/d}' ${ROOT_DIR}/${FRAGMENT_CONFIG}
30 git checkout ${ROOT_DIR}/${FRAGMENT_CONFIG}
wanwei.jiang91776952021-11-19 13:10:32 +080031 popd
32}
33export -f post_defconfig_cmds
34
35function read_ext_module_config() {
36 ALL_LINE=""
37 while read LINE
38 do
39 if [[ $LINE != \#* && $LINE != "" ]]; then
40 ALL_LINE="$ALL_LINE"" ""$LINE"
41 fi
42 done < $1
43 export GKI_EXT_MODULE_CONFIG=$ALL_LINE
44 echo "GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}"
45}
46
47function read_ext_module_predefine() {
48 PRE_DEFINE=""
49
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080050 for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080051 PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
52 done
53
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080054 for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
wanwei.jiang91776952021-11-19 13:10:32 +080055 PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
56 done
57
58 export GKI_EXT_MODULE_PREDEFINE=$PRE_DEFINE
59 echo "GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}"
60}
61
62function prepare_module_build() {
wanwei.jiangb9ad1ef2021-12-27 15:23:30 +080063 if [[ -z ${IN_KERNEL_MODULES} ]]; then
wanwei.jiang91776952021-11-19 13:10:32 +080064 read_ext_module_config $FRAGMENT_CONFIG && read_ext_module_predefine $FRAGMENT_CONFIG
65 fi
66}
67
68export -f prepare_module_build
wanwei.jiang612a8882021-11-23 17:12:23 +080069
70function mod_probe() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080071 local ko=$1
72 local loop
73 for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
74 mod_probe $loop
75 echo insmod $loop >> __install.sh
76 done
wanwei.jiang612a8882021-11-23 17:12:23 +080077}
78
wanwei.jiangb12abc82021-12-25 22:17:10 +080079function adjust_sequence_modules_loading() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080080 if [[ -n $1 ]]; then
81 chips=$1
wanwei.jiangb12abc82021-12-25 22:17:10 +080082 fi
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +080083
84 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
85 cp modules.dep modules.dep.temp
86
87 soc_module=()
88 for chip in ${chips[@]}; do
89 chip_module=`ls amlogic-*-soc-${chip}.ko`
90 soc_module=(${soc_module[@]} ${chip_module[@]})
91 done
92 echo soc_module=${soc_module[*]}
93
94 delete_soc_module=()
95 if [[ ${#soc_module[@]} == 0 ]]; then
96 echo "Use all soc module"
97 else
98 for module in `ls amlogic-*-soc-*`; do
99 if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
100 echo Delete soc module: ${module}
101 sed -n "/${module}:/p" modules.dep.temp
102 sed -i "/${module}:/d" modules.dep.temp
103 delete_soc_module=(${delete_soc_module[@]} ${module})
104 fi
105 done
106 echo delete_soc_module=${delete_soc_module[*]}
107 fi
108
109 delete_module=()
wanwei.jiang50759e12022-03-24 12:36:17 +0800110 for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800111 modules=`ls ${module}*`
112 delete_module=(${delete_module[@]} ${modules[@]})
113 done
114 if [[ ${#delete_module[@]} == 0 ]]; then
wanwei.jiang50759e12022-03-24 12:36:17 +0800115 echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800116 else
117 echo delete_module=${delete_module[*]}
118 for module in ${delete_module[@]}; do
119 echo Delete module: ${module}
120 sed -n "/${module}:/p" modules.dep.temp
121 sed -i "/${module}:/d" modules.dep.temp
122 done
123 fi
124
125 cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
126 delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
127 for module in ${delete_modules[@]}; do
128 match=`sed -n "/${module}/=" modules.dep.temp1`
129 for match in ${match[@]}; do
130 match_count=(${match_count[@]} $match)
131 done
132 if [[ ${#match_count[@]} != 0 ]]; then
133 echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
wanwei.jiang50759e12022-03-24 12:36:17 +0800134 echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACK_LIST
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800135 exit
136 fi
137 rm -f ${module}
138 done
139 rm -f modules.dep.temp1
wanwei.jiangb12abc82021-12-25 22:17:10 +0800140 touch modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800141
142 for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
143 echo RAMDISK_MODULES_LOAD_LIST: $module
wanwei.jiangb12abc82021-12-25 22:17:10 +0800144 sed -n "/${module}:/p" modules.dep.temp
145 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
146 sed -i "/${module}:/d" modules.dep.temp
147 sed -n "/${module}.*\.ko:/p" modules.dep.temp
148 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
149 sed -i "/${module}.*\.ko:/d" modules.dep.temp
150 done
151
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800152 for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
153 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
154 sed -n "/${module}:/p" modules.dep.temp
155 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
156 sed -i "/${module}:/d" modules.dep.temp
157 sed -n "/${module}.*\.ko:/p" modules.dep.temp
158 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
159 sed -i "/${module}.*\.ko:/d" modules.dep.temp
wanwei.jiangb12abc82021-12-25 22:17:10 +0800160 done
161
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800162 if [ -f modules.dep.temp2 ]; then
163 rm modules.dep.temp2
164 fi
165 touch modules.dep.temp2
166 for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
167 echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
168 sed -n "/${module}:/p" modules.dep.temp
169 sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
170 sed -i "/${module}:/d" modules.dep.temp
171 sed -n "/${module}.*\.ko:/p" modules.dep.temp
172 sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
173 sed -i "/${module}.*\.ko:/d" modules.dep.temp
174 done
175
176 cat modules.dep.temp >> modules.dep.temp1
177 cat modules.dep.temp2 >> modules.dep.temp1
178
wanwei.jiangb12abc82021-12-25 22:17:10 +0800179 cp modules.dep.temp1 modules.dep
180 rm modules.dep.temp
181 rm modules.dep.temp1
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800182 rm modules.dep.temp2
183}
184
wanwei.jiang50759e12022-03-24 12:36:17 +0800185create_ramdis_vendor() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800186 install_temp=$1
187 source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
188 last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
189 last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
190 for line in ${last_ramdisk_module_line}; do
191 ramdisk_last_line=${line}
192 done
193 head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800194 mkdir ramdisk
195 cat ramdisk_install.sh | cut -d ' ' -f 2 | xargs mv -t ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800196
197 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
198 echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
199 chmod 755 ramdisk_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800200 mv ramdisk_install.sh ramdisk/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800201
202 file_last_line=`sed -n "$=" ${install_temp}`
203 let line=${file_last_line}-${ramdisk_last_line}
204 tail -n ${line} ${install_temp} > vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800205 mkdir vendor
206 cat vendor_install.sh | cut -d ' ' -f 2 | xargs mv -t vendor/
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800207
208 sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
209 echo "echo Install vendor modules success!" >> vendor_install.sh
210 chmod 755 vendor_install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800211 mv vendor_install.sh vendor/
wanwei.jiangb12abc82021-12-25 22:17:10 +0800212}
213
wanwei.jiang612a8882021-11-23 17:12:23 +0800214function modules_install() {
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800215 arg1=$1
216
wanwei.jiang236e9a32021-12-07 16:34:14 +0800217 pushd ${DIST_DIR}
wanwei.jiang612a8882021-11-23 17:12:23 +0800218 rm modules -rf
219 mkdir modules
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800220 local modules_list=$(find ${MODULES_STAGING_DIR}/lib/modules -type f -name "*.ko")
221 cp ${modules_list} modules
wanwei.jiang612a8882021-11-23 17:12:23 +0800222
223 local stagin_module=$(echo ${MODULES_STAGING_DIR}/lib/modules/*)
224 echo stagin_module=${stagin_module}
225 cp ${stagin_module}/modules.dep modules
226
227 cd modules
228 sed -i 's#[^ ]*/##g' modules.dep
229
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800230 adjust_sequence_modules_loading "${arg1[*]}"
wanwei.jiangb12abc82021-12-25 22:17:10 +0800231
wanwei.jiang5c8d2b62021-11-26 20:36:33 +0800232 touch __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800233 for loop in `cat modules.dep | sed 's/:.*//'`; do
234 mod_probe $loop
235 echo insmod $loop >> __install.sh
236 done
237
238 cat __install.sh | awk ' {
239 if (!cnt[$2]) {
240 print $0;
241 cnt[$2]++;
242 }
243 }' > __install.sh.tmp
244
wanwei.jiang50759e12022-03-24 12:36:17 +0800245 create_ramdis_vendor __install.sh.tmp
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800246
wanwei.jiang612a8882021-11-23 17:12:23 +0800247 cp __install.sh.tmp __install.sh
248
wanwei.jiang50759e12022-03-24 12:36:17 +0800249 #sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
250 #echo "echo Install modules success!" >> __install.sh
251 #chmod 755 __install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800252
253 echo "#!/bin/sh" > install.sh
254 # echo "./__install.sh || reboot" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800255 # echo "./__install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800256 echo "cd ramdisk" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800257 echo "./ramdisk_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800258 echo "cd ../vendor" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800259 echo "./vendor_install.sh" >> install.sh
wanwei.jiang50759e12022-03-24 12:36:17 +0800260 echo "cd ../" >> install.sh
wanwei.jiang0a8d6ee2022-03-23 09:36:19 +0800261 chmod 755 install.sh
wanwei.jiang612a8882021-11-23 17:12:23 +0800262
263 echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."
wanwei.jiang50759e12022-03-24 12:36:17 +0800264 rm __install.sh __install.sh.tmp modules.dep
wanwei.jiang612a8882021-11-23 17:12:23 +0800265
266 cd ../
wanwei.jiang236e9a32021-12-07 16:34:14 +0800267 popd
wanwei.jiang612a8882021-11-23 17:12:23 +0800268}
wanwei.jiang236e9a32021-12-07 16:34:14 +0800269export -f modules_install
wanwei.jiang612a8882021-11-23 17:12:23 +0800270
271function rebuild_rootfs() {
272 pushd ${DIST_DIR}
273
Lei Zhang475c17b2022-03-03 11:08:50 +0800274 local ARCH=arm64
275 if [[ -n $1 ]]; then
276 ARCH=$1
277 fi
278
wanwei.jiang612a8882021-11-23 17:12:23 +0800279 rm rootfs -rf
280 mkdir rootfs
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800281 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/rootfs_base.cpio.gz.uboot rootfs
wanwei.jiang612a8882021-11-23 17:12:23 +0800282 cd rootfs
283 dd if=rootfs_base.cpio.gz.uboot of=rootfs_base.cpio.gz bs=64 skip=1
284 gunzip rootfs_base.cpio.gz
285 mkdir rootfs
286 cd rootfs
287 cpio -i -F ../rootfs_base.cpio
wanwei.jiang7ef5fd42022-02-18 16:36:19 +0800288 if [ -d ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer ]; then
289 cp ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/customer . -rf
qinglin.li3c25dbb2022-01-14 11:23:10 +0800290 fi
wanwei.jiang612a8882021-11-23 17:12:23 +0800291 cp -rf ../../modules .
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800292
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800293 #modules_modules=`ls modules/*.ko`
294 ramdisk_modules=`ls modules/ramdisk/*.ko`
295 vendor_modules=`ls modules/vendor/*.ko`
296 strip_modules=(${modules_modules[@]} ${ramdisk_modules[@]} ${vendor_modules[@]})
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800297 if [[ -n ${LLVM} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800298 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800299 ${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-objcopy --strip-debug ${module}
300 done
301 elif [[ -n ${CROSS_COMPILE} ]]; then
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800302 for module in ${strip_modules[@]}; do
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800303 ${CROSS_COMPILE}objcopy --strip-debug ${module}
304 done
305 else
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800306 echo "can't find compile tool"
wanwei.jiang8abddcc2022-03-16 21:18:48 +0800307 fi
308
wanwei.jiang612a8882021-11-23 17:12:23 +0800309 find . | cpio -o -H newc | gzip > ../rootfs_new.cpio.gz
310 cd ../
Lei Zhang475c17b2022-03-03 11:08:50 +0800311 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 +0800312 mv rootfs_new.cpio.gz.uboot ../
313 cd ../
314
315 popd
316}
317export -f rebuild_rootfs
wanwei.jiang403c9942021-11-30 18:29:02 +0800318
319function check_undefined_symbol() {
wanwei.jiang236e9a32021-12-07 16:34:14 +0800320 pushd ${DIST_DIR}/modules
wanwei.jiang403c9942021-11-30 18:29:02 +0800321 echo
322 echo "========================================================"
323 echo "Functions or variables not defined in this module refer to which module."
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800324 if [[ -n ${LLVM} ]]; then
325 compile_tool=${ROOT_DIR}/${CLANG_PREBUILT_BIN}/llvm-
326 elif [[ -n ${CROSS_COMPILE} ]]; then
327 compile_tool=${CROSS_COMPILE}
328 else
329 echo "can't find compile tool"
330 fi
331 ${compile_tool}nm ../vmlinux | grep -E " T | D | B | R | W "> vmlinux_T.txt
332 # cat __install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
333 cat ramdisk/ramdisk_install.sh | grep "insmod" | cut -d ' ' -f 2 > module_list.txt
334 cat vendor/vendor_install.sh | grep "insmod" | cut -d ' ' -f 2 >> module_list.txt
335 cp ramdisk/*.ko .
336 cp vendor/*.ko .
wanwei.jiang403c9942021-11-30 18:29:02 +0800337 while read LINE
338 do
339 echo ${LINE}
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800340 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 +0800341 do
342 #echo ${U}
343 U_v=`grep -w ${U} vmlinux_T.txt`
344 in_vmlinux=0
345 if [ -n "${U_v}" ];
346 then
wanwei.jiangd7b29ef2021-12-01 19:59:41 +0800347 #printf "\t%-50s <== vmlinux\n" ${U}
wanwei.jiang403c9942021-11-30 18:29:02 +0800348 in_vmlinux=1
349 continue
350 fi
351 in_module=0
352 MODULE=
353 while read LINE1
354 do
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800355 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 +0800356 if [ -n "${U_m}" ];
357 then
358 in_module=1
359 MODULE=${LINE1}
360 fi
361 done < module_list.txt
362 if [ ${in_module} -eq "1" ];
363 then
364 printf "\t%-50s <== %s\n" ${U} ${MODULE}
365 continue
366 else
367 printf "\t%-50s <== none\n" ${U}
368 fi
369 done
370 echo
371 echo
372 done < module_list.txt
373 rm vmlinux_T.txt
374 rm module_list.txt
wanwei.jiang2c818dc2022-03-24 17:48:00 +0800375 rm *.ko
wanwei.jiang403c9942021-11-30 18:29:02 +0800376 popd
377}
378export -f check_undefined_symbol