diff options
-rw-r--r-- | ldso/ldso/mips/dl-startup.h | 20 | ||||
-rw-r--r-- | ldso/ldso/mips/dl-sysdep.h | 2 |
2 files changed, 12 insertions, 10 deletions
diff --git a/ldso/ldso/mips/dl-startup.h b/ldso/ldso/mips/dl-startup.h index 0dd92b5ba..0a19f7534 100644 --- a/ldso/ldso/mips/dl-startup.h +++ b/ldso/ldso/mips/dl-startup.h @@ -51,15 +51,16 @@ asm("" \ #define PERFORM_BOOTSTRAP_GOT(got, tpnt) \ do { \ Elf32_Sym *sym; \ - unsigned long i; \ + Elf32_Addr i; \ + Elf32_Addr *mipsgot = (void *) got; \ \ /* Add load address displacement to all local GOT entries */ \ i = 2; \ while (i < tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX]) \ - got[i++] += load_addr; \ + mipsgot[i++] += load_addr; \ \ /* Handle global GOT entries */ \ - got += tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX]; \ + mipsgot += tpnt->dynamic_info[DT_MIPS_LOCAL_GOTNO_IDX]; \ sym = (Elf32_Sym *) (tpnt->dynamic_info[DT_SYMTAB] + \ load_addr) + tpnt->dynamic_info[DT_MIPS_GOTSYM_IDX]; \ i = tpnt->dynamic_info[DT_MIPS_SYMTABNO_IDX] - tpnt->dynamic_info[DT_MIPS_GOTSYM_IDX];\ @@ -67,23 +68,22 @@ do { \ while (i--) { \ if (sym->st_shndx == SHN_UNDEF || \ sym->st_shndx == SHN_COMMON) \ - *got = load_addr + sym->st_value; \ + *mipsgot = load_addr + sym->st_value; \ else if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC && \ - *got != sym->st_value) \ - *got += load_addr; \ + *mipsgot != sym->st_value) \ + *mipsgot += load_addr; \ else if (ELF32_ST_TYPE(sym->st_info) == STT_SECTION) { \ if (sym->st_other == 0) \ - *got += load_addr; \ + *mipsgot += load_addr; \ } \ else \ - *got = load_addr + sym->st_value; \ + *mipsgot = load_addr + sym->st_value; \ \ - got++; \ + mipsgot++; \ sym++; \ } \ } while (0) - /* * Here is a macro to perform a relocation. This is only used when * bootstrapping the dynamic loader. diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h index 3f4672182..7fc75b7aa 100644 --- a/ldso/ldso/mips/dl-sysdep.h +++ b/ldso/ldso/mips/dl-sysdep.h @@ -8,6 +8,8 @@ /* Define this if the system uses RELOCA. */ #undef ELF_USES_RELOCA #include <elf.h> +#include <link.h> + #define ARCH_NUM 3 #define DT_MIPS_GOTSYM_IDX (DT_NUM + OS_NUM) #define DT_MIPS_LOCAL_GOTNO_IDX (DT_NUM + OS_NUM +1) |