From 4b5152b36106aedcbeb844169b3d92a59dcf47e9 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Mon, 14 Oct 2002 07:20:58 +0000 Subject: Patch from Christian MICHON to reimplement my little initfini.pl script in awk. This eliminates uClibc's compile-time dependancy on perl, and lets us use the much lighter weight awk, which facilitates building uClibc standalone environments. --- extra/scripts/initfini.awk | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 extra/scripts/initfini.awk (limited to 'extra/scripts') diff --git a/extra/scripts/initfini.awk b/extra/scripts/initfini.awk new file mode 100755 index 000000000..1924da9a5 --- /dev/null +++ b/extra/scripts/initfini.awk @@ -0,0 +1,77 @@ +#! /usr/bin/awk -f +# Contributed by Christian MICHON to +# eliminate the compile time dependancy on perl introduced by +# Erik's older initfini.pl +# vim:ai:sw=2: + +BEGIN \ +{ alignval=""; + endp=0; + end=0; + system("/bin/touch crt[in].S"); + system("/bin/rm -f crt[in].S"); + omitcrti=0; + omitcrtn=0; + while(getline < "initfini.s") + { if(/\.endp/) {endp=1} + if(/\.end/) {end=1} + if(/\.align/) {alignval=$2} + } + close("initfini.s"); +} + +/HEADER_ENDS/{omitcrti=1;omitcrtn=1;getline} +/PROLOG_BEGINS/{omitcrti=0;omitcrtn=0;getline} +/i_am_not_a_leaf/{getline} +/_init:/||/_fini:/{omitcrtn=1} +/PROLOG_PAUSES/{omitcrti=1;getline} +/PROLOG_UNPAUSES/{omitcrti=0;getline} +/PROLOG_ENDS/{omitcrti=1;getline} +/EPILOG_BEGINS/{omitcrtn=0;getline} +/EPILOG_ENDS/{omitcrtn=1;getline} +/TRAILER_BEGINS/{omitcrti=0;omitcrtn=0;getline} + +/END_INIT/ \ +{ if(endp) + { gsub("END_INIT",".endp _init",$0) + } + else + { if(end) + { gsub("END_INIT",".end _init",$0) + } + else + { gsub("END_INIT","",$0) + } + } +} + +/END_FINI/ \ +{ if(endp) + { gsub("END_FINI",".endp _fini",$0) + } + else + { if(end) + { gsub("END_FINI",".end _fini",$0) + } + else + { gsub("END_FINI","",$0) + } + } +} + +/ALIGN/ \ +{ if(alignval!="") + { gsub("ALIGN",sprintf(".align %s",alignval),$0) + } + else + { gsub("ALIGN","",$0) + } +} + +omitcrti==0 {print >> "crti.S"} +omitcrtn==0 {print >> "crtn.S"} + +END \ +{ close("crti.S"); + close("crtn.S"); +} -- cgit v1.2.3