Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
ir_bwrite.cxx File Reference
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <alloca.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <elf.h>
#include <sys/elf_whirl.h>
#include <cmplrs/rcodes.h>
#include "x_stdlib.h"
#include "defs.h"
#include "alignof.h"
#include "erglob.h"
#include "errors.h"
#include "opcode.h"
#include "mempool.h"
#include "strtab.h"
#include "symtab.h"
#include "const.h"
#include "targ_const.h"
#include "irbdata.h"
#include "config_targ.h"
#include "config_elf_targ.h"
#include "wn_core.h"
#include "wn.h"
#include "wn_map.h"
#include "dwarf_DST_mem.h"
#include "pu_info.h"
#include "ir_elf.h"
#include "ir_bwrite.h"
#include "ir_bcom.h"
#include "ir_bread.h"
#include "tracing.h"
#include "glob.h"
#include "pf_cg.h"
#include "instr_reader.h"
#include "fb_whirl.h"
Include dependency graph for ir_bwrite.cxx:

Go to the source code of this file.

Defines

#define USE_STANDARD_TYPES   /* override unwanted defines in "defs.h" */
#define MMAP(addr, len, prot, flags, fd, off)
#define MUNMAP(addr, len)   munmap((char *)(addr), (size_t)(len))
#define OPEN(path, flag, mode)   open((const char *)(path), (int)(flag), (mode_t)(mode))
#define MAPPED_SIZE   0x400000
#define DEFAULT_NUM_OF_SECTIONS   8
#define DEFAULT_TMPDIR   "/usr/tmp"
#define DEFAULT_TEMPLATE   "/elf_wnXXXXXX"
#define PF_PTR_ADDR(offset)   ((PF_POINTER *)(fl->map_addr + (offset)))

Typedefs

typedef void(* SIG_HANDLER )(int)

Functions

void * C_Dep_Graph (void)
void Depgraph_Write (void *depgraph, Output_File *fl, WN_MAP off_map)
static void cleanup (Output_File *fl)
void ir_bwrite_signal_handler (int sig, int err_num)
static Sectionget_section (Elf64_Word sh_info, char *name, Output_File *fl)
template<class Shdr >
UINT64 layout_sections (Shdr &strtab_sec, Output_File *fl)
template<class ELF >
static void write_output (UINT64 e_shoff, const typename ELF::Elf_Shdr &strtab_sec, Output_File *fl, const ELF &tag)
static int create_temp_file (Output_File *fl)
Output_FileWN_open_output (const char *file_name)
void WN_write_PU_Infos (PU_Info *pu_list, Output_File *fl)
void WN_write_tree (PU_Info *pu, WN_MAP off_map, Output_File *fl)
void WN_write_flags (INT argc, char **argv, Output_File *fl)
void WN_write_globals (Output_File *fl)
void WN_write_symtab (PU_Info *pu, Output_File *fl)
void WN_write_strtab (const void *strtab, UINT64 size, Output_File *fl)
void WN_write_dst (DST_TYPE dst, Output_File *fl)
void IPA_write_summary (void(*IPA_irb_write_summary)(Output_File *), Output_File *fl)
void WN_write_prefetch (PU_Info *pu, WN_MAP off_map, Output_File *fl)
template<class MAP_ENTRY_TYPE >
static MAP_ENTRY_TYPE WN_MAP_retrieve (WN_MAP, WN *, MAP_ENTRY_TYPE)
static INT32 WN_MAP_retrieve (WN_MAP wn_map, WN *wn, INT32)
static INT64 WN_MAP_retrieve (WN_MAP wn_map, WN *wn, INT64)
static void * WN_MAP_retrieve (WN_MAP wn_map, WN *wn, void *)
template<class MAP_ENTRY_TYPE >
static void WN_write_generic_map (PU_Info *pu, WN_MAP off_map, Output_File *fl, INT32 subsection_type, WN_MAP value_map, const char *subsection_name, MAP_ENTRY_TYPE)
void WN_write_INT32_map (PU_Info *pu, WN_MAP off_map, Output_File *fl, INT32 subsection_type, WN_MAP value_map, const char *subsection_name)
void WN_write_voidptr_map (PU_Info *pu, WN_MAP off_map, Output_File *fl, INT32 subsection_type, WN_MAP value_map, const char *subsection_name)
void IPA_copy_PU (PU_Info *pu, char *section_base, Output_File *outfile)
void WN_write_revision (Output_File *fl)
void WN_close_output (Output_File *fl)
void WN_close_file (void *this_fl)
void Write_PU_Info (PU_Info *pu)
Output_FileOpen_Output_Info (const char *output_file)
void Write_Global_Info (PU_Info *pu_tree)
void Close_Output_Info (void)

