| 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-- |
| 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__ */ |