srcanamdw/appdep/inc/appdep.hpp
author noe\swadi
Sat, 09 Jan 2010 10:04:12 +0530
changeset 0 509e4801c378
permissions -rw-r--r--
1. Copyrights changed to EPL 2. Feature updates mentioned in release notes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     1
/*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     8
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    11
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    12
* Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    13
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    14
* Description:  Header file of Appdep
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    15
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    16
*/
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    17
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    18
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    19
#ifndef __APPDEP_HPP__
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    20
#define __APPDEP_HPP__
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    21
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
#if (defined(_MSC_VER) && (_MSC_VER < 1400))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
  #error "ERROR: Minimum supported version of Visual C++ is 8.0 (2005)."
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
#endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
#ifdef _MSC_VER
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
  #pragma message("IMPORTANT: You can use Visual C++ to aid development, but please compile the releasable executable with MinGW/MSYS !!!")
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
  #pragma warning(disable:4267) // 'var' : conversion from 'size_t' to 'type', possible loss of data
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
  #pragma warning(disable:4996) // 'function': was declared deprecated
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
  #define _CRT_SECURE_NO_DEPRECATE
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
  #ifndef WIN32
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
    #error "ERROR: Only Win32 target supported!"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
  #endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
#endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
#include <algorithm>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
#include <string>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
#include <cctype>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
#include <fstream>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
#include <iostream>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
#include <vector>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
#include <sstream>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
#include <time.h>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
#include <sys/stat.h>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
#include <stdio.h>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
#include <boost/regex.hpp>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
#ifdef _MSC_VER
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
  #include <direct.h>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
  #define S_ISDIR(m)  ((m) & S_IFDIR)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
#else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
  #include <dirent.h>
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
#endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
using namespace std;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
#define APPDEP_VERSION "2.2"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
#define APPDEP_DATE "27th Nov 2009"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
#define APPDEP_COPYRIGHT_YEARS "2001-2009"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
#define CACHE_ST_FILENAME "appdep-cache_symbol_tables.txt"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
#define CACHE_DEP_FILENAME "appdep-cache_dependencies.txt"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
#define CACHE_ST_HEADER "appdep symbol tables cache version: 101"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
#define CACHE_DEP_HEADER "appdep dependencies cache version: 101"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
#define CACHE_FOOTER "#end"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
#define CACHE_COMMENT_CHAR '#'
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
#define CACHE_SEP "|"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
#define TEMP_FILENAME "appdep-temp.txt"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
#define SIS_TEMP_DIR "sistemp"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
#define UNKNOWN "unknown"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
#define NOT_VALID "not valid"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    74
#ifdef WIN32
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    75
  #define DIR_SEPARATOR "\\"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    76
  #define DIR_SEPARATOR2 '\\'
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
  #define DEFAULT_CACHE_DIR "epoc32\\tools\\s60rndtools\\appdep\\cache\\"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
  #define DUMPSIS_LOCATION "epoc32\\tools\\dumpsis.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
  #define PETRAN_LOCATION "epoc32\\tools\\petran.exe" // used for GCC toolchain
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
  #define ELFTRAN_LOCATION "epoc32\\tools\\elftran.exe" // used for other toolchains
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
  #define EPOC32_RELEASE "epoc32\\release\\"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
  #define GCC_NM_EXE "nm.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
  #define GCCE_NM_EXE "arm-none-symbianelf-nm.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
  #define GCCE_READELF_EXE "arm-none-symbianelf-readelf.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
  #define GCCE_CFILT_EXE "arm-none-symbianelf-c++filt.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
  #define RVCT_ARMAR_EXE "armar.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
  #define RVCT_FROMELF_EXE "fromelf.exe"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    88
  #define CERR_TO_NULL "2>NUL"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    89
  #define DIR_COMMAND "dir /b"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
  #define DEL_ALL_COMMAND "del /F /S /Q"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
