From 5299142286b4f5e6344ea9e2f905cf2e84566006 Mon Sep 17 00:00:00 2001 From: grischka Date: Thu, 14 Jan 2010 20:56:04 +0100 Subject: [PATCH] x86-64: use uplong for symbol values --- libtcc.c | 2 +- libtcc.h | 2 +- tcc.h | 2 +- tccelf.c | 22 ++++++++++------------ 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