123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471 |
- 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 <errno.h>
- #include <error.h>
- #include <dirent.h>
- @@ -31,8 +34,10 @@
- #include <sys/stat.h>
- #include <sys/types.h>
-
- -#include <ldconfig.h>
- -#include <dl-cache.h>
- +#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 <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- @@ -27,7 +30,9 @@
- #include <stddef.h>
- #include <stdint.h>
-
- -#include <ldconfig.h>
- +#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 <assert.h>
- #include <unistd.h>
- -#include <ldsodefs.h>
- +//#include "ldsodefs.h"
- #include <sys/mman.h>
- #include <dl-cache.h>
- #include <dl-procinfo.h>
-
- -#include <stdio-common/_itoa.h>
- +//#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 <alloca.h>
- #include <argp.h>
- @@ -39,10 +42,20 @@
- #include <glob.h>
- #include <libgen.h>
-
- -#include <ldconfig.h>
- -#include <dl-cache.h>
- +#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 <dl-procinfo.h>
-
- #ifdef _DL_FIRST_PLATFORM
- # define _DL_FIRST_EXTRA (_DL_FIRST_PLATFORM + _DL_PLATFORMS_COUNT)
- @@ -55,7 +68,7 @@
- #endif
-
- /* Get libc version number. */
- -#include <version.h>
- +#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 <dl-procinfo.c>
- +//#define PROCINFO_CLASS static
- +//#include <dl-procinfo.c>
-
- /* 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 <a.out.h>
- #include <elf.h>
- #include <error.h>
- @@ -35,7 +38,9 @@
- #include <sys/stat.h>
- #include <gnu/lib-names.h>
-
- -#include <ldconfig.h>
- +#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 <config.h>
- -#endif
- +#define _GNU_SOURCE
- +
- +#include <string.h>
-
- -#if defined STDC_HEADERS || defined HAVE_STRING_H || _LIBC
- -# include <string.h>
- -#else
- -# include <strings.h>
- -#endif
- void *xmalloc (size_t n) __THROW;
- char *xstrdup (char *string) __THROW;
-
|