#else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
  #define DIR_SEPARATOR "/"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
  #define DIR_SEPARATOR2 '/'
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
  #define DEFAULT_CACHE_DIR "epoc32/tools/s60rndtools/appdep/cache/"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
  #define DUMPSIS_LOCATION "epoc32/tools/dumpsis"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
  #define PETRAN_LOCATION "epoc32/tools/petran"   // used for GCC toolchain
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
  #define ELFTRAN_LOCATION "epoc32/tools/elftran" // used for other toolchains
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
  #define EPOC32_RELEASE "epoc32/release/"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
  #define GCC_NM_EXE "nm"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
  #define GCCE_NM_EXE "arm-none-symbianelf-nm"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
  #define GCCE_READELF_EXE "arm-none-symbianelf-readelf"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   102
  #define GCCE_CFILT_EXE "arm-none-symbianelf-c++filt"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   103
  #define RVCT_ARMAR_EXE "armar"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
  #define RVCT_FROMELF_EXE "fromelf"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
  #define CERR_TO_NULL "2>/dev/null"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
  #define DIR_COMMAND "ls --format=single-column"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
  #define DEL_ALL_COMMAND "rm -f -R"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
  #define _mkdir(X) mkdir(X, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
  #define _rmdir rmdir
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
  #define _unlink unlink
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
  #define _popen popen
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
  #define _pclose pclose
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
#endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
enum ExitStates
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
    EXIT_NORMAL = 0,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
    EXIT_INVALID_ARGUMENT,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
    EXIT_NO_TARGETS,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
    EXIT_WRONG_USAGE,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
    EXIT_CANNOT_CREATE_OUTPUT_FILE,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
    EXIT_TOOLCHAIN_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
    EXIT_TARGETDIR_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
    EXIT_CFILT_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
    EXIT_PETRAN_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
    EXIT_TOOLCHAIN_NOT_FOUND_FROM_PATH,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
    EXIT_PATH_VARIABLE_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
    EXIT_ONLY_SUPPORTED_IN_WIN32,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
    EXIT_CANNOT_WRITE_TO_TEMP_FILE,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
    EXIT_ORDINAL_LIST_CORRUPTED,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
    EXIT_COMPONENT_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
    EXIT_INVALID_ORDINAL,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
    EXIT_CANNOT_WRITE_TO_CACHE_FILE,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
    EXIT_CANNOT_OPEN_STATIC_DEPENDENCIES_TXT,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
    EXIT_OPENED_STATIC_DEPENDENCIES_TXT_NOT_SUPPORTED,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
    EXIT_DUMPSIS_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
    EXIT_SIS_FILE_NOT_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
    EXIT_SIS_FILE_NOT_SUPPORTED,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
    EXIT_NOT_SIS_FILE,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
    EXIT_SIS_FILE_CANNOT_OPEN_FOR_READING,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
    EXIT_TEMP_SIS_FILE_CANNOT_OPEN_FOR_WRITING,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
    EXIT_NO_PKG_FILE_FOUND,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
    EXIT_PKG_FILE_CANNOT_OPEN_FOR_READING,
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
    EXIT_PKG_FORMAT_NOT_SUPPORTED
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
struct ordinal
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
    unsigned int funcpos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
    string funcname;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
    ordinal(unsigned int fp, string fn)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
       funcpos = fp;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
       funcname = fn;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
struct import
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
    unsigned int funcpos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   162
    string funcname;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   163
    bool is_vtable;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   164
    unsigned int vtable_offset;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   166
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   167
struct dependency
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   168
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
    string filename;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
    vector<import> imports;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
