Mercurial > hg > xemacs-beta
diff src/unexelf.c @ 442:abe6d1db359e r21-2-36
Import from CVS: tag r21-2-36
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:35:02 +0200 |
parents | 3ecd8885ac67 |
children | 1ccc32a20af4 |
line wrap: on
line diff
--- a/src/unexelf.c Mon Aug 13 11:33:40 2007 +0200 +++ b/src/unexelf.c Mon Aug 13 11:35:02 2007 +0200 @@ -413,7 +413,7 @@ #define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1) #else #include <config.h> -extern void fatal (CONST char *, ...); +extern void fatal (const char *, ...); #endif #include <sys/types.h> @@ -494,16 +494,6 @@ # define SHN_ABS Elf_eshn_absolute # define SHN_COMMON Elf_eshn_common -/* - * The magic of picking the right size types is handled by the ELFSIZE - * definition above. - */ -# ifdef __STDC__ -# define ElfW(type) Elf_##type -# else -# define ElfW(type) Elf_/**/type -# endif - # ifdef __alpha__ # include <sys/exec_ecoff.h> # define HDRR struct ecoff_symhdr @@ -685,7 +675,6 @@ old_sbss_index = -1; old_bss_addr = OLD_SECTION_H(old_bss_index).sh_addr; old_bss_size = OLD_SECTION_H(old_bss_index).sh_size; - new_data2_offset = OLD_SECTION_H(old_bss_index).sh_offset; new_data2_index = old_bss_index; } else @@ -693,7 +682,6 @@ old_bss_addr = OLD_SECTION_H(old_sbss_index).sh_addr; old_bss_size = OLD_SECTION_H(old_bss_index).sh_size + OLD_SECTION_H(old_sbss_index).sh_size; - new_data2_offset = OLD_SECTION_H(old_sbss_index).sh_offset; new_data2_index = old_sbss_index; } @@ -711,6 +699,20 @@ if (old_mdebug_index == old_file_h->e_shnum) old_mdebug_index = 0; + for (old_data_index = 1; old_data_index < (int) old_file_h->e_shnum; + old_data_index++) + { +#ifdef DEBUG + fprintf (stderr, "Looking for .data - found %s\n", + old_section_names + OLD_SECTION_H (old_data_index).sh_name); +#endif + if (!strcmp (old_section_names + OLD_SECTION_H (old_data_index).sh_name, + ".data")) + break; + } + if (old_data_index == old_file_h->e_shnum) + old_data_index = 0; + #if defined (emacs) || !defined (DEBUG) new_bss_addr = (ElfW(Addr)) sbrk (0); #else @@ -718,6 +720,8 @@ #endif new_data2_addr = old_bss_addr; new_data2_size = new_bss_addr - old_bss_addr; + new_data2_offset = OLD_SECTION_H (old_data_index).sh_offset + + (new_data2_addr - OLD_SECTION_H (old_data_index).sh_addr); #ifdef DEBUG fprintf (stderr, "old_bss_index %d\n", old_bss_index);