libk  Check-in [49bf71fb47]

Overview
Comment:enable debugging and add -ffreestanding to gcc cmd line to squash attempts to "optimize" functions by converting them to libc calls, e.g. turning kmzero() calls into memset() calls
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 49bf71fb47fe3eb8735a26becb29a36ead58f21cbfe776b4c043fd9b654f2f06
User & Date: lexi on 2019-08-21 01:58:02
Other Links: manifest | tags
Context
2019-08-21
03:10
add assembly output flag to build.sh check-in: 06e32bd3b4 user: lexi tags: trunk
01:58
enable debugging and add -ffreestanding to gcc cmd line to squash attempts to "optimize" functions by converting them to libc calls, e.g. turning kmzero() calls into memset() calls check-in: 49bf71fb47 user: lexi tags: trunk
01:20
rename $out build var to $to for nixos compat; refactor announce command to choose a color automatically instead of forcing it to be specified on every command line check-in: b590aba21d user: lexi tags: trunk
Changes

Modified build.sh from [b2a27b403b] to [3df2029917].

   114    114   	local output=$2
   115    115   	local flags=$3
   116    116   	if test -e "$output"; then
   117    117   		if test ! "$output" -ot "$src"; then
   118    118   			return
   119    119   		fi 
   120    120   	fi
   121         -	          $m4 $macro_compile_env -I "$gen" $flags "$src"  > "$output"
   122         -	announce  $m4 $macro_compile_env -I "$gen" $flags "$src" \> "$output"
          121  +	if test "$debug" = yes; then
          122  +		local dflag=-Dcompile_debug=yes
          123  +	fi
          124  +	         $m4 $macro_compile_env $dflag -I "$gen" $flags "$src"  > "$output"
          125  +	announce $m4 $macro_compile_env $dflag -I "$gen" $flags "$src" \> "$output"
   123    126   	# yes, this is incredibly stupid. if you know a better way, feel
   124    127   	# free to submit a fix. the problem is there's no way to pass >
   125    128   	# to report in such a way that it'll do the right thing, and if
   126    129   	# you just write > it redirects *report's* output, instead of
   127    130   	# m4's. piece of shit that it is, m4 doesn't have any way to emit
   128    131   	# output into a fille - stdout only apparently. tl;dr i hate bash.
   129    132   }
................................................................................
   132    135   	local output=$2
   133    136   	local flags=$3
   134    137   	if test -e "$output"; then
   135    138   		if test ! "$output" -ot "$src"; then
   136    139   			return
   137    140   		fi
   138    141   	fi
   139         -	report $asm $flags "-f$bin_fmt" -i "$gen" "$src" -o "$output";
          142  +	if test "$debug" = yes; then
          143  +		local dflag="-g dwarf2"
          144  +	fi
          145  +	report $asm $flags $dflag "-f$bin_fmt" -i "$gen" "$src" -o "$output";
   140    146   }
   141    147   comp_co()  { comp_c $1 $2 "-c -fPIC"; }
   142    148   comp_c(){
   143    149   	local src=$1
   144    150   	local output=$2
   145    151   	local flags=$3
   146    152   	if test -e "$output"; then
   147    153   		if test ! "$output" -ot "$src"; then
   148    154   			return
   149    155   		fi
   150    156   	fi
   151    157   	# only rebuild the file if the source file is newer
   152         -	report $cc $src $3 -std=c11 -isystem "$to" -isystem "$gen" -isystem "arch/" -nostdlib "-L$to" "-o$output"
          158  +	if test "$debug" = yes; then
          159  +		local dflag="-g"
          160  +	else
          161  +		local dflag="-O4"
          162  +	fi
          163  +	report $cc $src $3 $dflag -std=c11 -isystem "$to" -isystem "$gen" -isystem "arch/" -ffreestanding -nostdlib "-L$to" "-o$output"
   153    164   }
   154    165   
   155    166   say "commencing libk build $build at $(timestamp)"
   156    167   # set -x
   157    168   
   158    169   # get type data
   159    170   mkdir -p $gen