X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=run_mkpubinc.sh;h=2935d7d5d2582076a5fde6410722f4906cf03fda;hb=193c11bf19ed55fc1af7a849383ad6912f08ad0a;hp=91a931bdb056e7307dd65f732b982466e9ffd1f6;hpb=8022df01f333cb5018c838a5b13e49edbb57d6b4;p=ia32rtools.git diff --git a/run_mkpubinc.sh b/run_mkpubinc.sh index 91a931b..2935d7d 100755 --- a/run_mkpubinc.sh +++ b/run_mkpubinc.sh @@ -1,19 +1,48 @@ #!/bin/sh set -e -echo -n > $2 +public_inc=$1 +asm=$2 +c_list=$3 -cat $1 | fromdos | sed -e \ -'1,/^_rdata.*segment/d;/^_data_last/q;/^[[:blank:];]/d;/^;/d;/^_r\?data\>/d;' | awk '{print $1}' | \ +echo -n > $public_inc + +cat $asm | fromdos | sed -e \ +'1,/^_rdata.*segment/d;/^_data.*\/q;/^[[:blank:];]/d;/^;/d;/^_r\?data\>/d;' | awk '{print $1}' | \ while read a; do test -z "$a" && continue case $a in __IMPORT_DESCRIPTOR*) continue ;; + _data) + continue + ;; *) ;; esac - echo "PUBLIC $a" >> $2 + echo "_$a equ $a" >> $public_inc + echo "PUBLIC _$a" >> $public_inc done + +if test -n "$c_list"; then + # make a list of functions in asm + grep '\' $asm | awk '{print $1}' | grep -v '\ ${asm}_funcs || true + + echo "; funcs called from C" >> $public_inc + + cat $c_list | \ + while read a; do + name=`echo $a | awk -F@ '{print $1}'` + n=`grep "\<$name\>" ${asm}_funcs` || \ + n=`grep "\<_$name\>" ${asm}_funcs` || true + if test -z "$n"; then + echo "\"$name\" is expected to be in asm, but was not found" + rm $public_inc + exit 1 + fi + echo "PUBLIC $n" >> $public_inc + done +fi