osprey/fake_ld/process.c File Reference

#include <stdlib.h>
#include <unistd.h>
#include <libgen.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <sys/dir.h>
#include <sys/wait.h>
#include <alloca.h>
#include <signal.h>
#include <limits.h>
#include "bfd.h"

Include dependency graph for process.c:

Go to the source code of this file.

Defines

#define FREE(ptr)   free((void *) (ptr))
#define MALLOC_ASSERT(addr)   if (addr == 0) msg(ER_FATAL, ERN_MALLOC)
#define MALLOC(nbytes)   malloc((size_t)(nbytes))
#define REALLOC(ptr, size)   realloc((void *)(ptr), (size_t)(size))
#define UNLINK(path)   unlink((const char *)(path))
#define MKDIR(path, mode)   mkdir((const char *)(path), (mode_t)(mode))
#define RMDIR(path)   rmdir((const char *)(path))
#define CLOSE(fid)   close((int)(fid))
#define ALLOCA(size)   alloca((unsigned int)(size))
#define FCHMOD(fid, mode)   fchmod((int)(fid), (mode_t)(mode))
#define MUNMAP(addr, len)   munmap((void *)(addr), (int)(len))
#define MEMCPY(s1, s2, n)   memcpy((void *)(s1), (void *)(s2), (size_t)(n))
#define OBJ_ASSERT(EX, obj, str)   if (!(EX)) {fprintf(stderr,"%s: %s\n", obj->name, str); exit(1);}

Functions/Subroutines

static void dump_argv (string *argv)
int do_compile (string *argv)
static void ld_kill_compilation (int sig)
void add_to_tmp_file_list (string path)
static void remove_from_tmp_file_list (string path)
void cleanup_all_files (void)
string make_temp_file (string name, char suffix)
 add_to_tmp_file_list (tmpdir)
string create_unique_file (string path, char suffix)
string create_tmp_file (string filename)
stringget_command_line (bfd *abfd, string in_path, string out_path, int *arg_count)
static int extract_archive_member (bfd *abfd, string path)
int make_link (const string dest, const string src)
string ld_compile (bfd *abfd)

Variables

char ** environ_vars
string toolroot = 0
static int active_pid
static mode_t cmask = 0
static string thisfile = __FILE__
static stringtmp_list = 0
static int tmp_list_size = 0
static int tmp_list_max = 0
string tmpdir = 0
static int tmpdir_length
 return


Define Documentation

#define ALLOCA ( size   )     alloca((unsigned int)(size))

Definition at line 105 of file process.c.

#define CLOSE ( fid   )     close((int)(fid))

Definition at line 102 of file process.c.

#define FCHMOD ( fid,
mode   )     fchmod((int)(fid), (mode_t)(mode))

Definition at line 108 of file process.c.

#define FREE ( ptr   )     free((void *) (ptr))

Definition at line 81 of file process.c.

#define MALLOC ( nbytes   )     malloc((size_t)(nbytes))

Definition at line 87 of file process.c.

#define MALLOC_ASSERT ( addr   )     if (addr == 0) msg(ER_FATAL, ERN_MALLOC)

Definition at line 84 of file process.c.

#define MEMCPY ( s1,
s2,
n   )     memcpy((void *)(s1), (void *)(s2), (size_t)(n))

Definition at line 114 of file process.c.

#define MKDIR ( path,
mode   )     mkdir((const char *)(path), (mode_t)(mode))

Definition at line 96 of file process.c.

#define MUNMAP ( addr,
len   )     munmap((void *)(addr), (int)(len))

Definition at line 111 of file process.c.

#define OBJ_ASSERT ( EX,
obj,
str   )     if (!(EX)) {fprintf(stderr,"%s: %s\n", obj->name, str); exit(1);}

Definition at line 119 of file process.c.

#define REALLOC ( ptr,
size   )     realloc((void *)(ptr), (size_t)(size))

Definition at line 90 of file process.c.

#define RMDIR ( path   )     rmdir((const char *)(path))

Definition at line 99 of file process.c.

#define UNLINK ( path   )     unlink((const char *)(path))

Definition at line 93 of file process.c.


Function Documentation

add_to_tmp_file_list ( tmpdir   ) 

void add_to_tmp_file_list ( string  path  ) 

Definition at line 229 of file process.c.

References DEFAULT_TMP_LIST_SIZE, MALLOC, MALLOC_ASSERT, REALLOC, tmp_list_max, and tmp_list_size.

void cleanup_all_files ( void   ) 

Definition at line 272 of file process.c.

References i, LD_IPA_KEEP_TEMPS, RMDIR, tmp_list_size, and UNLINK.

string create_tmp_file ( string  filename  ) 

Definition at line 477 of file process.c.

References exit(), fclose(), fopen, FREE, ipa_copy_of(), MALLOC, mktemp, NULL, perror(), strcat(), strcpy, and strlen().

Referenced by ipa_compile_init(), and ipacom_doit().

string create_unique_file ( string  path,
char  suffix 
)

int do_compile ( string argv  ) 

static void dump_argv ( string argv  )  [static]

Definition at line 148 of file process.c.

References fprintf(), fputc(), and fputs().

static int extract_archive_member ( bfd abfd,
string  path 
) [static]

string* get_command_line ( bfd abfd,
string  in_path,
string  out_path,
int *  arg_count 
)

string ld_compile ( bfd abfd  ) 

static void ld_kill_compilation ( int  sig  )  [static]

Definition at line 206 of file process.c.

References active_pid, and kill.

int make_link ( const string  dest,
const string  src 
)

Definition at line 640 of file process.c.

References concat_names(), exit(), FREE, getcwd, NULL, PATH_MAX, perror(), symlink(), and tmp.

string make_temp_file ( string  name,
char  suffix 
)

Definition at line 299 of file process.c.

References access, c, count, d, exit(), F_OK, fprintf(), ipa_copy_of(), len, n, path, PATH_MAX, s, sprintf(), strcpy, and strlen().

static void remove_from_tmp_file_list ( string  path  )  [static]

Definition at line 252 of file process.c.

References tmp_list_size.


Variable Documentation

int active_pid [static]

Definition at line 129 of file process.c.

Referenced by do_compile(), ld_compile(), and ld_kill_compilation().

mode_t cmask = 0 [static]

Definition at line 131 of file process.c.

Referenced by create_unique_file(), emit_numeric_escape(), and wide_str_to_charconst().

char** environ_vars

Definition at line 54 of file ipa_cmdline.c.

Referenced by do_compile(), exec_smake(), and ipa_search_command_line().

return

Definition at line 436 of file process.c.

string thisfile = __FILE__ [static]

Definition at line 133 of file process.c.

string* tmp_list = 0 [static]

Definition at line 135 of file process.c.

Referenced by bblist_alloc().

int tmp_list_max = 0 [static]

Definition at line 137 of file process.c.

Referenced by add_to_tmp_file_list().

int tmp_list_size = 0 [static]

Definition at line 136 of file process.c.

Referenced by add_to_tmp_file_list(), cleanup_all_files(), and remove_from_tmp_file_list().

int tmpdir_length [static]

Definition at line 139 of file process.c.

Referenced by create_unique_file().


Generated on Wed Apr 8 15:07:37 2009 for Open64 by  doxygen 1.5.6