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));
 | |
| 
 |