diff options
| author | Andrew Mulbrook <andrew262@gmail.com> | 2012-03-03 10:12:06 -0600 |
|---|---|---|
| committer | Andrew Mulbrook <andrew262@gmail.com> | 2012-03-03 10:12:06 -0600 |
| commit | 5775911dadef7c10eee8ee44db41c6aeb6b11e07 (patch) | |
| tree | a0a3262fc31cd601b098018fdc0ebb8e22a29516 /tccelf.c | |
| parent | e343b1dfd47eb6514c836e2329ad0171a7226c4b (diff) | |
| download | tinycc-5775911dadef7c10eee8ee44db41c6aeb6b11e07.tar.gz tinycc-5775911dadef7c10eee8ee44db41c6aeb6b11e07.tar.bz2 | |
Revert "Multiple fixes for 64 bit sections"
This reverts commit d7a7c3769d0a1dcb8400258cd8adf78a8566de61.
Diffstat (limited to 'tccelf.c')
| -rw-r--r-- | tccelf.c | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -1153,7 +1153,7 @@ ST_FUNC Section *new_symtab(TCCState *s1, } /* put dynamic tag */ -static void put_dt(Section *dynamic, int dt, uplong val) +static void put_dt(Section *dynamic, int dt, unsigned long val) { ElfW(Dyn) *dyn; dyn = section_ptr_add(dynamic, sizeof(ElfW(Dyn))); @@ -1381,7 +1381,7 @@ ST_FUNC void fill_got_entry(TCCState *s1, ElfW_Rel *rel) section_reserve(s1->got, offset + PTR_SIZE); #ifdef TCC_TARGET_X86_64 /* only works for x86-64 */ - put32(s1->got->data + offset + 4, sym->st_value >> 32); + put32(s1->got->data + offset, sym->st_value >> 32); #endif put32(s1->got->data + offset, sym->st_value & 0xffffffff); } @@ -1421,9 +1421,8 @@ static int elf_output_file(TCCState *s1, const char *filename) FILE *f; int fd, mode, ret; int *section_order; - int shnum, i, phnum, file_offset, offset, size, j, sh_order_index, k; - long long tmp; - uplong addr; + int shnum, i, phnum, file_offset, offset, size, j, tmp, sh_order_index, k; + unsigned long addr; Section *strsec, *s; ElfW(Shdr) shdr, *sh; ElfW(Phdr) *phdr, *ph; @@ -1431,9 +1430,9 @@ static int elf_output_file(TCCState *s1, const char *filename) unsigned long saved_dynamic_data_offset; ElfW(Sym) *sym; int type, file_type; - uplong rel_addr, rel_size; + unsigned long rel_addr, rel_size; #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) - uplong bss_addr, bss_size; + unsigned long bss_addr, bss_size; #endif file_type = s1->output_type; @@ -1748,7 +1747,7 @@ static int elf_output_file(TCCState *s1, const char *filename) addr = s1->text_addr; /* we ensure that (addr % ELF_PAGE_SIZE) == file_offset % ELF_PAGE_SIZE */ - a_offset = ((int) addr) & (s1->section_align - 1); + a_offset = addr & (s1->section_align - 1); p_offset = file_offset & (s1->section_align - 1); if (a_offset < p_offset) a_offset += s1->section_align; @@ -1822,7 +1821,7 @@ static int elf_output_file(TCCState *s1, const char *filename) tmp = addr; addr = (addr + s->sh_addralign - 1) & ~(s->sh_addralign - 1); - file_offset += (int) ( addr - tmp ); + file_offset += addr - tmp; s->sh_offset = file_offset; s->sh_addr = addr; @@ -1916,12 +1915,8 @@ static int elf_output_file(TCCState *s1, const char *filename) ph->p_align = dynamic->sh_addralign; /* put GOT dynamic section address */ -#if defined(TCC_TARGET_X86_64) - put32(s1->got->data + 4, dynamic->sh_addr >> 32 ); -#endif put32(s1->got->data, dynamic->sh_addr); - /* relocate the PLT */ if (file_type == TCC_OUTPUT_EXE #if defined(TCC_OUTPUT_DLL_WITH_PLT) |
