From 57009c41f7ffabb6e76c642ab267b835260045ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Fri, 18 Mar 2011 15:33:32 +0200 Subject: main/libc0.9.32: update to 0.9.32-rc3 and refresh patches * patches merged upstream dropped * refreshed compat-stack-guard.patch (weird that we still need this; we should recompile all apps depending on the symbol) * added three more patches that will help building and running openjdk --- ...-ldso-limited-support-for-ORIGIN-in-rpath.patch | 198 +++++++++++++++++ ...b-fix-arc4random-return-type-to-u_int32_t.patch | 61 ++++++ .../libc0.9.32/0003-ldso-support-RTLD_NOLOAD.patch | 234 +++++++++++++++++++++ main/libc0.9.32/APKBUILD | 30 +-- main/libc0.9.32/arm-nptl-tls.patch | 69 ------ main/libc0.9.32/compat-stack-guard.patch | 70 +++--- main/libc0.9.32/config-has-fortify.patch | 125 ----------- main/libc0.9.32/pthread.patch | 81 ------- main/libc0.9.32/uclibcconfig.arm | 6 +- main/libc0.9.32/uclibcconfig.powerpc | 28 +-- main/libc0.9.32/uclibcconfig.x86 | 6 +- main/libc0.9.32/uclibcconfig.x86_64 | 6 +- 12 files changed, 561 insertions(+), 353 deletions(-) create mode 100644 main/libc0.9.32/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch create mode 100644 main/libc0.9.32/0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch create mode 100644 main/libc0.9.32/0003-ldso-support-RTLD_NOLOAD.patch delete mode 100644 main/libc0.9.32/arm-nptl-tls.patch delete mode 100644 main/libc0.9.32/config-has-fortify.patch delete mode 100644 main/libc0.9.32/pthread.patch diff --git a/main/libc0.9.32/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch b/main/libc0.9.32/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch new file mode 100644 index 0000000000..73e0fab2bf --- /dev/null +++ b/main/libc0.9.32/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch @@ -0,0 +1,198 @@ +From 0ba7ee452f26088f6b738c37e05c16c7c9eb1caf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Fri, 18 Mar 2011 10:53:56 +0200 +Subject: [PATCH 1/3] ldso: limited support for $ORIGIN in rpath +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Handle it if it's in the beginning of the rpath entry as it +should be. + +Signed-off-by: Timo Teräs +--- + ldso/ldso/dl-elf.c | 80 ++++++++++++++++++++++++++++----------------------- + ldso/ldso/ldso.c | 18 ++++++++++-- + 2 files changed, 59 insertions(+), 39 deletions(-) + +diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c +index 505247e..2b2d429 100644 +--- a/ldso/ldso/dl-elf.c ++++ b/ldso/ldso/dl-elf.c +@@ -133,53 +133,60 @@ _dl_protect_relro (struct elf_resolve *l) + * in uClibc/ldso/util/ldd.c */ + static struct elf_resolve * + search_for_named_library(const char *name, int secure, const char *path_list, +- struct dyn_elf **rpnt) ++ struct dyn_elf **rpnt, const char *origin) + { +- char *path, *path_n, *mylibname; ++ char *mylibname; ++ const char *p, *pn; + struct elf_resolve *tpnt; +- int done; ++ int plen; + + if (path_list==NULL) + return NULL; + +- /* We need a writable copy of this string, but we don't +- * need this allocated permanently since we don't want +- * to leak memory, so use alloca to put path on the stack */ +- done = _dl_strlen(path_list); +- path = alloca(done + 1); +- + /* another bit of local storage */ + mylibname = alloca(2050); + +- _dl_memcpy(path, path_list, done+1); +- + /* Unlike ldd.c, don't bother to eliminate double //s */ + + /* Replace colons with zeros in path_list */ + /* : at the beginning or end of path maps to CWD */ + /* :: anywhere maps CWD */ + /* "" maps to CWD */ +- done = 0; +- path_n = path; +- do { +- if (*path == 0) { +- *path = ':'; +- done = 1; +- } +- if (*path == ':') { +- *path = 0; +- if (*path_n) +- _dl_strcpy(mylibname, path_n); +- else +- _dl_strcpy(mylibname, "."); /* Assume current dir if empty path */ +- _dl_strcat(mylibname, "/"); +- _dl_strcat(mylibname, name); +- if ((tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname)) != NULL) +- return tpnt; +- path_n = path+1; ++ for (p = path_list; p != NULL; p = pn) { ++ pn = _dl_strchr(p + 1, ':'); ++ if (pn != NULL) { ++ plen = pn - p; ++ pn++; ++ } else ++ plen = _dl_strlen(p); ++ ++ if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) { ++ int olen; ++ if (secure && plen != 7) ++ continue; ++ if (origin == NULL) ++ continue; ++ for (olen = _dl_strlen(origin) - 1; olen >= 0 && origin[olen] != '/'; olen--) ++ ; ++ if (olen <= 0) ++ continue; ++ _dl_memcpy(&mylibname[0], origin, olen); ++ _dl_memcpy(&mylibname[olen], p + 7, plen - 7); ++ mylibname[olen + plen - 7] = 0; ++ } else if (plen != 0) { ++ _dl_memcpy(mylibname, p, plen); ++ mylibname[plen] = 0; ++ } else { ++ _dl_strcpy(mylibname, "."); + } +- path++; +- } while (!done); ++ _dl_strcat(mylibname, "/"); ++ _dl_strcat(mylibname, name); ++ ++ tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname); ++ if (tpnt != NULL) ++ return tpnt; ++ } ++ + return NULL; + } + +@@ -231,7 +238,8 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, ++ tpnt->libname)) != NULL) + return tpnt1; + } + #endif +@@ -239,7 +247,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */ + if (_dl_library_path) { + _dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path); +- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL) + { + return tpnt1; + } +@@ -253,7 +261,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL) + return tpnt1; + } + #endif +@@ -287,7 +295,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Look for libraries wherever the shared library loader + * was installed */ + _dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath); +- tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt); ++ tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + +@@ -300,7 +308,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + #ifndef __LDSO_CACHE_SUPPORT__ + ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" + #endif +- , rpnt); ++ , rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + +diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c +index 7ee9257..9423670 100644 +--- a/ldso/ldso/ldso.c ++++ b/ldso/ldso/ldso.c +@@ -272,6 +272,20 @@ static void __attribute__ ((destructor)) __attribute_used__ _dl_fini(void) + } + } + ++static void _dl_setup_progname(const char *argv0) ++{ ++ char image[PATH_MAX]; ++ ssize_t s; ++ ++ s = _dl_readlink("/proc/self/exe", image, sizeof(image)); ++ if (s > 0 && image[0] == '/') { ++ image[s] = 0; ++ _dl_progname = _dl_strdup(image); ++ } else if (argv0) { ++ _dl_progname = argv0; ++ } ++} ++ + void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp, + char **argv +@@ -321,9 +335,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + * been fixed up by now. Still no function calls outside of this + * library, since the dynamic resolver is not yet ready. + */ +- if (argv[0]) { +- _dl_progname = argv[0]; +- } ++ _dl_setup_progname(argv[0]); + + if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) { + _dl_dprintf(_dl_debug_file, "Standalone execution is not supported yet\n"); +-- +1.7.1 + diff --git a/main/libc0.9.32/0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch b/main/libc0.9.32/0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch new file mode 100644 index 0000000000..9d924655df --- /dev/null +++ b/main/libc0.9.32/0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch @@ -0,0 +1,61 @@ +From 70debeff167858502d99e92a221fe14f5428a9b6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Fri, 18 Mar 2011 10:57:31 +0200 +Subject: [PATCH 2/3] stdlib: fix arc4random return type to u_int32_t +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It's documented to be u_int32_t and not uint32_t: + http://www.manpagez.com/man/3/arc4random/ + +This also fixes a major bug that stdlib.h includes stdint.h. Things +might go very wrong because stdint.h has conditional defines and +if stdlib.h is included before #define's for stdint.h we end up +missing things and breaking builds (e.g. openjdk). + +Signed-off-by: Timo Teräs +--- + include/stdlib.h | 4 ++-- + libc/stdlib/arc4random.c | 3 ++- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/include/stdlib.h b/include/stdlib.h +index e9a8b84..7b35840 100644 +--- a/include/stdlib.h ++++ b/include/stdlib.h +@@ -902,8 +902,8 @@ extern int getloadavg (double __loadavg[], int __nelem) + #endif + + #ifdef __UCLIBC_HAS_ARC4RANDOM__ +-#include +-extern uint32_t arc4random(void); ++# include ++extern u_int32_t arc4random(void); + extern void arc4random_stir(void); + extern void arc4random_addrandom(unsigned char *, int); + #endif +diff --git a/libc/stdlib/arc4random.c b/libc/stdlib/arc4random.c +index c7aed66..7b9b12d 100644 +--- a/libc/stdlib/arc4random.c ++++ b/libc/stdlib/arc4random.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -175,7 +176,7 @@ arc4random_addrandom(u_char *dat, int datlen) + arc4_addrandom(&rs, dat, datlen); + } + +-uint32_t ++u_int32_t + arc4random(void) + { + if (!rs_initialized) +-- +1.7.1 + diff --git a/main/libc0.9.32/0003-ldso-support-RTLD_NOLOAD.patch b/main/libc0.9.32/0003-ldso-support-RTLD_NOLOAD.patch new file mode 100644 index 0000000000..f10d6f002d --- /dev/null +++ b/main/libc0.9.32/0003-ldso-support-RTLD_NOLOAD.patch @@ -0,0 +1,234 @@ +From 4bb377585b95cb67c90ff4ffc21a6870a4e78a37 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Fri, 18 Mar 2011 11:40:04 +0200 +Subject: [PATCH 3/3] ldso: support RTLD_NOLOAD +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +So application query if specified modile is loaded or not with +dlopen. + +Signed-off-by: Timo Teräs +--- + ldso/include/dl-elf.h | 6 ++++-- + ldso/ldso/dl-elf.c | 30 +++++++++++++++++------------- + ldso/ldso/ldso.c | 4 +++- + ldso/libdl/libdl.c | 5 +++-- + libc/sysdeps/linux/common/bits/dlfcn.h | 4 ++-- + 5 files changed, 29 insertions(+), 20 deletions(-) + +diff --git a/ldso/include/dl-elf.h b/ldso/include/dl-elf.h +index 7fbb373..7102351 100644 +--- a/ldso/include/dl-elf.h ++++ b/ldso/include/dl-elf.h +@@ -25,16 +25,18 @@ static __inline__ void _dl_map_cache(void) { } + static __inline__ void _dl_unmap_cache(void) { } + #endif + ++#define DL_RESOLVE_SECURE 0x0001 ++#define DL_RESOLVE_NOLOAD 0x0002 + + /* Function prototypes for non-static stuff in readelflib1.c */ + extern void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt, + unsigned long rel_addr, unsigned long rel_size); + extern int _dl_parse_relocation_information(struct dyn_elf *rpnt, + unsigned long rel_addr, unsigned long rel_size); +-extern struct elf_resolve * _dl_load_shared_library(int secure, ++extern struct elf_resolve * _dl_load_shared_library(int resolve_flags, + struct dyn_elf **rpnt, struct elf_resolve *tpnt, char *full_libname, + int trace_loaded_objects); +-extern struct elf_resolve * _dl_load_elf_shared_library(int secure, ++extern struct elf_resolve * _dl_load_elf_shared_library(int resolve_flags, + struct dyn_elf **rpnt, char *libname); + extern struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libname, + int trace_loaded_objects); +diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c +index 2b2d429..6d35bf2 100644 +--- a/ldso/ldso/dl-elf.c ++++ b/ldso/ldso/dl-elf.c +@@ -132,7 +132,7 @@ _dl_protect_relro (struct elf_resolve *l) + /* This function's behavior must exactly match that + * in uClibc/ldso/util/ldd.c */ + static struct elf_resolve * +-search_for_named_library(const char *name, int secure, const char *path_list, ++search_for_named_library(const char *name, int resolve_flags, const char *path_list, + struct dyn_elf **rpnt, const char *origin) + { + char *mylibname; +@@ -162,7 +162,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + + if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) { + int olen; +- if (secure && plen != 7) ++ if ((resolve_flags & DL_RESOLVE_SECURE) && plen != 7) + continue; + if (origin == NULL) + continue; +@@ -182,7 +182,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + _dl_strcat(mylibname, "/"); + _dl_strcat(mylibname, name); + +- tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname); ++ tpnt = _dl_load_elf_shared_library(resolve_flags, rpnt, mylibname); + if (tpnt != NULL) + return tpnt; + } +@@ -194,7 +194,7 @@ search_for_named_library(const char *name, int secure, const char *path_list, + unsigned long _dl_error_number; + unsigned long _dl_internal_error_number; + +-struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, ++struct elf_resolve *_dl_load_shared_library(int resolve_flags, struct dyn_elf **rpnt, + struct elf_resolve *tpnt, char *full_libname, int attribute_unused trace_loaded_objects) + { + char *pnt; +@@ -223,7 +223,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + + if (libname != full_libname) { + _dl_if_debug_dprint("\ttrying file='%s'\n", full_libname); +- tpnt1 = _dl_load_elf_shared_library(secure, rpnt, full_libname); ++ tpnt1 = _dl_load_elf_shared_library(resolve_flags, rpnt, full_libname); + if (tpnt1) { + return tpnt1; + } +@@ -238,7 +238,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, pnt, rpnt, + tpnt->libname)) != NULL) + return tpnt1; + } +@@ -247,7 +247,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */ + if (_dl_library_path) { + _dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path); +- if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, _dl_library_path, rpnt, NULL)) != NULL) + { + return tpnt1; + } +@@ -261,7 +261,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + if (pnt) { + pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt); +- if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL) ++ if ((tpnt1 = search_for_named_library(libname, resolve_flags, pnt, rpnt, NULL)) != NULL) + return tpnt1; + } + #endif +@@ -284,7 +284,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + || libent[i].flags == LIB_ELF_LIBC0 + || libent[i].flags == LIB_ELF_LIBC5) + && _dl_strcmp(libname, strs + libent[i].sooffset) == 0 +- && (tpnt1 = _dl_load_elf_shared_library(secure, rpnt, strs + libent[i].liboffset)) ++ && (tpnt1 = _dl_load_elf_shared_library(resolve_flags, rpnt, strs + libent[i].liboffset)) + ) { + return tpnt1; + } +@@ -295,14 +295,14 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, + /* Look for libraries wherever the shared library loader + * was installed */ + _dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath); +- tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL); ++ tpnt1 = search_for_named_library(libname, resolve_flags, _dl_ldsopath, rpnt, NULL); + if (tpnt1 != NULL) + return tpnt1; + + /* Lastly, search the standard list of paths for the library. + This list must exactly match the list in uClibc/ldso/util/ldd.c */ + _dl_if_debug_dprint("\tsearching full lib path list\n"); +- tpnt1 = search_for_named_library(libname, secure, ++ tpnt1 = search_for_named_library(libname, resolve_flags, + UCLIBC_RUNTIME_PREFIX "lib:" + UCLIBC_RUNTIME_PREFIX "usr/lib" + #ifndef __LDSO_CACHE_SUPPORT__ +@@ -329,7 +329,7 @@ goof: + * are required. + */ + +-struct elf_resolve *_dl_load_elf_shared_library(int secure, ++struct elf_resolve *_dl_load_elf_shared_library(int resolve_flags, + struct dyn_elf **rpnt, char *libname) + { + ElfW(Ehdr) *epnt; +@@ -368,7 +368,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure, + } + /* If we are in secure mode (i.e. a setu/gid binary using LD_PRELOAD), + we don't load the library if it isn't setuid. */ +- if (secure) { ++ if (resolve_flags & DL_RESOLVE_SECURE) { + if (!(st.st_mode & S_ISUID)) { + _dl_close(infile); + return NULL; +@@ -384,6 +384,10 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure, + return tpnt; + } + } ++ if (resolve_flags & DL_RESOLVE_NOLOAD) { ++ _dl_close(infile); ++ return NULL; ++ } + header = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0); + if (_dl_mmap_check_error(header)) { +diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c +index 9423670..b71af34 100644 +--- a/ldso/ldso/ldso.c ++++ b/ldso/ldso/ldso.c +@@ -646,7 +646,9 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, + if (!_dl_secure || _dl_strchr(str, '/') == NULL) { + _dl_if_debug_dprint("\tfile='%s'; needed by '%s'\n", str, _dl_progname); + +- tpnt1 = _dl_load_shared_library(_dl_secure, &rpnt, NULL, str, trace_loaded_objects); ++ tpnt1 = _dl_load_shared_library( ++ _dl_secure ? DL_RESOLVE_SECURE : 0, ++ &rpnt, NULL, str, trace_loaded_objects); + if (!tpnt1) { + #ifdef __LDSO_LDD_SUPPORT__ + if (trace_loaded_objects) +diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c +index 68cd579..edf38d2 100644 +--- a/ldso/libdl/libdl.c ++++ b/ldso/libdl/libdl.c +@@ -288,7 +288,7 @@ void *dlopen(const char *libname, int flag) + #endif + + /* A bit of sanity checking... */ +- if (!(flag & (RTLD_LAZY|RTLD_NOW))) { ++ if (!(flag & (RTLD_LAZY|RTLD_NOW|RTLD_NOLOAD))) { + _dl_error_number = LD_BAD_HANDLE; + return NULL; + } +@@ -358,8 +358,9 @@ void *dlopen(const char *libname, int flag) + /* Try to load the specified library */ + _dl_if_debug_print("Trying to dlopen '%s', RTLD_GLOBAL:%d RTLD_NOW:%d\n", + (char*)libname, (flag & RTLD_GLOBAL ? 1:0), (now_flag & RTLD_NOW ? 1:0)); +- tpnt = _dl_load_shared_library(0, &rpnt, tfrom, (char*)libname, 0); + ++ tpnt = _dl_load_shared_library((flag & RTLD_NOLOAD) ? DL_RESOLVE_NOLOAD : 0, ++ &rpnt, tfrom, (char*)libname, 0); + if (tpnt == NULL) { + _dl_unmap_cache(); + return NULL; +diff --git a/libc/sysdeps/linux/common/bits/dlfcn.h b/libc/sysdeps/linux/common/bits/dlfcn.h +index 4bfbbff..47b42ad 100644 +--- a/libc/sysdeps/linux/common/bits/dlfcn.h ++++ b/libc/sysdeps/linux/common/bits/dlfcn.h +@@ -24,9 +24,9 @@ + /* The MODE argument to `dlopen' contains one of the following: */ + #define RTLD_LAZY 0x00001 /* Lazy function call binding. */ + #define RTLD_NOW 0x00002 /* Immediate function call binding. */ +-#if 0 /* uClibc doesnt support these */ +-#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */ ++#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */ + #define RTLD_NOLOAD 0x00004 /* Do not load the object. */ ++#if 0 /* uClibc doesnt support these */ + #define RTLD_DEEPBIND 0x00008 /* Use deep binding. */ + #endif + +-- +1.7.1 + diff --git a/main/libc0.9.32/APKBUILD b/main/libc0.9.32/APKBUILD index 2593caa31b..c63ff2c931 100644 --- a/main/libc0.9.32/APKBUILD +++ b/main/libc0.9.32/APKBUILD @@ -2,9 +2,9 @@ _abiver=0.9.32 pkgname=libc$_abiver _gitver= -pkgver=0.9.32_rc2 +pkgver=0.9.32_rc3 _ver=${pkgver/_/-} -pkgrel=3 +pkgrel=0 pkgdesc="C library for developing embedded Linux systems" url=http://uclibc.org license="LGPL-2" @@ -20,10 +20,10 @@ _snapurl="http://git.uclibc.org/uClibc/snapshot/master.tar.bz2" _snapfile="$pkgname-$pkgver.tar.bz2" source="http://uclibc.org/downloads/uClibc-${_ver}.tar.bz2 compat-stack-guard.patch - config-has-fortify.patch - pthread.patch 0001-libm-x86_64-implement-fesetround.patch - arm-nptl-tls.patch + 0001-ldso-limited-support-for-ORIGIN-in-rpath.patch + 0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch + 0003-ldso-support-RTLD_NOLOAD.patch uclibcconfig.x86 uclibcconfig.x86_64 uclibcconfig.i486 @@ -118,15 +118,15 @@ libthread_db() { mv "$pkgdir"/lib/libthread_db* "$subpkgdir"/lib/ } -md5sums="c8d2cd2c4dbcf5218b6db843cf66ac0f uClibc-0.9.32-rc2.tar.bz2 -4d408f72142ce55a0754948cc9cfe447 compat-stack-guard.patch -fb349592e75c25aa03461740a7929ee5 config-has-fortify.patch -c92ab246b4f92487c98938a297208829 pthread.patch +md5sums="e7f420aa2fb28e7021d02c043acba71b uClibc-0.9.32-rc3.tar.bz2 +a9bfb77ea7dc5fb9abf4d4b19201c614 compat-stack-guard.patch e0c901502602f7e9e002d910d0f32ab9 0001-libm-x86_64-implement-fesetround.patch -2b4e27207b15e2d4b3e9b853513634f6 arm-nptl-tls.patch -145aaeb1833159397cfac9902e3877ab uclibcconfig.x86 -cb1bcf2ff83029b6943d4799d926932b uclibcconfig.x86_64 -145aaeb1833159397cfac9902e3877ab uclibcconfig.i486 -e46de2eb20803d93ff08e205b8ed228a uclibcconfig.arm -2c32eadd57ac4b39a93683f6a07bf901 uclibcconfig.powerpc +bc164e262c5feab55c800780704fa71c 0001-ldso-limited-support-for-ORIGIN-in-rpath.patch +b4fb68ad3d0e8331b1b40c30eb21dfdc 0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch +6147efd2eee5af5e734896823c2d1a3d 0003-ldso-support-RTLD_NOLOAD.patch +a06b654d73b8a8726af6b276c4e36fbf uclibcconfig.x86 +fcd976cd03baceb3c3795d92aa186868 uclibcconfig.x86_64 +a06b654d73b8a8726af6b276c4e36fbf uclibcconfig.i486 +2c1e143152b941b5a32319cb318ae2b8 uclibcconfig.arm +19686636eee494ac609b04b7aae42391 uclibcconfig.powerpc 7bf1af84106de9e05160ed6d4853c54f sha512-crypt.patch" diff --git a/main/libc0.9.32/arm-nptl-tls.patch b/main/libc0.9.32/arm-nptl-tls.patch deleted file mode 100644 index 44a038624f..0000000000 --- a/main/libc0.9.32/arm-nptl-tls.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 565b8d14a1dc2ce1a9c4110232e1abf88f0572ed Mon Sep 17 00:00:00 2001 -From: William Pitcock -Date: Fri, 14 Jan 2011 18:17:24 -0600 -Subject: [PATCH] nptl: fix TLS support on arm - -Signed-off-by: William Pitcock ---- - libpthread/nptl/sysdeps/arm/Makefile.arch | 2 + - libpthread/nptl/sysdeps/arm/libc-tls.c | 38 +++++++++++++++++++++++++++++ - 2 files changed, 40 insertions(+), 0 deletions(-) - create mode 100644 libpthread/nptl/sysdeps/arm/libc-tls.c - -diff --git a/libpthread/nptl/sysdeps/arm/Makefile.arch b/libpthread/nptl/sysdeps/arm/Makefile.arch -index a8bc1aa..d463253 100644 ---- a/libpthread/nptl/sysdeps/arm/Makefile.arch -+++ b/libpthread/nptl/sysdeps/arm/Makefile.arch -@@ -15,3 +15,5 @@ ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc -DIS_IN_libpthread - ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread - ASFLAGS-aeabi_read_tp.S = -DNOT_IN_libc=1 - -+libc_arch_a_CSRC = libc-tls.c -+ -diff --git a/libpthread/nptl/sysdeps/arm/libc-tls.c b/libpthread/nptl/sysdeps/arm/libc-tls.c -new file mode 100644 -index 0000000..a9e6d4f ---- /dev/null -+++ b/libpthread/nptl/sysdeps/arm/libc-tls.c -@@ -0,0 +1,38 @@ -+/* Thread-local storage handling in the ELF dynamic linker. MIPS version. -+ Copyright (C) 2005 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+#if USE_TLS -+ -+/* On ARM, linker optimizations are not required, so __tls_get_addr -+ can be called even in statically linked binaries. In this case module -+ must be always 1 and PT_TLS segment exist in the binary, otherwise it -+ would not link. */ -+ -+void * -+__tls_get_addr (tls_index *ti) -+{ -+ dtv_t *dtv = THREAD_DTV (); -+ return (char *) dtv[1].pointer.val + ti->ti_offset; -+} -+ -+#endif -+ --- -1.7.3.5 - diff --git a/main/libc0.9.32/compat-stack-guard.patch b/main/libc0.9.32/compat-stack-guard.patch index 71d78bac5a..c69a9c5350 100644 --- a/main/libc0.9.32/compat-stack-guard.patch +++ b/main/libc0.9.32/compat-stack-guard.patch @@ -1,51 +1,55 @@ diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c -index 125cf96..bb47952 100644 +index 2857f7e..dce6fd8 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c -@@ -101,10 +101,10 @@ extern void _start(void); +@@ -103,11 +103,7 @@ extern void _start(void); #ifdef __UCLIBC_HAS_SSP__ # include - uintptr_t stack_chk_guard; -+uintptr_t __stack_chk_guard attribute_relro; - # ifndef THREAD_SET_STACK_GUARD - /* Only exported for architectures that don't store the stack guard canary - * in local thread area. */ --uintptr_t __stack_chk_guard attribute_relro; - # ifdef __UCLIBC_HAS_SSP_COMPAT__ - strong_alias(__stack_chk_guard,__guard) - # endif -@@ -935,13 +935,12 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, - #ifdef __UCLIBC_HAS_SSP__ - /* Set up the stack checker's canary. */ + static uintptr_t stack_chk_guard; +-# ifndef THREAD_SET_STACK_GUARD +-/* Only exported for architectures that don't store the stack guard canary +- * in local thread area. */ + uintptr_t __stack_chk_guard attribute_relro; +-# endif + # ifdef __UCLIBC_HAS_SSP_COMPAT__ + uintptr_t __guard attribute_relro; + # endif +@@ -953,9 +949,8 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, stack_chk_guard = _dl_setup_stack_chk_guard (); -+ __stack_chk_guard = stack_chk_guard; # ifdef THREAD_SET_STACK_GUARD THREAD_SET_STACK_GUARD (stack_chk_guard); - # ifdef __UCLIBC_HAS_SSP_COMPAT__ - __guard = stack_chk_guard; - # endif -# else - __stack_chk_guard = stack_chk_guard; # endif - #endif - ++ __stack_chk_guard = stack_chk_guard; + # ifdef __UCLIBC_HAS_SSP_COMPAT__ + __guard = stack_chk_guard; + # endif diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c -index f7e45c6..b527068 100644 +index 315365a..78cd058 100644 --- a/libc/misc/internals/__uClibc_main.c +++ b/libc/misc/internals/__uClibc_main.c -@@ -43,13 +43,13 @@ void *__libc_stack_end = NULL; - +@@ -46,12 +46,7 @@ void *__libc_stack_end = NULL; # ifdef __UCLIBC_HAS_SSP__ # include -+/* for gcc-4.1 non-TLS */ -+uintptr_t __stack_chk_guard attribute_relro; - # ifndef THREAD_SET_STACK_GUARD - /* Only exported for architectures that don't store the stack guard canary - * in thread local area. */ - # include - uintptr_t stack_chk_guard; + static uintptr_t stack_chk_guard; +-# ifndef THREAD_SET_STACK_GUARD +-/* Only exported for architectures that don't store the stack guard canary +- * in thread local area. */ -/* for gcc-4.1 non-TLS */ --uintptr_t __stack_chk_guard attribute_relro; + uintptr_t __stack_chk_guard attribute_relro; +-# endif /* for gcc-3.x + Etoh ssp */ - # ifdef __UCLIBC_HAS_SSP_COMPAT__ - # ifdef __HAVE_SHARED__ + # ifdef __UCLIBC_HAS_SSP_COMPAT__ + uintptr_t __guard attribute_relro; +@@ -247,9 +242,8 @@ void __uClibc_init(void) + stack_chk_guard = _dl_setup_stack_chk_guard(); + # ifdef THREAD_SET_STACK_GUARD + THREAD_SET_STACK_GUARD (stack_chk_guard); +-# else +- __stack_chk_guard = stack_chk_guard; + # endif ++ __stack_chk_guard = stack_chk_guard; + # ifdef __UCLIBC_HAS_SSP_COMPAT__ + __guard = stack_chk_guard; + # endif diff --git a/main/libc0.9.32/config-has-fortify.patch b/main/libc0.9.32/config-has-fortify.patch deleted file mode 100644 index 01e26e7e12..0000000000 --- a/main/libc0.9.32/config-has-fortify.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 82098ab9b853c33ee8ade61c9510b295cc696de1 Mon Sep 17 00:00:00 2001 -From: Peter S. Mazinger -Date: Wed, 09 Mar 2011 08:23:48 +0000 -Subject: guard *_chk() related stuff with UCLIBC_HAS_FORTIFY - -Guard x86_64 memset_chk/memcpy_chk be guarded by UCLIBC_HAS_FORTIFY. -Compile ssp.c if one of SSP/FORTIFY is defined. -Guard __chk_fail() with UCLIBC_HAS_FORTIFY and move its prototype to libc-internal.h. -Disable _FORTIFY_SOURCE if UCLIBC_HAS_FORTIFY is not set. - -The config option itself is omitted on purpose, -headers need to be reviewed and generic *_chk() functions need to be first provided. - -Signed-off-by: Peter S. Mazinger ---- -diff --git a/include/features.h b/include/features.h -index f4d70d7..41e83a9 100644 ---- a/include/features.h -+++ b/include/features.h -@@ -198,9 +198,12 @@ - # define __OPTIMIZE_SIZE__ 1 - - /* disable unsupported features */ --# undef _FORTIFY_SOURCE - # undef __LDBL_COMPAT - -+# ifndef __UCLIBC_HAS_FORTIFY__ -+# undef _FORTIFY_SOURCE -+# endif -+ - # ifndef __UCLIBC_HAS_THREADS__ - # if defined _REENTRANT || defined _THREAD_SAFE - # warning requested reentrant code, but thread support was disabled -diff --git a/include/libc-internal.h b/include/libc-internal.h -index 443b1fc..3ac0b05 100644 ---- a/include/libc-internal.h -+++ b/include/libc-internal.h -@@ -65,6 +65,11 @@ libc_hidden_proto(__glibc_strerror_r) - /* internal access to program name */ - extern const char *__uclibc_progname attribute_hidden; - -+# ifdef __UCLIBC_HAS_FORTIFY__ -+extern void __chk_fail(void) attribute_noreturn; -+libc_hidden_proto(__chk_fail) -+# endif -+ - # endif /* IS_IN_libc */ - - #endif /* __ASSEMBLER__ */ -diff --git a/libc/string/x86_64/memcpy.S b/libc/string/x86_64/memcpy.S -index 6d941e0..9c8169b 100644 ---- a/libc/string/x86_64/memcpy.S -+++ b/libc/string/x86_64/memcpy.S -@@ -26,12 +26,10 @@ - #define MEMPCPY_P (defined memcpy) - - .text --#if defined __PIC__ && !defined NOT_IN_libc -+#if defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ - ENTRY (__memcpy_chk) - cmpq %rdx, %rcx --#if defined __UCLIBC_HAS_SSP__ - jb HIDDEN_JUMPTARGET (__chk_fail) --#endif - END (__memcpy_chk) - #endif - ENTRY (BP_SYM (memcpy)) -diff --git a/libc/string/x86_64/memset.S b/libc/string/x86_64/memset.S -index df265f3..6b758ce 100644 ---- a/libc/string/x86_64/memset.S -+++ b/libc/string/x86_64/memset.S -@@ -29,12 +29,10 @@ - #define LARGE $120000 - - .text --#if defined __PIC__ && !defined NOT_IN_libc -+#if defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ - ENTRY (__memset_chk) - cmpq %rdx, %rcx --#if defined __UCLIBC_HAS_SSP__ - jb HIDDEN_JUMPTARGET (__chk_fail) --#endif - END (__memset_chk) - #endif - ENTRY (memset) -@@ -144,6 +142,6 @@ END (memset) - libc_hidden_def(memset) - #endif - --#if !BZERO_P && defined __PIC__ && !defined NOT_IN_libc -+#if !BZERO_P && defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ - strong_alias (__memset_chk, __memset_zero_constant_len_parameter) - #endif -diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c -index d81c706..df242cc 100644 ---- a/libc/sysdeps/linux/common/ssp.c -+++ b/libc/sysdeps/linux/common/ssp.c -@@ -87,6 +87,7 @@ void __stack_smash_handler(char func[], int damaged) - } - #endif - -+#ifdef __UCLIBC_HAS_SSP__ - void __stack_chk_fail(void) attribute_noreturn __cold; - void __stack_chk_fail(void) - { -@@ -101,8 +102,9 @@ void __stack_chk_fail(void) - while(1) - terminate(); - } -+#endif - --void __chk_fail(void) attribute_noreturn; -+#ifdef __UCLIBC_HAS_FORTIFY__ - void __chk_fail(void) - { - static const char msg1[] = "buffer overflow detected: "; -@@ -116,4 +119,6 @@ void __chk_fail(void) - while(1) - terminate(); - } -+libc_hidden_def(__chk_fail) -+#endif - --- -cgit v0.8.2.1 diff --git a/main/libc0.9.32/pthread.patch b/main/libc0.9.32/pthread.patch deleted file mode 100644 index 47f99b217d..0000000000 --- a/main/libc0.9.32/pthread.patch +++ /dev/null @@ -1,81 +0,0 @@ ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -@@ -163,7 +163,7 @@ - cfi_startproc - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -@@ -118,7 +118,7 @@ - cfi_startproc - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -@@ -98,7 +98,7 @@ - 22: - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif -@@ -437,14 +437,6 @@ - /* Only clocks 0 and 1 are allowed so far. Both are handled in the - kernel. */ - leaq 32(%rsp), %rsi --# ifdef SHARED -- movq __vdso_clock_gettime@GOTPCREL(%rip), %rax -- movq (%rax), %rax -- PTR_DEMANGLE (%rax) -- jz 26f -- call *%rax -- jmp 27f --# endif - 26: movl $__NR_clock_gettime, %eax - syscall - 27: ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -@@ -96,7 +96,7 @@ - 11: - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -@@ -93,7 +93,7 @@ - 11: - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif ---- uClibc-0.9.32-rc2.orig/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -+++ uClibc-0.9.32-rc2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -@@ -61,7 +61,7 @@ - - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef __PIC__ -- cmpl $0, __have_futex_clock_realtime(%rip) -+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%rip) - # else - cmpl $0, __have_futex_clock_realtime - # endif diff --git a/main/libc0.9.32/uclibcconfig.arm b/main/libc0.9.32/uclibcconfig.arm index 6dda6e9dee..fa8a214194 100644 --- a/main/libc0.9.32/uclibcconfig.arm +++ b/main/libc0.9.32/uclibcconfig.arm @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Version: 0.9.32-rc1 -# Fri Jan 14 18:23:09 2011 +# Version: 0.9.32-rc3 +# Fri Mar 18 13:13:20 2011 # # TARGET_alpha is not set TARGET_arm=y @@ -28,6 +28,7 @@ TARGET_arm=y # TARGET_vax is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set +# TARGET_c6x is not set # # Target Architecture Features and Options @@ -110,6 +111,7 @@ COMPAT_ATEXIT=y UCLIBC_SUSV3_LEGACY=y UCLIBC_SUSV3_LEGACY_MACROS=y UCLIBC_SUSV4_LEGACY=y +# UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y diff --git a/main/libc0.9.32/uclibcconfig.powerpc b/main/libc0.9.32/uclibcconfig.powerpc index 370078a446..70b5089e43 100644 --- a/main/libc0.9.32/uclibcconfig.powerpc +++ b/main/libc0.9.32/uclibcconfig.powerpc @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Version: 0.9.32-rc2 -# Wed Feb 9 01:27:16 2011 +# Version: 0.9.32-rc3 +# Fri Mar 18 13:12:53 2011 # # TARGET_alpha is not set # TARGET_arm is not set @@ -28,32 +28,13 @@ TARGET_powerpc=y # TARGET_vax is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set +# TARGET_c6x is not set # # Target Architecture Features and Options # TARGET_ARCH="powerpc" FORCE_OPTIONS_FOR_ARCH=y -# CONFIG_ARM_OABI is not set -# CONFIG_ARM_EABI is not set -# CONFIG_GENERIC_ARM is not set -# CONFIG_ARM610 is not set -# CONFIG_ARM710 is not set -# CONFIG_ARM7TDMI is not set -# CONFIG_ARM720T is not set -# CONFIG_ARM920T is not set -# CONFIG_ARM922T is not set -# CONFIG_ARM926T is not set -# CONFIG_ARM10T is not set -# CONFIG_ARM1136JF_S is not set -# CONFIG_ARM1176JZ_S is not set -# CONFIG_ARM1176JZF_S is not set -# CONFIG_ARM_CORTEX_M3 is not set -# CONFIG_ARM_CORTEX_M1 is not set -# CONFIG_ARM_SA110 is not set -# CONFIG_ARM_SA1100 is not set -# CONFIG_ARM_XSCALE is not set -# CONFIG_ARM_IWMMXT is not set CONFIG_CLASSIC=y # CONFIG_E500 is not set TARGET_SUBARCH="classic" @@ -62,8 +43,6 @@ TARGET_SUBARCH="classic" # Using ELF file format # ARCH_BIG_ENDIAN=y -# ARCH_WANTS_BIG_ENDIAN is not set -# ARCH_WANTS_LITTLE_ENDIAN is not set # # Using Big Endian @@ -116,6 +95,7 @@ COMPAT_ATEXIT=y UCLIBC_SUSV3_LEGACY=y UCLIBC_SUSV3_LEGACY_MACROS=y UCLIBC_SUSV4_LEGACY=y +# UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y diff --git a/main/libc0.9.32/uclibcconfig.x86 b/main/libc0.9.32/uclibcconfig.x86 index b1d11065c6..2b01b203d9 100644 --- a/main/libc0.9.32/uclibcconfig.x86 +++ b/main/libc0.9.32/uclibcconfig.x86 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Version: 0.9.32-git -# Sat Oct 23 09:34:52 2010 +# Version: 0.9.32-rc3 +# Fri Mar 18 10:57:30 2011 # # TARGET_alpha is not set # TARGET_arm is not set @@ -28,6 +28,7 @@ TARGET_i386=y # TARGET_vax is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set +# TARGET_c6x is not set # # Target Architecture Features and Options @@ -109,6 +110,7 @@ COMPAT_ATEXIT=y UCLIBC_SUSV3_LEGACY=y UCLIBC_SUSV3_LEGACY_MACROS=y UCLIBC_SUSV4_LEGACY=y +# UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y diff --git a/main/libc0.9.32/uclibcconfig.x86_64 b/main/libc0.9.32/uclibcconfig.x86_64 index a07766c808..817718f380 100644 --- a/main/libc0.9.32/uclibcconfig.x86_64 +++ b/main/libc0.9.32/uclibcconfig.x86_64 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Version: 0.9.32-git -# Mon Nov 29 12:34:17 2010 +# Version: 0.9.32-rc3 +# Fri Mar 18 13:10:43 2011 # # TARGET_alpha is not set # TARGET_arm is not set @@ -28,6 +28,7 @@ # TARGET_vax is not set TARGET_x86_64=y # TARGET_xtensa is not set +# TARGET_c6x is not set # # Target Architecture Features and Options @@ -92,6 +93,7 @@ COMPAT_ATEXIT=y UCLIBC_SUSV3_LEGACY=y UCLIBC_SUSV3_LEGACY_MACROS=y UCLIBC_SUSV4_LEGACY=y +# UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y -- cgit v1.2.3