[klibc] [mips] pipe doesn't work in dash

H. Peter Anvin
2006-01-08T14:01:38Z

Martin Michlmayr wrote:
> Pipe doesn't work in dash on mips/mipsel - everything delivered to a
> pipe is shown on stdout:
>
> mipsel:
> $ echo foo | cat > ~/d
> foo
> <ctrl-c pressed manually>
> $ cat ~/d
> $
>
> i386:
> $ echo foo | cat > ~/d
> $ cat ~/d
> foo
> $
>
> This may be related to the following warnings during compilation but
> I'm not sure:
>
> klibc/arch/mips/syscall.S: Assembler messages:
> klibc/arch/mips/syscall.S:12: Warning: Macro instruction expanded into
multiple instructions in a branch delay slot
>

This one is actually OK, although probably a bit ugly (we really should
expand this out explicitly.)

Unfortunately my MIPS box bit the dust; Ralf said at one point he'd try
to get me a development board from Broadcom which never materialized; so
I have absolutely no way to test any of this...

pipe(2) is a weird system call on many architectures, due to attempts at
staying binary compatible with various weird native-Unix hacks; on MIPS
it's in special assembly code in arch/mips/pipe.S.

	-hpa