[uClibc-cvs] uClibc/ldso/include dl-elf.h, 1.9, 1.10 dl-hash.h, 1.3, 1.4

Erik Andersen andersen at uclibc.org
Sat Feb 14 11:30:33 UTC 2004


Update of /var/cvs/uClibc/ldso/include
In directory nail:/tmp/cvs-serv9702/include

Modified Files:
	dl-elf.h dl-hash.h 
Log Message:
Joakim Tjernlund writes:

Hi it is me again.

This is the latest ldso patch. the NEW weak symbol handling works now
with a little special handling in _dl_find_hash(). You get to chose
if you want the new or old handling :)

There was 2 missing _dl_check_if_named_library_is_loaded() calls in _dlopen().

I then disabled the _dl_check_if_named_library_is_loaded() in dl-elf.c since
it is rendundant.

Question, why does some _dl_linux_resolver(), like i386, have 2 calls
to _dl_find_hash()? I think that is wrong, isn't it?

I really hope you can check this out soon ...



Index: dl-hash.h
===================================================================
RCS file: /var/cvs/uClibc/ldso/include/dl-hash.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dl-hash.h	10 Feb 2004 11:47:57 -0000	1.3
+++ dl-hash.h	14 Feb 2004 11:30:30 -0000	1.4
@@ -67,9 +67,8 @@
 	char * loadaddr, unsigned long * dynamic_info, 
 	unsigned long dynamic_addr, unsigned long dynamic_size);
 
-enum caller_type{symbolrel=0,copyrel=1,resolver=2};
 extern char * _dl_find_hash(const char * name, struct dyn_elf * rpnt1, 
-	struct elf_resolve * f_tpnt, enum caller_type);
+			    int type_class);
 
 extern int _dl_linux_dynamic_link(void);
 

Index: dl-elf.h
===================================================================
RCS file: /var/cvs/uClibc/ldso/include/dl-elf.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- dl-elf.h	10 Feb 2004 09:26:46 -0000	1.9
+++ dl-elf.h	14 Feb 2004 11:30:30 -0000	1.10
@@ -92,6 +92,19 @@
 # define UNSUPPORTED_RELOC_STR	"RELA"
 #endif
 
+/* Reloc type classes as returned by elf_machine_type_class().
+   ELF_RTYPE_CLASS_PLT means this reloc should not be satisfied by
+   some PLT symbol, ELF_RTYPE_CLASS_COPY means this reloc should not be
+   satisfied by any symbol in the executable.  Some architectures do
+   not support copy relocations.  In this case we define the macro to
+   zero so that the code for handling them gets automatically optimized
+   out.  */
+#define ELF_RTYPE_CLASS_PLT 1
+#ifndef DL_NO_COPY_RELOCS
+# define ELF_RTYPE_CLASS_COPY 2
+#else
+# define ELF_RTYPE_CLASS_COPY 0
+#endif
 
 
 /* Convert between the Linux flags for page protections and the




More information about the uClibc-cvs mailing list