Differences From
Artifact [e60df5a627]:
- Executable file
global/common.sh
— part of check-in
[e50a476efe]
at
2019-08-22 02:52:20
on branch trunk
— removed sneaky segfault in x86-64 syscall fn where %r8 (the register that contains the pointer to the syscall arguments from the C syscall wrapper, which need to be copied into the correct registers before the kernel is invoked) gets overwritten if the syscall valency > 5, because of overlapping ccall and syscall ABI argument registers - r8 is clobbered by argument 5 and any further attempts to use it as a ptr segfault at best. also modified the report function so that it immediate cancels compilation if a sub-process reports failure. changed allocator function signatures so they can return a condition code if the kernel reports an error; updated example code so it compiles and runs without fault.
(user:
lexi,
size: 1780)
[annotate]
[blame]
[check-ins using]
57 57 fi
58 58
59 59 # the following function is called to report a command invocation
60 60 # the person compiling the library. the first argument should be
61 61 # an ansi format string; this is used to color-code the tool being
62 62 # launched and thus should be different for each one.
63 63
64 -report() { announce $@; $@; }
64 +report() {
65 + announce $@; $@;
66 + status=$?
67 + if test $status -ne 0; then
68 + args=($@)
69 + say "process ${args[0]} failed with status code $status"
70 + exit $status
71 + fi
72 +}