You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							101 lines
						
					
					
						
							3.0 KiB
						
					
					
				# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
# | 
						|
# Filename: package/.../binutils/ld-glob.patch | 
						|
# Copyright (C) 2006 The OpenSDE Project | 
						|
# Copyright (C) 2004 - 2006 The T2 SDE Project | 
						|
# | 
						|
# More information can be found in the files COPYING and README. | 
						|
# | 
						|
# This patch file is dual-licensed. It is available under the license the | 
						|
# patched project is licensed under, as long as it is an OpenSource license | 
						|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms | 
						|
# of the GNU General Public License as published by the Free Software | 
						|
# Foundation; either version 2 of the License, or (at your option) any later | 
						|
# version. | 
						|
# --- SDE-COPYRIGHT-NOTE-END --- | 
						|
 | 
						|
This adds /etc/ld.so.conf globbing to the gnu linker. We need this, since we | 
						|
also patch the glibc's dynamic linker and the linker needs to be able to | 
						|
scan the directories, too. | 
						|
 | 
						|
  - Rene Rebe <[email protected]> | 
						|
 | 
						|
--- binutils-2.15.94.0.1/ld/emultempl/elf32.em	2004-11-22 21:33:33.000000000 +0100 | 
						|
+++ binutils-2.15.94.0.1-glob/ld/emultempl/elf32.em	2004-12-23 23:40:56.549479128 +0100 | 
						|
@@ -633,7 +633,7 @@ | 
						|
 	    } | 
						|
 	  while (c != '\0'); | 
						|
 	} | 
						|
-      else | 
						|
+      else /* normal dir (e.g. no include) */ | 
						|
 	{ | 
						|
 	  char *dir = p; | 
						|
 	  while (*p && *p != '=' && *p != ' ' && *p != '\t' && *p != '\f' | 
						|
@@ -642,14 +642,48 @@ | 
						|
  | 
						|
 	  while (p != dir && p[-1] == '/') | 
						|
 	    --p; | 
						|
-	  if (info->path == NULL) | 
						|
+ | 
						|
+	  /* cut trailing comments and such */ | 
						|
+	  p[1] = 0; | 
						|
+ | 
						|
+	  /* assume path is a pattern - compare with quite equal glibc patch | 
						|
+	     -ReneR */ | 
						|
+ | 
						|
+	  glob_t result; | 
						|
+	  #ifdef GLOB_ONLYDIR | 
						|
+	  if (glob(dir, GLOB_ONLYDIR, NULL, &result) == 0) { | 
						|
+	  #else | 
						|
+	  if (glob(dir, 0, NULL, &result) == 0) { | 
						|
+	  #endif | 
						|
+	    size_t j; | 
						|
+	    for (j = 0; j < result.gl_pathc; j++) | 
						|
 	    { | 
						|
+	      char* x = result.gl_pathv[j]; | 
						|
+ | 
						|
+	      if (info->path == NULL) { | 
						|
+	        info->alloc = strlen(x) + 256; | 
						|
+	        info->path = xmalloc (info->alloc); | 
						|
+	        info->len = 0; | 
						|
+	      } | 
						|
+	      else { | 
						|
+	        if (info->len + 1 + strlen(x) + 1 >= info->alloc) { | 
						|
+		  info->alloc += strlen(x) + 1 + 256; | 
						|
+		  info->path = xrealloc (info->path, info->alloc); | 
						|
+		} | 
						|
+	        info->path[info->len++] = ':'; | 
						|
+	      } | 
						|
+	      strcpy (info->path + info->len, x); | 
						|
+	      info->len += strlen(x); | 
						|
+ | 
						|
+	    } | 
						|
+	  } else { | 
						|
+	    /* error orig. code from binutils - in theory we do not need it */ | 
						|
+	    if (info->path == NULL) { | 
						|
 	      info->alloc = p - dir + 1 + 256; | 
						|
 	      info->path = xmalloc (info->alloc); | 
						|
 	      info->len = 0; | 
						|
 	    } | 
						|
-	  else | 
						|
-	    { | 
						|
+	    else { | 
						|
 	      if (info->len + 1 + (p - dir) >= info->alloc) | 
						|
 		{ | 
						|
 		  info->alloc += p - dir + 256; | 
						|
@@ -657,9 +688,11 @@ | 
						|
 		} | 
						|
 	      info->path[info->len++] = ':'; | 
						|
 	    } | 
						|
-	  memcpy (info->path + info->len, dir, p - dir); | 
						|
-	  info->len += p - dir; | 
						|
-	  info->path[info->len] = '\0'; | 
						|
+	    memcpy (info->path + info->len, dir, p - dir); | 
						|
+	    info->len += p - dir; | 
						|
+	    info->path[info->len] = '\0'; | 
						|
+	  } | 
						|
+	  globfree (&result); | 
						|
 	} | 
						|
     } | 
						|
   while (! feof (f));
 | 
						|
 |