struct binary_info
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
    string directory;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
    string filename;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
    string binary_format;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
    unsigned long file_size;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
    string uid1;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
    string uid2;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
    string uid3;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
    string secureid;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
    string vendorid;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
    unsigned long capabilities;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
    unsigned long min_heap_size;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
    unsigned long max_heap_size;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
    unsigned long stack_size;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
    time_t mod_time;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189
    vector<dependency> dependencies;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   190
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   191
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   192
struct import_library_info
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   193
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   194
    string directory;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   195
    string filename;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   196
    time_t mod_time;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   197
    vector<string> symbol_table;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   198
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   199
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   200
struct target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   201
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   202
    string name;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   203
    string release_dir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   204
    string release_lib_dir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   205
    string release_bin_dir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   206
    string cache_dir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   207
    string st_cache_path;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   208
    string dep_cache_path;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   209
    bool cache_files_valid;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   210
    vector<string> lib_files;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   211
    vector<string> bin_files;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   212
    vector<import_library_info> import_libraries;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   213
    vector<binary_info> binaries;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   214
};
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   215
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   216
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   217
// global variables
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   218
extern bool _cl_use_gcc;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   219
extern bool _cl_use_gcce;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   220
extern bool _cl_use_rvct;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   221
extern bool _cl_generate_clean_cache;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   222
extern bool _cl_update_cache;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   223
extern bool _cl_use_libs;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   224
extern bool _cl_show_ordinals;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   225
extern bool _cl_use_udeb;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   226
extern bool _cl_print_debug;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   227
extern bool _some_cache_needs_update;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   228
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   229
extern string _cl_toolsdir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   230
extern string _cl_cachedir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   231
extern string _cl_releasedir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   232
extern string _cl_targets;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   233
extern string _cl_cfiltloc;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   234
extern string _cl_outputfile;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   235
extern string _cl_configfile;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   236
extern string _cl_sisfiles;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   237
extern string _cl_usestaticdepstxt;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   238
extern string _cl_properties;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   239
extern string _cl_staticdeps;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   240
extern string _cl_dependson;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   241
extern string _cl_showfunctions;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   242
extern string _cl_usesfunction;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   243
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   244
extern string _gcc_nm_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   245
extern string _gcce_nm_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   246
extern string _gcce_readelf_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   247
extern string _gcce_cfilt_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   248
extern string _rvct_armar_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   249
extern string _rvct_fromelf_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   250
extern string _rvct_cfilt_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   251
extern string _petran_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   252
extern string _dumpsis_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   253
extern string _tempfile_location;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   254
extern string _target_mode;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   255
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   256
extern vector<target> _targets;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   257
extern vector<binary_info> _all_binary_infos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   258
extern vector<import_library_info> _all_import_library_infos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   259
extern vector<import_library_info> _changed_import_libraries;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   260
extern vector<string> _sisfiles;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   261
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   262
extern unsigned int _current_progress;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   263
extern unsigned int _current_progress_percentage;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   264
extern unsigned int _max_progress;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   265
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   266
extern ofstream _outputf;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   267
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   268
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   269
// from appdep_otherfunc.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   270
void ParseCommandLineParameters(int argc, char* argv[]);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   271
void ShowCommandLineOptionsAndExit();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   272
void DoInitialChecksAndPreparations();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   273
void ParseTargets();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   274
void DoCacheGenerationChecksAndPreparations();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   275
void GetToolsPathFromEnvironmentVariable();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   276
void FindImportLibrariesAndBinariesFromReleases();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   277
void GetFileNamesFromDirectory(const string& directory, const string& filter, vector<string>& resultset);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   278
void SetAndCheckPetranPath();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   279
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   280
// from appdep_utils.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   281
void PrintOutputLn(const string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   282
void MakeSureTrailingDirectoryMarkerExists(string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   283
bool FileExists(const string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   284
bool DirectoryExists(const string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   285
bool RemoveFile(const string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   286
bool RemoveDirectoryWithAllFiles(const string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   287
string LowerCase(const string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   288
string Int2Str(int value);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   289
int Str2Int(const string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   290
void MkDirAll(const string& path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   291
string& TrimRight(string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   292
string& TrimLeft(string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   293
string& TrimAll(string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   294
int StringICmp(const string& s1, const string& s2);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   295
int StringICmpFileNamesWithoutExtension(const string& s1, const string& s2);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   296
void InsertQuotesToFilePath(string& s);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   297
bool ExecuteCommand(const string& command, vector<string>& resultset);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   298
bool TimestampsMatches(const time_t& orginal_time, const time_t& new_time);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   299
void ShowProgressInfo(unsigned int& current_progress_percentage, unsigned int& current_progress, unsigned int& max_progress, bool print_initial_value);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   300
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   301
// from appdep_getters.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   302
void GetImportTableWithPetran(const string& petran_location, binary_info& b_info);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   303
bool ImportFunctionsHasSameOrdinal(import imp1, import imp2);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   304
void GetSymbolTableWithNM(const string& nm_location, const string& lib_directory, const string& lib_name, vector<string>& symbol_table);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   305
void GetSymbolTableWithReadelf(const string& readelf_location, const string& cfilt_location, const string& lib_directory, const string& lib_name, vector<string>& symbol_table);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   306
void GetSymbolTableWithArmar(const string& armar_location, const string& cfilt_location, const string& lib_directory, const string& lib_name, vector<string>& symbol_table);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   307
void GetSymbolTableWithFromelf(const string& fromelf_location, const string& cfilt_location, const string& lib_directory, const string& lib_name, vector<string>& symbol_table);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   308
void ConvertOrdinalListIntoSymbolTable(const vector<ordinal>& ordinals, vector<string>& symbol_table, const string& lib_path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   309
void DemangleOrdinalsInSymbolTable(const string& cfilt_location, vector<string>& symbol_table);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   310
bool OrdinalCompare(const ordinal& left, const ordinal& right);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   311
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   312
// from appdep_cache.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   313
void ReadDataFromSymbolTablesCache(target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   314
void ReadDataFromDependenciesCache(target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   315
void GetDataFromImportTables(target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   316
void GetDataFromBinaries(target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   317
void WriteDataToSymbolTableCacheFile(const target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   318
void WriteDataToDependenciesCacheFile(const target& a_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   319
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   320
// from appdep_statdeps.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   321
void GetDataFromStaticDependenciesTxt();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   322
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   323
// from appdep_sisfiles.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   324
void DoInitialChecksAndPreparationsForSisFiles();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   325
void AnalyseSisFiles();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   326
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   327
// from appdep_analysis.cpp
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   328
void DisplayProperties(const string& binary_name);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   329
void DisplayStaticDependencies(const string& binary_name);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   330
void DisplayDependents(const string& binary_name);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   331
void DisplayFunctions(const string& binary_name);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   332
void DisplayUsesFunction(const string& function_name);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   333
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   334
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   335
#endif // __APPDEP_HPP__