Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: sysdeps/unix/make-syscalls.sh

Issue 7737022: Change make-syscalls.sh to make syscall interception possible. (Closed) Base URL: http://git.chromium.org/native_client/nacl-glibc.git@master
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #! /bin/sh 1 #! /bin/sh
2 2
3 # Usage: make-syscalls.sh ../sysdeps/unix/common 3 # Usage: make-syscalls.sh ../sysdeps/unix/common
4 # Expects $sysdirs in environment. 4 # Expects $sysdirs in environment.
5 5
6 ############################################################################## 6 ##############################################################################
7 7
8 # Syscall Signature Key Letters for BP Thunks: 8 # Syscall Signature Key Letters for BP Thunks:
9 # 9 #
10 # a: unchecked address (e.g., 1st arg to mmap) 10 # a: unchecked address (e.g., 1st arg to mmap)
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 esac 152 esac
153 153
154 echo " \$(common-objpfx)sysd-syscalls \\" 154 echo " \$(common-objpfx)sysd-syscalls \\"
155 echo " \$(common-objpfx)s-proto$cancellable.d" 155 echo " \$(common-objpfx)s-proto$cancellable.d"
156 case x"$callnum" in 156 case x"$callnum" in
157 x_) 157 x_)
158 echo "\ 158 echo "\
159 (echo '/* Dummy module requested by syscalls.list */'; \\" 159 (echo '/* Dummy module requested by syscalls.list */'; \\"
160 ;; 160 ;;
161 x*) 161 x*)
162 case $args in
163 *:*)
164 set `echo $args |
pasko-google - do not use 2011/09/06 14:18:56 type=`echo ...`
khim 2011/09/06 14:25:34 We need sed construct to pull other argument types
165 sed -e 's/^\(.\):\(.*\)/\2 \10/' \
166 -e 's/^\([^ ]\)\(.*\)/\2 \11/' \
167 -e 's/^\([^ ]\)\(.*\)/\2 \12/' \
168 -e 's/^\([^ ]\)\(.*\)/\2 \13/' \
169 -e 's/^\([^ ]\)\(.*\)/\2 \14/' \
170 -e 's/^\([^ ]\)\(.*\)/\2 \15/' \
171 -e 's/^\([^ ]\)\(.*\)/\2 \16/' \
172 -e 's/^\([^ ]\)\(.*\)/\2 \17/' \
173 -e 's/^\([^ ]\)\(.*\)/\2 \18/' \
174 -e 's/^\([^ ]\)\(.*\)/\2 \19/'`
175 ;;
176 *) set int;;
pasko-google - do not use 2011/09/06 14:18:56 too many leading spaces
khim 2011/09/06 14:25:34 Done.
177 esac
178 rtn=$1; shift
179 case $rtn in
180 [bp]*) frtn='void *';;
181 *) frtn='int ';;
182 esac
162 echo "\ 183 echo "\
163 \$(make-target-directory) 184 \$(make-target-directory)
164 » (echo 'int __unimplemented_syscall(const char *name);'; \\ 185 » (echo '#define $strong ${strong}_RENAMED'; \\"
165 » echo 'int $strong (void);'; \\ 186 for name in $weak; do
166 » echo 'libc_hidden_proto ($strong)'; \\ 187 case $name in
167 » echo 'int $strong (void) { return __unimplemented_syscall(\"$syscall\") ; }'; \\ 188 *@@*)
189 » base=`echo $name | sed 's/@@.*//'`
190 » echo "» echo '#define $base ${base}_RENAMED'; \\"
191 » ;;
192 *@*)
193 » base=`echo $name | sed 's/@.*//'`
194 » echo "» echo '#define $base ${base}_RENAMED'; \\"
195 » ;;
196 *)
197 » echo "» echo '#define $name ${name}_RENAMED'; \\"
pasko-google - do not use 2011/09/06 14:18:56 base=$name .. esac echo "..."
khim 2011/09/06 14:25:34 Done.
198 » ;;
199 esac
200 done
201 echo "\
202 » echo '#include <sysdep.h>'; \\
203 » echo '#undef $strong'; \\"
204 for name in $weak; do
205 case $name in
206 *@@*)
207 » base=`echo $name | sed 's/@@.*//'`
208 » echo "» echo '#undef $base'; \\"
209 » ;;
210 *@*)
211 » base=`echo $name | sed 's/@.*//'`
212 » echo "» echo '#undef $base'; \\"
213 » ;;
214 *)
215 » echo "» echo '#undef $name'; \\"
pasko-google - do not use 2011/09/06 14:18:56 ditto
khim 2011/09/06 14:25:34 Done.
216 » ;;
217 esac
218 done
219 echo "\
220 » echo '$frtn$strong ( ); /* $args */'; \\
221 » echo 'libc_hidden_proto ($strong)'; \\"
222 echo -n "» echo '$frtn$strong ("
223 sprtr=
224 for arg; do
225 echo -n "$sprtr"
226 case $arg in
227 [abIpP]*) echo -n "void *$arg";;
228 f*) echo -n "int $arg[2]";;
229 i*) echo -n "int $arg";;
230 n*) echo -n "size_t $arg";;
231 [sS]*) echo -n "char *$arg";;
232 V*) echo -n "unsigned char *$arg";;
233 W*) echo -n "int *$arg";;
234 esac
235 sprtr=", "
236 done
237 echo ") {'; \\"
238 echo -n "» echo ' return INLINE_SYSCALL ($syscall, $nargs"
239 for arg; do
240 echo -n ", $arg"
241 done
242 echo ");'; \\
243 » echo '}'; \\
168 echo 'strong_alias ($strong, __${syscall}_nocancel)'; \\ 244 echo 'strong_alias ($strong, __${syscall}_nocancel)'; \\
169 echo 'libc_hidden_def ($strong)'; \\" 245 echo 'libc_hidden_def ($strong)'; \\"
170 ;; 246 ;;
171 esac 247 esac
172 248
173 # Append any weak aliases or versions defined for this syscall function. 249 # Append any weak aliases or versions defined for this syscall function.
174 250
175 # A shortcoming in the current gas is that it will only allow one 251 # A shortcoming in the current gas is that it will only allow one
176 # version-alias per symbol. So we create new strong aliases as needed. 252 # version-alias per symbol. So we create new strong aliases as needed.
177 vcount="" 253 vcount=""
(...skipping 25 matching lines...) Expand all
203 echo " echo 'strong_alias ($strong, $source)'; \\" 279 echo " echo 'strong_alias ($strong, $source)'; \\"
204 fi 280 fi
205 echo " echo 'symbol_version($source, $base, $ver);'; \\" 281 echo " echo 'symbol_version($source, $base, $ver);'; \\"
206 ;; 282 ;;
207 !*) 283 !*)
208 name=`echo $name | sed 's/.//'` 284 name=`echo $name | sed 's/.//'`
209 echo " echo 'strong_alias ($strong, $name)'; \\" 285 echo " echo 'strong_alias ($strong, $name)'; \\"
210 echo " echo 'libc_hidden_def ($name)'; \\" 286 echo " echo 'libc_hidden_def ($name)'; \\"
211 ;; 287 ;;
212 *) 288 *)
213 » echo "» echo 'int $name (void);'; \\" 289 » echo "» echo '$frtn$name ( );'; \\"
214 echo " echo 'libc_hidden_proto ($name)'; \\" 290 echo " echo 'libc_hidden_proto ($name)'; \\"
215 echo " echo 'weak_alias ($strong, $name)'; \\" 291 echo " echo 'weak_alias ($strong, $name)'; \\"
216 echo " echo 'libc_hidden_weak ($name)'; \\" 292 echo " echo 'libc_hidden_weak ($name)'; \\"
217 ;; 293 ;;
218 esac 294 esac
219 done 295 done
220 296
221 # And finally, pipe this all into the compiler. 297 # And finally, pipe this all into the compiler.
222 echo ' ) | $(compile-syscall) '"\ 298 echo ' ) | $(compile-syscall) '"\
223 \$(foreach p,\$(patsubst %$file,%,\$(basename \$(@F))),\$(\$(p)CPPFLAGS))" 299 \$(foreach p,\$(patsubst %$file,%,\$(basename \$(@F))),\$(\$(p)CPPFLAGS))"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 ) | \$(COMPILE.c) -x c -o \$@ -" 413 ) | \$(COMPILE.c) -x c -o \$@ -"
338 ### Use this for debugging intermediate output: 414 ### Use this for debugging intermediate output:
339 ### ) >\$(@:.ob=.c) 415 ### ) >\$(@:.ob=.c)
340 ### \$(subst -c,-E,\$(COMPILE.c)) -o \$(@:.ob=.ib) \$(@:.ob=.c) 416 ### \$(subst -c,-E,\$(COMPILE.c)) -o \$(@:.ob=.ib) \$(@:.ob=.c)
341 ### \$(COMPILE.c) -x cpp-output -o \$@ \$(@:.ob=.ib)" 417 ### \$(COMPILE.c) -x cpp-output -o \$@ \$(@:.ob=.ib)"
342 echo endif 418 echo endif
343 ;; 419 ;;
344 esac 420 esac
345 421
346 done 422 done
OLDNEW
« sysdeps/nacl/unsupported/call_fallocate.S ('K') | « sysdeps/nacl/unsupported/call_pselect6.S ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698