Variables

BOOL Write_BE_Maps = FALSE
BOOL Write_AC_INTERNAL_Map = FALSE
BOOL Write_ALIAS_CLASS_Map = FALSE
WN ** prefetch_ldsts
INT num_prefetch_ldsts
INT max_num_prefetch_ldsts
WN ** alias_classes
INT num_alias_class_nodes
INT max_alias_class_nodes
WN ** ac_internals
INT num_ac_internal_nodes
INT max_ac_internal_nodes
static SIG_HANDLER old_sigsegv
static SIG_HANDLER old_sigbus
Output_FileCurrent_Output = 0
static Output_Fileir_output

Define Documentation

#define DEFAULT_NUM_OF_SECTIONS   8

Definition at line 201 of file ir_bwrite.cxx.

Referenced by get_section().

#define DEFAULT_TEMPLATE   "/elf_wnXXXXXX"

Definition at line 521 of file ir_bwrite.cxx.

Referenced by create_temp_file().

#define DEFAULT_TMPDIR   "/usr/tmp"

Definition at line 520 of file ir_bwrite.cxx.

Referenced by create_temp_file().

#define MAPPED_SIZE   0x400000

Definition at line 138 of file ir_bwrite.cxx.

Referenced by WN_open_output().

#define MMAP (   addr,
  len,
  prot,
  flags,
  fd,
  off 
)
Value:
mmap((void *)(addr), (size_t)(len), (int)(prot), (int)(flags),  \
         (int)(fd), (off_t)(off))

Definition at line 118 of file ir_bwrite.cxx.

#define MUNMAP (   addr,
  len 
)    munmap((char *)(addr), (size_t)(len))

Definition at line 122 of file ir_bwrite.cxx.

Referenced by WN_close_file(), and WN_close_output().

#define OPEN (   path,
  flag,
  mode 
)    open((const char *)(path), (int)(flag), (mode_t)(mode))

Definition at line 125 of file ir_bwrite.cxx.

Referenced by WN_open_output().

#define PF_PTR_ADDR (   offset)    ((PF_POINTER *)(fl->map_addr + (offset)))

Referenced by WN_write_prefetch().

#define USE_STANDARD_TYPES   /* override unwanted defines in "defs.h" */

Definition at line 53 of file ir_bwrite.cxx.


Typedef Documentation

typedef void(* SIG_HANDLER)(int)

Definition at line 130 of file ir_bwrite.cxx.


Function Documentation

void* C_Dep_Graph ( void  )
static void cleanup ( Output_File fl) [static]

Definition at line 142 of file ir_bwrite.cxx.

References output_file::file_size, free(), output_file::map_addr, NULL, output_file::num_of_section, output_file::output_fd, and output_file::section_list.

Referenced by MDclose(), WN_close_file(), and WN_close_output().

Here is the call graph for this function:

void Close_Output_Info ( void  )

Definition at line 1415 of file ir_bwrite.cxx.

References WN_close_output(), and WN_write_revision().

Referenced by ir_sel(), main(), and PDGCS_terminate().

Here is the call graph for this function:

static int create_temp_file ( Output_File fl) [static]

Definition at line 524 of file ir_bwrite.cxx.

References DEFAULT_TEMPLATE, DEFAULT_TMPDIR, fd, output_file::file_name, getenv(), path, strcpy, unlink, and ux_mkstemp().

Referenced by WN_open_output().

Here is the call graph for this function:

void Depgraph_Write ( void *  depgraph,
Output_File fl,
WN_MAP  off_map 
)
void IPA_write_summary ( void(*)(Output_File *)  IPA_irb_write_summary,
Output_File fl 
)
void ir_bwrite_signal_handler ( int  sig,
int  err_num 
)

