Upstream-Status: Inappropriate [embedded specific] enable standalone building of ldconfig --- cache.c | 11 +- chroot_canon.c | 7 + dl-cache.c | 235 --------------------------------------------------------- dl-cache.h | 3 ldconfig.c | 27 ++++-- readlib.c | 7 + xstrdup.c | 11 -- 7 files changed, 45 insertions(+), 256 deletions(-) Index: ldconfig-native-2.12.1/cache.c =================================================================== --- ldconfig-native-2.12.1.orig/cache.c +++ ldconfig-native-2.12.1/cache.c @@ -16,6 +16,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#define _LARGEFILE64_SOURCE +#define _GNU_SOURCE + #include #include #include @@ -31,8 +34,10 @@ #include #include -#include -#include +#include "ldconfig.h" +#include "dl-cache.h" +# define N_(msgid) msgid +#define _(msg) msg struct cache_entry { Index: ldconfig-native-2.12.1/chroot_canon.c =================================================================== --- ldconfig-native-2.12.1.orig/chroot_canon.c +++ ldconfig-native-2.12.1/chroot_canon.c @@ -17,6 +17,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#define _LARGEFILE64_SOURCE +#define _GNU_SOURCE + #include #include #include @@ -27,7 +30,9 @@ #include #include -#include +#include "ldconfig.h" + +#define __set_errno(Val) errno = (Val) #ifndef PATH_MAX #define PATH_MAX 1024 Index: ldconfig-native-2.12.1/dl-cache.c =================================================================== --- ldconfig-native-2.12.1.orig/dl-cache.c +++ ldconfig-native-2.12.1/dl-cache.c @@ -20,12 +20,12 @@ #include #include -#include +//#include "ldsodefs.h" #include #include #include -#include +//#include "_itoa.h" #ifndef _DL_PLATFORMS_COUNT # define _DL_PLATFORMS_COUNT 0 @@ -39,103 +39,7 @@ static size_t cachesize; /* 1 if cache_data + PTR points into the cache. */ #define _dl_cache_verify_ptr(ptr) (ptr < cache_data_size) -#define SEARCH_CACHE(cache) \ -/* We use binary search since the table is sorted in the cache file. \ - The first matching entry in the table is returned. \ - It is important to use the same algorithm as used while generating \ - the cache file. */ \ -do \ - { \ - left = 0; \ - right = cache->nlibs - 1; \ - \ - while (left <= right) \ - { \ - __typeof__ (cache->libs[0].key) key; \ - \ - middle = (left + right) / 2; \ - \ - key = cache->libs[middle].key; \ - \ - /* Make sure string table indices are not bogus before using \ - them. */ \ - if (! _dl_cache_verify_ptr (key)) \ - { \ - cmpres = 1; \ - break; \ - } \ - \ - /* Actually compare the entry with the key. */ \ - cmpres = _dl_cache_libcmp (name, cache_data + key); \ - if (__builtin_expect (cmpres == 0, 0)) \ - { \ - /* Found it. LEFT now marks the last entry for which we \ - know the name is correct. */ \ - left = middle; \ - \ - /* There might be entries with this name before the one we \ - found. So we have to find the beginning. */ \ - while (middle > 0) \ - { \ - __typeof__ (cache->libs[0].key) key; \ - \ - key = cache->libs[middle - 1].key; \ - /* Make sure string table indices are not bogus before \ - using them. */ \ - if (! _dl_cache_verify_ptr (key) \ - /* Actually compare the entry. */ \ - || _dl_cache_libcmp (name, cache_data + key) != 0) \ - break; \ - --middle; \ - } \ - \ - do \ - { \ - int flags; \ - __typeof__ (cache->libs[0]) *lib = &cache->libs[middle]; \ - \ - /* Only perform the name test if necessary. */ \ - if (middle > left \ - /* We haven't seen this string so far. Test whether the \ - index is ok and whether the name matches. Otherwise \ - we are done. */ \ - && (! _dl_cache_verify_ptr (lib->key) \ - || (_dl_cache_libcmp (name, cache_data + lib->key) \ - != 0))) \ - break; \ - \ - flags = lib->flags; \ - if (_dl_cache_check_flags (flags) \ - && _dl_cache_verify_ptr (lib->value)) \ - { \ - if (best == NULL || flags == GLRO(dl_correct_cache_id)) \ - { \ - HWCAP_CHECK; \ - best = cache_data + lib->value; \ - \ - if (flags == GLRO(dl_correct_cache_id)) \ - /* We've found an exact match for the shared \ - object and no general `ELF' release. Stop \ - searching. */ \ - break; \ - } \ - } \ - } \ - while (++middle <= right); \ - break; \ - } \ - \ - if (cmpres < 0) \ - left = middle + 1; \ - else \ - right = middle - 1; \ - } \ - } \ -while (0) - - int -internal_function _dl_cache_libcmp (const char *p1, const char *p2) { while (*p1 != '\0') @@ -172,139 +76,3 @@ _dl_cache_libcmp (const char *p1, const } return *p1 - *p2; } - - -/* Look up NAME in ld.so.cache and return the file name stored there, - or null if none is found. */ - -const char * -internal_function -_dl_load_cache_lookup (const char *name) -{ - int left, right, middle; - int cmpres; - const char *cache_data; - uint32_t cache_data_size; - const char *best; - - /* Print a message if the loading of libs is traced. */ - if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_LIBS, 0)) - _dl_debug_printf (" search cache=%s\n", LD_SO_CACHE); - - if (cache == NULL) - { - /* Read the contents of the file. */ - void *file = _dl_sysdep_read_whole_file (LD_SO_CACHE, &cachesize, - PROT_READ); - - /* We can handle three different cache file formats here: - - the old libc5/glibc2.0/2.1 format - - the old format with the new format in it - - only the new format - The following checks if the cache contains any of these formats. */ - if (file != MAP_FAILED && cachesize > sizeof *cache - && memcmp (file, CACHEMAGIC, sizeof CACHEMAGIC - 1) == 0) - { - size_t offset; - /* Looks ok. */ - cache = file; - - /* Check for new version. */ - offset = ALIGN_CACHE (sizeof (struct cache_file) - + cache->nlibs * sizeof (struct file_entry)); - - cache_new = (struct cache_file_new *) ((void *) cache + offset); - if (cachesize < (offset + sizeof (struct cache_file_new)) - || memcmp (cache_new->magic, CACHEMAGIC_VERSION_NEW, - sizeof CACHEMAGIC_VERSION_NEW - 1) != 0) - cache_new = (void *) -1; - } - else if (file != MAP_FAILED && cachesize > sizeof *cache_new - && memcmp (file, CACHEMAGIC_VERSION_NEW, - sizeof CACHEMAGIC_VERSION_NEW - 1) == 0) - { - cache_new = file; - cache = file; - } - else - { - if (file != MAP_FAILED) - __munmap (file, cachesize); - cache = (void *) -1; - } - - assert (cache != NULL); - } - - if (cache == (void *) -1) - /* Previously looked for the cache file and didn't find it. */ - return NULL; - - best = NULL; - - if (cache_new != (void *) -1) - { - uint64_t platform; - - /* This is where the strings start. */ - cache_data = (const char *) cache_new; - - /* Now we can compute how large the string table is. */ - cache_data_size = (const char *) cache + cachesize - cache_data; - - platform = _dl_string_platform (GLRO(dl_platform)); - if (platform != (uint64_t) -1) - platform = 1ULL << platform; - -#define _DL_HWCAP_TLS_MASK (1LL << 63) - uint64_t hwcap_exclude = ~((GLRO(dl_hwcap) & GLRO(dl_hwcap_mask)) - | _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK); - - /* Only accept hwcap if it's for the right platform. */ -#define HWCAP_CHECK \ - if (lib->hwcap & hwcap_exclude) \ - continue; \ - if (GLRO(dl_osversion) && lib->osversion > GLRO(dl_osversion)) \ - continue; \ - if (_DL_PLATFORMS_COUNT \ - && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0 \ - && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \ - continue - SEARCH_CACHE (cache_new); - } - else - { - /* This is where the strings start. */ - cache_data = (const char *) &cache->libs[cache->nlibs]; - - /* Now we can compute how large the string table is. */ - cache_data_size = (const char *) cache + cachesize - cache_data; - -#undef HWCAP_CHECK -#define HWCAP_CHECK do {} while (0) - SEARCH_CACHE (cache); - } - - /* Print our result if wanted. */ - if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_LIBS, 0) - && best != NULL) - _dl_debug_printf (" trying file=%s\n", best); - - return best; -} - -#ifndef MAP_COPY -/* If the system does not support MAP_COPY we cannot leave the file open - all the time since this would create problems when the file is replaced. - Therefore we provide this function to close the file and open it again - once needed. */ -void -_dl_unload_cache (void) -{ - if (cache != NULL && cache != (struct cache_file *) -1) - { - __munmap (cache, cachesize); - cache = NULL; - } -} -#endif Index: ldconfig-native-2.12.1/dl-cache.h =================================================================== --- ldconfig-native-2.12.1.orig/dl-cache.h +++ ldconfig-native-2.12.1/dl-cache.h @@ -101,5 +101,4 @@ struct cache_file_new (((addr) + __alignof__ (struct cache_file_new) -1) \ & (~(__alignof__ (struct cache_file_new) - 1))) -extern int _dl_cache_libcmp (const char *p1, const char *p2) - internal_function; +extern int _dl_cache_libcmp (const char *p1, const char *p2); Index: ldconfig-native-2.12.1/ldconfig.c =================================================================== --- ldconfig-native-2.12.1.orig/ldconfig.c +++ ldconfig-native-2.12.1/ldconfig.c @@ -16,6 +16,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#define _LARGEFILE64_SOURCE +#define _GNU_SOURCE + #define PROCINFO_CLASS static #include #include @@ -39,10 +42,20 @@ #include #include -#include -#include +#include "ldconfig.h" +#include "dl-cache.h" + +#include "dl-procinfo.h" + +#include "argp.h" + + +#define SYSCONFDIR "/etc" +#define LIBDIR "/usr/lib" +#define SLIBDIR "/lib" +# define N_(msgid) msgid +#define _(msg) msg -#include #ifdef _DL_FIRST_PLATFORM # define _DL_FIRST_EXTRA (_DL_FIRST_PLATFORM + _DL_PLATFORMS_COUNT) @@ -55,7 +68,7 @@ #endif /* Get libc version number. */ -#include +#include "version.h" #define PACKAGE _libc_intl_domainname @@ -152,8 +165,8 @@ static const struct argp_option options[ { NULL, 0, NULL, 0, NULL, 0 } }; -#define PROCINFO_CLASS static -#include +//#define PROCINFO_CLASS static +//#include /* Short description of program. */ static const char doc[] = N_("Configure Dynamic Linker Run Time Bindings."); @@ -291,6 +304,7 @@ parse_opt (int key, char *arg, struct ar return 0; } +#define REPORT_BUGS_TO "mailing list : poky@lists.yoctoproject.org" /* Print bug-reporting information in the help message. */ static char * more_help (int key, const char *text, void *input) @@ -315,7 +329,7 @@ For bug reporting instructions, please s static void print_version (FILE *stream, struct argp_state *state) { - fprintf (stream, "ldconfig %s%s\n", PKGVERSION, VERSION); + fprintf (stream, "ldconfig (Hacked Poky Version)\n"); fprintf (stream, gettext ("\ Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ @@ -1233,6 +1247,7 @@ set_hwcap (void) hwcap_mask = strtoul (mask, NULL, 0); } +const char _libc_intl_domainname[] = "libc"; int main (int argc, char **argv) Index: ldconfig-native-2.12.1/readlib.c =================================================================== --- ldconfig-native-2.12.1.orig/readlib.c +++ ldconfig-native-2.12.1/readlib.c @@ -22,6 +22,9 @@ development version. Besides the simplification, it has also been modified to read some other file formats. */ +#define _LARGEFILE64_SOURCE +#define _GNU_SOURCE + #include #include #include @@ -35,7 +38,9 @@ #include #include -#include +#include "ldconfig.h" + +#define _(msg) msg #define Elf32_CLASS ELFCLASS32 #define Elf64_CLASS ELFCLASS64 Index: ldconfig-native-2.12.1/xstrdup.c =================================================================== --- ldconfig-native-2.12.1.orig/xstrdup.c +++ ldconfig-native-2.12.1/xstrdup.c @@ -16,15 +16,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#define _GNU_SOURCE + +#include -#if defined STDC_HEADERS || defined HAVE_STRING_H || _LIBC -# include -#else -# include -#endif void *xmalloc (size_t n) __THROW; char *xstrdup (char *string) __THROW;