merge from gcc
This commit is contained in:
		| @@ -1,3 +1,7 @@ | ||||
| 2006-04-11  Jim Blandy  <jimb@codesourcery.com> | ||||
|  | ||||
| 	* libiberty.h (pex_input_file, pex_input_pipe): New declarations. | ||||
|  | ||||
| 2006-04-06  H.J. Lu  <hongjiu.lu@intel.com> | ||||
|  | ||||
| 	* bfdlink.h (bfd_link_info): Replace need_relax_finalize with | ||||
|   | ||||
| @@ -448,6 +448,47 @@ extern const char *pex_run (struct pex_obj *obj, int flags, | ||||
| 			    const char *outname, const char *errname, | ||||
| 			    int *err); | ||||
|  | ||||
| /* Return a `FILE' pointer FP for the standard input of the first | ||||
|    program in the pipeline; FP is opened for writing.  You must have | ||||
|    passed `PEX_USE_PIPES' to the `pex_init' call that returned OBJ. | ||||
|    You must close FP yourself with `fclose' to indicate that the | ||||
|    pipeline's input is complete. | ||||
|  | ||||
|    The file descriptor underlying FP is marked not to be inherited by | ||||
|    child processes. | ||||
|  | ||||
|    This call is not supported on systems which do not support pipes; | ||||
|    it returns with an error.  (We could implement it by writing a | ||||
|    temporary file, but then you would need to write all your data and | ||||
|    close FP before your first call to `pex_run' -- and that wouldn't | ||||
|    work on systems that do support pipes: the pipe would fill up, and | ||||
|    you would block.  So there isn't any easy way to conceal the | ||||
|    differences between the two types of systems.) | ||||
|  | ||||
|    If you call both `pex_write_input' and `pex_read_output', be | ||||
|    careful to avoid deadlock.  If the output pipe fills up, so that | ||||
|    each program in the pipeline is waiting for the next to read more | ||||
|    data, and you fill the input pipe by writing more data to FP, then | ||||
|    there is no way to make progress: the only process that could read | ||||
|    data from the output pipe is you, but you are blocked on the input | ||||
|    pipe.  */ | ||||
|  | ||||
| extern FILE *pex_write_input (struct pex_obj *obj, int binary); | ||||
|  | ||||
| /* Return a stream for a temporary file to pass to the first program | ||||
|    in the pipeline as input.  The file name is chosen as for pex_run. | ||||
|    pex_run closes the file automatically; don't close it yourself.  */ | ||||
|  | ||||
| extern FILE *pex_input_file (struct pex_obj *obj, int flags, | ||||
|                              const char *in_name); | ||||
|  | ||||
| /* Return a stream for a pipe connected to the standard input of the | ||||
|    first program in the pipeline.  You must have passed | ||||
|    `PEX_USE_PIPES' to `pex_init'.  Close the returned stream | ||||
|    yourself.  */ | ||||
|  | ||||
| extern FILE *pex_input_pipe (struct pex_obj *obj, int binary); | ||||
|  | ||||
| /* Read the standard output of the last program to be executed. | ||||
|    pex_run can not be called after this.  BINARY should be non-zero if | ||||
|    the file should be opened in binary mode; this is ignored on Unix. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user