diff lwlink/readfiles.c @ 180:6ebb93b409ba

Added library paths and --section-base
author lost
date Thu, 05 Mar 2009 02:23:25 +0000
parents 0395e6fd67e9
children 048ebb85f6ef
line wrap: on
line diff
--- a/lwlink/readfiles.c	Wed Mar 04 05:34:17 2009 +0000
+++ b/lwlink/readfiles.c	Thu Mar 05 02:23:25 2009 +0000
@@ -70,12 +70,42 @@
 	long bread;
 	for (i = 0; i < ninputfiles; i++)
 	{
-		f = fopen(inputfiles[i] -> filename, "rb");
-		if (!f)
+		if (inputfiles[i] -> islib)
 		{
-			fprintf(stderr, "Can't open file %s:", inputfiles[i] -> filename);
-			perror("");
-			exit(1);
+			char *tf;
+			int s;
+			int j;
+			
+			f = NULL;
+			
+			for (j = 0; j < nlibdirs; j++)
+			{
+				s = strlen(libdirs[j]) + 7 + strlen(inputfiles[i] -> filename);
+				tf = lw_malloc(s + 1);
+				sprintf(tf, "%s/lib%s.a", libdirs[j], inputfiles[i] -> filename);
+				f = fopen(tf, "rb");
+				if (!f)
+				{
+					free(tf);
+					continue;
+				}
+				free(tf);
+			}
+			if (!f)
+			{
+				fprintf(stderr, "Can't open library: -l%s\n", inputfiles[i] -> filename);
+				exit(1);
+			}
+		}
+		else
+		{
+			f = fopen(inputfiles[i] -> filename, "rb");
+			if (!f)
+			{
+				fprintf(stderr, "Can't open file %s:", inputfiles[i] -> filename);
+				perror("");
+				exit(1);
+			}
 		}
 		fseek(f, 0, SEEK_END);
 		size = ftell(f);