mirror of
https://github.com/frida/tinycc
synced 2024-11-27 18:19:35 +03:00
tccrun: another incompatible change to the tcc_relocate API
We are now compatible with the 0.9,25 version though. A special value for the second (ptr) argument is used to get the simple behavior as with the 0.9.24 version.
This commit is contained in:
parent
56e23984b9
commit
ca38792df1
11
libtcc.h
11
libtcc.h
@ -91,9 +91,14 @@ LIBTCCAPI int tcc_output_file(TCCState *s, const char *filename);
|
||||
tcc_relocate() before. */
|
||||
LIBTCCAPI int tcc_run(TCCState *s, int argc, char **argv);
|
||||
|
||||
/* Do all relocations (needed before using tcc_get_symbol())
|
||||
Returns -1 on error. */
|
||||
LIBTCCAPI int tcc_relocate(TCCState *s1);
|
||||
/* do all relocations (needed before using tcc_get_symbol())
|
||||
possible values for 'ptr':
|
||||
- TCC_RELOCATE_AUTO : Allocate and manage memory internally
|
||||
- NULL : return required memory size for the step below
|
||||
- memory address : copy code to memory passed by the caller
|
||||
returns -1 on error. */
|
||||
LIBTCCAPI int tcc_relocate(TCCState *s1, void *ptr);
|
||||
#define TCC_RELOCATE_AUTO (void*)1
|
||||
|
||||
/* return symbol value or NULL if not found */
|
||||
LIBTCCAPI void *tcc_get_symbol(TCCState *s, const char *name);
|
||||
|
8
tccrun.c
8
tccrun.c
@ -47,9 +47,13 @@ static void win64_add_function_table(TCCState *s1);
|
||||
/* Do all relocations (needed before using tcc_get_symbol())
|
||||
Returns -1 on error. */
|
||||
|
||||
LIBTCCAPI int tcc_relocate(TCCState *s1)
|
||||
LIBTCCAPI int tcc_relocate(TCCState *s1, void *ptr)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (TCC_RELOCATE_AUTO != ptr)
|
||||
return tcc_relocate_ex(s1, ptr);
|
||||
|
||||
#ifdef HAVE_SELINUX
|
||||
/* Use mmap instead of malloc for Selinux
|
||||
Ref http://www.gnu.org/s/libc/manual/html_node/File-Size.html */
|
||||
@ -87,7 +91,7 @@ LIBTCCAPI int tcc_run(TCCState *s1, int argc, char **argv)
|
||||
int (*prog_main)(int, char **);
|
||||
int ret;
|
||||
|
||||
if (tcc_relocate(s1) < 0)
|
||||
if (tcc_relocate(s1, TCC_RELOCATE_AUTO) < 0)
|
||||
return -1;
|
||||
|
||||
prog_main = tcc_get_symbol_err(s1, "main");
|
||||
|
@ -58,7 +58,7 @@ int main(int argc, char **argv)
|
||||
tcc_add_symbol(s, "add", add);
|
||||
|
||||
/* relocate the code */
|
||||
if (tcc_relocate(s) < 0)
|
||||
if (tcc_relocate(s, TCC_RELOCATE_AUTO) < 0)
|
||||
return 1;
|
||||
|
||||
/* get entry symbol */
|
||||
|
Loading…
Reference in New Issue
Block a user