浏览代码

force hash buckets to work off of 32bit quantities

Mike Frysinger 20 年之前
父节点
当前提交
84cc817ba5
共有 2 个文件被更改,包括 4 次插入4 次删除
  1. 2 2
      ldso/include/dl-hash.h
  2. 2 2
      ldso/ldso/dl-hash.c

+ 2 - 2
ldso/include/dl-hash.h

@@ -33,14 +33,14 @@ struct elf_resolve{
   unsigned short int init_flag;
   unsigned long rtld_flags; /* RTLD_GLOBAL, RTLD_NOW etc. */
   unsigned int nbucket;
-  unsigned long * elf_buckets;
+  uint32_t *elf_buckets;
   struct init_fini_list *init_fini;
   struct init_fini_list *rtld_local; /* keep tack of RTLD_LOCAL libs in same group */
   /*
    * These are only used with ELF style shared libraries
    */
   unsigned long nchain;
-  unsigned long * chains;
+  uint32_t *chains;
   unsigned long dynamic_info[DYNAMIC_SIZE];
 
   unsigned long n_phent;

+ 2 - 2
ldso/ldso/dl-hash.c

@@ -101,7 +101,7 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname,
 	char *loadaddr, unsigned long *dynamic_info, unsigned long dynamic_addr,
 	unsigned long dynamic_size)
 {
-	unsigned long *hash_addr;
+	uint32_t *hash_addr;
 	struct elf_resolve *tpnt;
 	int i;
 
@@ -125,7 +125,7 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname,
 	tpnt->libtype = loaded_file;
 
 	if (dynamic_info[DT_HASH] != 0) {
-		hash_addr = (unsigned long *) (intptr_t)(dynamic_info[DT_HASH]);
+		hash_addr = (uint32_t*)dynamic_info[DT_HASH];
 		tpnt->nbucket = *hash_addr++;
 		tpnt->nchain = *hash_addr++;
 		tpnt->elf_buckets = hash_addr;