diff options
| -rw-r--r-- | ldso/ldso/ldso.c | 38 | 
1 files changed, 29 insertions, 9 deletions
| diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index fa1be0755..11e8817c7 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -387,6 +387,9 @@ LD_BOOT(unsigned long args)  	/* OK, that was easy.  Next scan the DYNAMIC section of the image.  	   We are only doing ourself right now - we will have to do the rest later */ +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +	SEND_STDERR("scanning DYNAMIC section\n"); +#endif  	while (dpnt->d_tag) {  #if defined(__mips__)  		if (dpnt->d_tag == DT_MIPS_GOTSYM) @@ -430,12 +433,13 @@ LD_BOOT(unsigned long args)  						continue;  					}  					app_tpnt->dynamic_info[dpnt->d_tag] = dpnt->d_un.d_val; -					if (dpnt->d_tag == DT_DEBUG) +					if (dpnt->d_tag == DT_DEBUG) {  #ifdef FORCE_SHAREABLE_TEXT_SEGMENTS  						dpnt->d_un.d_val = (unsigned long) debug_addr;  #else  						dpnt_debug = dpnt;  #endif +					}  					if (dpnt->d_tag == DT_TEXTREL)  						app_tpnt->dynamic_info[DT_TEXTREL] = 1;  					dpnt++; @@ -443,6 +447,10 @@ LD_BOOT(unsigned long args)  			}  	} +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +	SEND_STDERR("done scanning DYNAMIC section\n"); +#endif +  	/* Get some more of the information that we will need to dynamicly link  	   this module to itself */ @@ -452,6 +460,10 @@ LD_BOOT(unsigned long args)  	tpnt->elf_buckets = hash_addr;  	hash_addr += tpnt->nbucket; +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +	SEND_STDERR("done grabbing link information\n"); +#endif +  #ifndef FORCE_SHAREABLE_TEXT_SEGMENTS  	/* Ugly, ugly.  We need to call mprotect to change the protection of  	   the text pages so that we can do the dynamic linking.  We can set the @@ -461,6 +473,10 @@ LD_BOOT(unsigned long args)  		elf_phdr *ppnt;  		int i; +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +		SEND_STDERR("calling mprotect on the shared library/dynamic linker\n"); +#endif +  		/* First cover the shared library/dynamic linker. */  		if (tpnt->dynamic_info[DT_TEXTREL]) {  			header = (elfhdr *) auxvt[AT_BASE].a_un.a_ptr; @@ -475,6 +491,9 @@ LD_BOOT(unsigned long args)  			}  		} +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +		SEND_STDERR("calling mprotect on the application program\n"); +#endif  		/* Now cover the application program. */  		if (app_tpnt->dynamic_info[DT_TEXTREL]) {  			ppnt = (elf_phdr *) auxvt[AT_PHDR].a_un.a_ptr; @@ -487,26 +506,27 @@ LD_BOOT(unsigned long args)  			}  		}  	} - +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +	SEND_STDERR("About to store the debug structure address\n"); +#endif  	/* Now we can store the debug structure address */  	if (dpnt_debug != NULL) {  		dpnt_debug->d_un.d_val = (unsigned long) debug_addr;  	}  #endif - - +	  #if defined(__mips__) -	/* -	 * For MIPS we have to do stuff to the GOT before we do relocations. -	 */ +#ifdef __SUPPORT_LD_DEBUG_EARLY__ +	SEND_STDERR("About to do MIPS specific GOT bootstrap\n"); +#endif +	/* For MIPS we have to do stuff to the GOT before we do relocations.  */  	PERFORM_BOOTSTRAP_GOT(got);  #endif -  	/* OK, now do the relocations.  We do not do a lazy binding here, so  	   that once we are done, we have considerably more flexibility. */  #ifdef __SUPPORT_LD_DEBUG_EARLY__ -	SEND_STDERR("About to do library loader relocations.\n"); +	SEND_STDERR("About to do library loader relocations\n");  #endif  	goof = 0; | 
