diff options
| -rw-r--r-- | utils/ldd.c | 41 | 
1 files changed, 23 insertions, 18 deletions
diff --git a/utils/ldd.c b/utils/ldd.c index 319f0bfdc..9196893cb 100644 --- a/utils/ldd.c +++ b/utils/ldd.c @@ -26,6 +26,7 @@   *   */ +#define _GNU_SOURCE  #include <stdlib.h>  #include <stdio.h>  #include <fcntl.h> @@ -149,6 +150,10 @@  #define ELFDATAM	ELFDATA2MSB  #endif +#ifndef UCLIBC_RUNTIME_PREFIX +# define UCLIBC_RUNTIME_PREFIX "/" +#endif +  struct library {  	char *name;  	int resolved; @@ -710,9 +715,10 @@ foo:  	interp = find_elf_interpreter(ehdr);  #ifdef __LDSO_LDD_SUPPORT__ -	if (interp && (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN) && ehdr->e_ident[EI_CLASS] == ELFCLASSM && -			ehdr->e_ident[EI_DATA] == ELFDATAM -			&& ehdr->e_ident[EI_VERSION] == EV_CURRENT && MATCH_MACHINE(ehdr->e_machine)) +	if (interp && \ +	    (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN) && \ +	    ehdr->e_ident[EI_CLASS] == ELFCLASSM && ehdr->e_ident[EI_DATA] == ELFDATAM && \ +	    ehdr->e_ident[EI_VERSION] == EV_CURRENT && MATCH_MACHINE(ehdr->e_machine))  	{  		struct stat statbuf;  		if (stat(interp->path, &statbuf) == 0 && S_ISREG(statbuf.st_mode)) { @@ -756,8 +762,8 @@ foo:  int main( int argc, char** argv)  { -	int multi=0; -	int got_em_all=1; +	int multi = 0; +	int got_em_all = 1;  	char *filename = NULL;  	struct library *cur; @@ -766,9 +772,8 @@ int main( int argc, char** argv)  		fprintf(stderr, "Try `ldd --help' for more information.\n");  		exit(EXIT_FAILURE);  	} -	if (argc > 2) { +	if (argc > 2)  		multi++; -	}  	while (--argc > 0) {  		++argv; @@ -781,10 +786,10 @@ int main( int argc, char** argv)  		if (strcmp(*argv, "--help") == 0 || strcmp(*argv, "-h") == 0) {  			fprintf(stderr, "Usage: ldd [OPTION]... FILE...\n");  			fprintf(stderr, "\t--help\t\tprint this help and exit\n"); -			exit(EXIT_FAILURE); +			exit(EXIT_SUCCESS);  		} -		filename=*argv; +		filename = *argv;  		if (!filename) {  			fprintf(stderr, "No filename specified.\n");  			exit(EXIT_FAILURE); @@ -799,13 +804,13 @@ int main( int argc, char** argv)  		if (find_dependancies(filename)!=0)  			continue; -		while(got_em_all) { -			got_em_all=0; +		while (got_em_all) { +			got_em_all = 0;  			/* Keep walking the list till everybody is resolved */  			for (cur = lib_list; cur; cur=cur->next) {  				if (cur->resolved == 0 && cur->path) { -					got_em_all=1; -					//printf("checking sub-depends for '%s\n", cur->path); +					got_em_all = 1; +					printf("checking sub-depends for '%s'\n", cur->path);  					find_dependancies(cur->path);  					cur->resolved = 1;  				} @@ -815,9 +820,9 @@ int main( int argc, char** argv)  		unmap_cache();  		/* Print the list */ -		got_em_all=0; +		got_em_all = 0;  		for (cur = lib_list; cur; cur=cur->next) { -			got_em_all=1; +			got_em_all = 1;  			printf("\t%s => %s (0x00000000)\n", cur->name, cur->path);  		}  		if (interp_name && interpreter_already_found==1) @@ -827,13 +832,13 @@ int main( int argc, char** argv)  		for (cur = lib_list; cur; cur=cur->next) {  			free(cur->name); -			cur->name=NULL; +			cur->name = NULL;  			if (cur->path && cur->path != not_found) {  				free(cur->path); -				cur->path=NULL; +				cur->path = NULL;  			}  		} -		lib_list=NULL; +		lib_list = NULL;  	}  	return 0;  | 
