aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrischka <grischka>2010-01-14 20:56:04 +0100
committergrischka <grischka>2010-01-14 20:59:42 +0100
commit5299142286b4f5e6344ea9e2f905cf2e84566006 (patch)
tree1d5e3879711e41f9c223e55146e6c241d60256ff
parent2341ee5142c184e06964f66696ebf88931953e7d (diff)
downloadtinycc-5299142286b4f5e6344ea9e2f905cf2e84566006.tar.gz
tinycc-5299142286b4f5e6344ea9e2f905cf2e84566006.tar.bz2
x86-64: use uplong for symbol values
-rw-r--r--libtcc.c2
-rw-r--r--libtcc.h2
-rw-r--r--tcc.h2
-rw-r--r--tccelf.c22
4 files changed, 13 insertions, 15 deletions
diff --git a/libtcc.c b/libtcc.c
index ae80bc6..e0e8f91 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -1213,7 +1213,7 @@ LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname)
return -1;
}
-LIBTCCAPI int tcc_add_symbol(TCCState *s, const char *name, void *val)
+LIBTCCAPI int tcc_add_symbol(TCCState *s, const char *name, const void *val)
{
#ifdef TCC_TARGET_PE
pe_putimport(s, 0, name, val);
diff --git a/libtcc.h b/libtcc.h
index ada20c2..b661fda 100644
--- a/libtcc.h
+++ b/libtcc.h
@@ -80,7 +80,7 @@ LIBTCCAPI int tcc_add_library_path(TCCState *s, const char *pathname);
LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname);
/* add a symbol to the compiled program */
-LIBTCCAPI int tcc_add_symbol(TCCState *s, const char *name, void *val);
+LIBTCCAPI int tcc_add_symbol(TCCState *s, const char *name, const void *val);
/* output an executable, library or object file. DO NOT call
tcc_relocate() before. */
diff --git a/tcc.h b/tcc.h
index 780c18e..55f3626 100644
--- a/tcc.h
+++ b/tcc.h
@@ -1062,7 +1062,7 @@ typedef struct {
ST_FUNC Section *new_symtab(TCCState *s1, const char *symtab_name, int sh_type, int sh_flags, const char *strtab_name, const char *hash_name, int hash_sh_flags);
ST_FUNC int put_elf_str(Section *s, const char *sym);
-ST_FUNC int put_elf_sym(Section *s, unsigned long value, unsigned long size, int info, int other, int shndx, const char *name);
+ST_FUNC int put_elf_sym(Section *s, uplong value, unsigned long size, int info, int other, int shndx, const char *name);
ST_FUNC int add_elf_sym(Section *s, uplong value, unsigned long size, int info, int other, int sh_num, const char *name);
ST_FUNC int find_elf_sym(Section *s, const char *name);
ST_FUNC void put_elf_reloc(Section *symtab, Section *s, unsigned long offset, int type, int symbol);
diff --git a/tccelf.c b/tccelf.c
index 41f820b..a5385b1 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -97,9 +97,8 @@ static void rebuild_hash(Section *s, unsigned int nb_buckets)
}
/* return the symbol number */
-ST_FUNC int put_elf_sym(Section *s,
- unsigned long value, unsigned long size,
- int info, int other, int shndx, const char *name)
+ST_FUNC int put_elf_sym(Section *s, uplong value, unsigned long size,
+ int info, int other, int shndx, const char *name)
{
int name_offset, sym_index;
int nbuckets, h;
@@ -483,7 +482,7 @@ ST_FUNC void relocate_syms(TCCState *s1, int do_resolve)
#ifndef TCC_TARGET_PE
#ifdef TCC_TARGET_X86_64
#define JMP_TABLE_ENTRY_SIZE 14
-static unsigned long add_jmp_table(TCCState *s1, unsigned long val)
+static uplong add_jmp_table(TCCState *s1, uplong val)
{
char *p = s1->runtime_plt_and_got + s1->runtime_plt_and_got_offset;
s1->runtime_plt_and_got_offset += JMP_TABLE_ENTRY_SIZE;
@@ -491,17 +490,16 @@ static unsigned long add_jmp_table(TCCState *s1, unsigned long val)
p[0] = 0xff;
p[1] = 0x25;
*(int *)(p + 2) = 0;
- *(unsigned long *)(p + 6) = val;
- return (unsigned long)p;
+ *(uplong *)(p + 6) = val;
+ return (uplong)p;
}
-static unsigned long add_got_table(TCCState *s1, unsigned long val)
+static uplong add_got_table(TCCState *s1, uplong val)
{
- unsigned long *p =(unsigned long *)(s1->runtime_plt_and_got +
- s1->runtime_plt_and_got_offset);
- s1->runtime_plt_and_got_offset += sizeof(void *);
+ uplong *p = (uplong *)(s1->runtime_plt_and_got + s1->runtime_plt_and_got_offset);
+ s1->runtime_plt_and_got_offset += sizeof(uplong);
*p = val;
- return (unsigned long)p;
+ return (uplong)p;
}
#endif
#endif
@@ -514,7 +512,7 @@ ST_FUNC void relocate_section(TCCState *s1, Section *s)
ElfW(Sym) *sym;
int type, sym_index;
unsigned char *ptr;
- unsigned long val, addr;
+ uplong val, addr;
#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64
int esym_index;
#endif