#!/bin/sh
file_name="objs"
awk -i inplace '!seen[$0]++' "$file_name"
name_lock=""
name_tsk=""
ret=0
while read crypto_obj; do
touch ${crypto_obj}-struct
gdb crypto/${crypto_obj} -q -ex="set pagination off" -ex="info types" -ex q | tail -n +2 > ${crypto_obj}-types
while read line; do
if [[ $line =~ ^[0-9]*:[[:space:]]*.*struct|union ]]; then
echo $line | awk '{print "struct "$NF}' | sed -r 's/;+$//' >> ${crypto_obj}-struct
fi
done <${crypto_obj}-types
count=$(cat ${crypto_obj}-struct | wc -l)
echo "List of strctures in ${crypto_obj} is ${count}"
str=$(awk /task_struct/ ${crypto_obj}-struct)
if [ ! -z "$str" ]; then
name_tsk="${name_tsk} ${crypto_obj}"
fi
str=$(awk /spinlock\|mutex/ ${crypto_obj}-struct)
if [ ! -z "$str" ]; then
name_lock="${name_lock} ${crypto_obj}"
fi
rm -f ${crypto_obj}-types
rm -f ${crypto_obj}-struct
done<${file_name}
if [ ! -z "$name_tsk" ]; then
echo "$name_tsk contains task_struct!!!!"
ret=1
fi
if [ ! -z "$name_lock" ]; then
echo "$name_lock contains spinlock or mutex!!!!"
ret=1
fi
exit $ret