Definition at line 167 of file ir_bwrite.cxx.

References Doing_mmapped_io, Fatal_Error(), output_file::file_name, getpid, old_sigbus, and old_sigsegv.

Referenced by WN_open_output().

Here is the call graph for this function:

template<class Shdr >
UINT64 layout_sections ( Shdr &  strtab_sec,
Output_File fl 
)
Output_File* Open_Output_Info ( const char *  output_file)

Definition at line 1388 of file ir_bwrite.cxx.

References EC_IR_Create, ErrMsg(), errno, ir_output, Set_Error_Phase(), and WN_open_output().

Referenced by ir_sel(), main(), PDGCS_initialize(), and Phase_Init().

Here is the call graph for this function:

void WN_close_file ( void *  this_fl)
template<class MAP_ENTRY_TYPE >
static MAP_ENTRY_TYPE WN_MAP_retrieve ( WN_MAP  ,
WN ,
MAP_ENTRY_TYPE   
) [inline, static]

Referenced by WN_write_generic_map().

static INT32 WN_MAP_retrieve ( WN_MAP  wn_map,
WN wn,
INT32   
) [inline, static]

Definition at line 1073 of file ir_bwrite.cxx.

References WN_MAP32_Get.

static INT64 WN_MAP_retrieve ( WN_MAP  wn_map,
WN wn,
INT64   
) [inline, static]

Definition at line 1079 of file ir_bwrite.cxx.

References WN_MAP64_Get.

static void* WN_MAP_retrieve ( WN_MAP  wn_map,
WN wn,
void *   
) [inline, static]

Definition at line 1085 of file ir_bwrite.cxx.

References WN_MAP_Get.

void WN_write_dst ( DST_TYPE  dst,
Output_File fl 
)
template<class MAP_ENTRY_TYPE >
static void WN_write_generic_map ( PU_Info pu,
WN_MAP  off_map,
Output_File fl,
INT32  subsection_type,
WN_MAP  value_map,
const char *  subsection_name,
MAP_ENTRY_TYPE   
) [inline, static]
void WN_write_INT32_map ( PU_Info pu,
WN_MAP  off_map,
Output_File fl,
INT32  subsection_type,
WN_MAP  value_map,
const char *  subsection_name 
)

Definition at line 1157 of file ir_bwrite.cxx.

References WN_write_generic_map().

Referenced by Write_PU_Info().

Here is the call graph for this function:

void WN_write_strtab ( const void *  strtab,
UINT64  size,
Output_File fl 
)
void WN_write_voidptr_map ( PU_Info pu,
WN_MAP  off_map,
Output_File fl,
INT32  subsection_type,
WN_MAP  value_map,
const char *  subsection_name 
)

Definition at line 1169 of file ir_bwrite.cxx.

References WN_write_generic_map().

Here is the call graph for this function:

void Write_Global_Info ( PU_Info pu_tree)

Definition at line 1400 of file ir_bwrite.cxx.

References Current_DST, Index_To_Str(), Set_Error_Phase(), STR_Table_Size(), WN_write_dst(), WN_write_globals(), WN_write_PU_Infos(), and WN_write_strtab().

Referenced by ir_sel(), main(), and PDGCS_terminate().

Here is the call graph for this function:


Variable Documentation

Definition at line 87 of file ir_bcom.cxx.

Definition at line 82 of file ir_bcom.cxx.

Definition at line 135 of file ir_bwrite.cxx.

Referenced by ir_b_copy_file(), and ir_b_save_buf().

Definition at line 1348 of file ir_bwrite.cxx.

Referenced by Open_Output_Info().

Definition at line 89 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 84 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 79 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 88 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 83 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 78 of file ir_bcom.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

Definition at line 133 of file ir_bwrite.cxx.

Referenced by ir_bwrite_signal_handler(), and WN_open_output().

Definition at line 132 of file ir_bwrite.cxx.

Referenced by ir_bwrite_signal_handler(), and WN_open_output().

Definition at line 77 of file ir_bcom.cxx.

Definition at line 96 of file ir_bwrite.cxx.

Referenced by ir_b_write_tree(), and WN_write_tree().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines