sourcepawn/compiler/binreloc.h
author David Anderson <dvander@alliedmods.net>
Wed Feb 25 20:07:12 2009 -0500 (2009-02-25)
changeset 2607 f3b8bbe17f85
parent 353 492a8d0d5f59
permissions -rw-r--r--
Backed out changeset fa286305bd3f
dvander@353
     1
/*
dvander@353
     2
 * BinReloc - a library for creating relocatable executables
dvander@353
     3
 * Written by: Hongli Lai <[email protected]>
dvander@353
     4
 * http://autopackage.org/
dvander@353
     5
 *
dvander@353
     6
 * This source code is public domain. You can relicense this code
dvander@353
     7
 * under whatever license you want.
dvander@353
     8
 *
dvander@353
     9
 * See http://autopackage.org/docs/binreloc/ for
dvander@353
    10
 * more information and how to use this.
dvander@353
    11
 */
dvander@353
    12
dvander@353
    13
#ifndef __BINRELOC_H__
dvander@353
    14
#define __BINRELOC_H__
dvander@353
    15
dvander@353
    16
#ifdef __cplusplus
dvander@353
    17
extern "C" {
dvander@353
    18
#endif /* __cplusplus */
dvander@353
    19
dvander@353
    20
dvander@353
    21
/** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */
dvander@353
    22
typedef enum {
dvander@353
    23
	/** Cannot allocate memory. */
dvander@353
    24
	BR_INIT_ERROR_NOMEM,
dvander@353
    25
	/** Unable to open /proc/self/maps; see errno for details. */
dvander@353
    26
	BR_INIT_ERROR_OPEN_MAPS,
dvander@353
    27
	/** Unable to read from /proc/self/maps; see errno for details. */
dvander@353
    28
	BR_INIT_ERROR_READ_MAPS,
dvander@353
    29
	/** The file format of /proc/self/maps is invalid; kernel bug? */
dvander@353
    30
	BR_INIT_ERROR_INVALID_MAPS,
dvander@353
    31
	/** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */
dvander@353
    32
	BR_INIT_ERROR_DISABLED
dvander@353
    33
} BrInitError;
dvander@353
    34
dvander@353
    35
dvander@353
    36
#ifndef BINRELOC_RUNNING_DOXYGEN
dvander@353
    37
/* Mangle symbol names to avoid symbol collisions with other ELF objects. */
dvander@353
    38
	#define br_init             SbCJ22537442193159_br_init
dvander@353
    39
	#define br_init_lib         SbCJ22537442193159_br_init_lib
dvander@353
    40
	#define br_find_exe         SbCJ22537442193159_br_find_exe
dvander@353
    41
	#define br_find_exe_dir     SbCJ22537442193159_br_find_exe_dir
dvander@353
    42
	#define br_find_prefix      SbCJ22537442193159_br_find_prefix
dvander@353
    43
	#define br_find_bin_dir     SbCJ22537442193159_br_find_bin_dir
dvander@353
    44
	#define br_find_sbin_dir    SbCJ22537442193159_br_find_sbin_dir
dvander@353
    45
	#define br_find_data_dir    SbCJ22537442193159_br_find_data_dir
dvander@353
    46
	#define br_find_locale_dir  SbCJ22537442193159_br_find_locale_dir
dvander@353
    47
	#define br_find_lib_dir     SbCJ22537442193159_br_find_lib_dir
dvander@353
    48
	#define br_find_libexec_dir SbCJ22537442193159_br_find_libexec_dir
dvander@353
    49
	#define br_find_etc_dir     SbCJ22537442193159_br_find_etc_dir
dvander@353
    50
	#define br_strcat           SbCJ22537442193159_br_strcat
dvander@353
    51
	#define br_build_path       SbCJ22537442193159_br_build_path
dvander@353
    52
	#define br_dirname          SbCJ22537442193159_br_dirname
dvander@353
    53
dvander@353
    54
dvander@353
    55
#endif
dvander@353
    56
int   br_init             (BrInitError *error);
dvander@353
    57
int   br_init_lib         (BrInitError *error);
dvander@353
    58
dvander@353
    59
char *br_find_exe         (const char *default_exe);
dvander@353
    60
char *br_find_exe_dir     (const char *default_dir);
dvander@353
    61
char *br_find_prefix      (const char *default_prefix);
dvander@353
    62
char *br_find_bin_dir     (const char *default_bin_dir);
dvander@353
    63
char *br_find_sbin_dir    (const char *default_sbin_dir);
dvander@353
    64
char *br_find_data_dir    (const char *default_data_dir);
dvander@353
    65
char *br_find_locale_dir  (const char *default_locale_dir);
dvander@353
    66
char *br_find_lib_dir     (const char *default_lib_dir);
dvander@353
    67
char *br_find_libexec_dir (const char *default_libexec_dir);
dvander@353
    68
char *br_find_etc_dir     (const char *default_etc_dir);
dvander@353
    69
dvander@353
    70
/* Utility functions */
dvander@353
    71
char *br_strcat  (const char *str1, const char *str2);
dvander@353
    72
char *br_build_path (const char *dir, const char *file);
dvander@353
    73
char *br_dirname (const char *path);
dvander@353
    74
dvander@353
    75
dvander@353
    76
#ifdef __cplusplus
dvander@353
    77
}
dvander@353
    78
#endif /* __cplusplus */
dvander@353
    79
dvander@353
    80
#endif /* __BINRELOC_H__ */