X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=ia32rtools.git;a=blobdiff_plain;f=run_mkpubinc.sh;h=2935d7d5d2582076a5fde6410722f4906cf03fda;hp=3cbcac89fa812f0b52408d223ddd16dbafe66905;hb=ee554c95296119b6b8d82856fbb09ffb8c9dc419;hpb=368deb2385c2ee4971964c3c08688c4ad36cb56e diff --git a/run_mkpubinc.sh b/run_mkpubinc.sh index 3cbcac8..2935d7d 100755 --- a/run_mkpubinc.sh +++ b/run_mkpubinc.sh @@ -1,28 +1,48 @@ #!/bin/sh set -e -echo -n > $3 +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 "_$a equ $a" >> $3 - echo "PUBLIC _$a" >> $3 + echo "_$a equ $a" >> $public_inc + echo "PUBLIC _$a" >> $public_inc done -echo "; funcs called from C" >> $3 +if test -n "$c_list"; then + # make a list of functions in asm + grep '\' $asm | awk '{print $1}' | grep -v '\ ${asm}_funcs || true -cat $2 | \ -while read a; do - echo "_$a equ $a" >> $3 - echo "PUBLIC _$a" >> $3 -done + 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