From d1991afecaaa019d68f8fb6c99b9f9cf756ae69b Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Mon, 6 Jul 2009 19:52:55 +0000 Subject: [PATCH] [uclibc] add more gcc-4.4 patches from uclibc's mailing-list SVN-Revision: 16720 --- .../patches-0.9.30.1/400-gcc4.4-fixes.patch | 902 ++++++++++++++++++ 1 file changed, 902 insertions(+) create mode 100644 toolchain/uClibc/patches-0.9.30.1/400-gcc4.4-fixes.patch diff --git a/toolchain/uClibc/patches-0.9.30.1/400-gcc4.4-fixes.patch b/toolchain/uClibc/patches-0.9.30.1/400-gcc4.4-fixes.patch new file mode 100644 index 0000000000..6292457e7a --- /dev/null +++ b/toolchain/uClibc/patches-0.9.30.1/400-gcc4.4-fixes.patch @@ -0,0 +1,902 @@ +The gcc-4.4 documentation still suggests that the compiler will automatically +do format checking for the standard format function prototypes, but it is now +also barking warnings suggesting that we add them for this lot too. So added. + +Signed-off-by: Ron Lee +--- + include/stdio.h | 15 ++++++++++----- + 1 files changed, 10 insertions(+), 5 deletions(-) + +Index: uClibc-0.9.30.1/include/stdio.h +=================================================================== +--- uClibc-0.9.30.1.orig/include/stdio.h 2008-09-30 14:17:04.000000000 +0200 ++++ uClibc-0.9.30.1/include/stdio.h 2009-07-06 21:16:14.000000000 +0200 +@@ -325,7 +325,8 @@ + extern int printf (__const char *__restrict __format, ...); + /* Write formatted output to S. */ + extern int sprintf (char *__restrict __s, +- __const char *__restrict __format, ...) __THROW; ++ __const char *__restrict __format, ...) ++ __THROW __attribute__ ((__format__ (__printf__, 2, 3))); + + /* Write formatted output to S from argument list ARG. + +@@ -340,7 +341,8 @@ + extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); + /* Write formatted output to S from argument list ARG. */ + extern int vsprintf (char *__restrict __s, __const char *__restrict __format, +- __gnuc_va_list __arg) __THROW; ++ __gnuc_va_list __arg) ++ __THROW __attribute__ ((__format__ (__printf__, 2, 0))); + __END_NAMESPACE_STD + + #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98 +@@ -391,15 +393,18 @@ + This function is a possible cancellation point and therefore not + marked with __THROW. */ + extern int fscanf (FILE *__restrict __stream, +- __const char *__restrict __format, ...) __wur; ++ __const char *__restrict __format, ...) ++ __attribute__ ((__format__ (__scanf__, 2, 3))) __wur; + /* Read formatted input from stdin. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +-extern int scanf (__const char *__restrict __format, ...) __wur; ++extern int scanf (__const char *__restrict __format, ...) ++ __attribute__ ((__format__ (__scanf__, 1, 2))) __wur; + /* Read formatted input from S. */ + extern int sscanf (__const char *__restrict __s, +- __const char *__restrict __format, ...) __THROW; ++ __const char *__restrict __format, ...) ++ __THROW __attribute__ ((__format__ (__scanf__, 2, 3))); + __END_NAMESPACE_STD + + #ifdef __USE_ISOC99 +gcc-4.4 now barks about this, so appease it. + +Signed-off-by: Ron Lee +--- + ldso/ldso/arm/dl-sysdep.h | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h +index 5191dd7..75c58b0 100644 +--- a/ldso/ldso/arm/dl-sysdep.h ++++ b/ldso/ldso/arm/dl-sysdep.h +@@ -98,11 +98,12 @@ elf_machine_dynamic (void) + return dynamic; + } + ++extern void __dl_start __asm__ ("_dl_start"); ++ + /* Return the run-time load address of the shared object. */ + static __always_inline Elf32_Addr __attribute__ ((unused)) + elf_machine_load_address (void) + { +- extern void __dl_start __asm__ ("_dl_start"); + Elf32_Addr got_addr = (Elf32_Addr) &__dl_start; + Elf32_Addr pcrel_addr; + #if defined __OPTIMIZE__ && !defined __thumb__ +usage() is also made static in answer to warnings about no prototype. +In __pthread_manager_event() we also have to drop the return statement, +else gcc will in turn complain about a non-returning function having one. + +Signed-off-by: Ron Lee +--- + libpthread/linuxthreads.old/manager.c | 4 ++-- + utils/ldconfig.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/libpthread/linuxthreads.old/manager.c b/libpthread/linuxthreads.old/manager.c +index 19be92f..0617d7d 100644 +--- a/libpthread/linuxthreads.old/manager.c ++++ b/libpthread/linuxthreads.old/manager.c +@@ -248,7 +248,7 @@ int attribute_noreturn __pthread_manager(void *arg) + } + } + +-int __pthread_manager_event(void *arg) ++int attribute_noreturn __pthread_manager_event(void *arg) + { + /* If we have special thread_self processing, initialize it. */ + #ifdef INIT_THREAD_SELF +@@ -260,7 +260,7 @@ int __pthread_manager_event(void *arg) + /* Free it immediately. */ + __pthread_unlock (THREAD_GETMEM((&__pthread_manager_thread), p_lock)); + +- return __pthread_manager(arg); ++ __pthread_manager(arg); + } + + /* Process creation */ +diff --git a/utils/ldconfig.c b/utils/ldconfig.c +index c52b170..f6aec5c 100644 +--- a/utils/ldconfig.c ++++ b/utils/ldconfig.c +@@ -114,7 +114,7 @@ static void warnx(const char *s, ...) + fprintf(stderr, "\n"); + } + +-static void err(int errnum, const char *s, ...) ++static void attribute_noreturn err(int errnum, const char *s, ...) + { + va_list p; + +@@ -783,7 +783,7 @@ void cache_print(void) + } + #endif + +-void usage(void) ++static void attribute_noreturn usage(void) + { + fprintf(stderr, + #ifdef __LDSO_CACHE_SUPPORT__ +-- +This keeps gcc-4.4 from nagging that they have no prototypes. + +Signed-off-by: Ron Lee +--- + utils/ldconfig.c | 16 ++++++++-------- + utils/ldd.c | 12 ++++++------ + utils/readsoname2.c | 2 +- + 3 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/utils/ldconfig.c b/utils/ldconfig.c +index f6aec5c..3bd7cee 100644 +--- a/utils/ldconfig.c ++++ b/utils/ldconfig.c +@@ -173,8 +173,8 @@ static char *xstrdup(const char *str) + #define readsonameXX readsoname64 + #define __ELF_NATIVE_CLASS 64 + #include "readsoname2.c" +-char *readsoname(char *name, FILE *infile, int expected_type, +- int *type, int elfclass) ++static char *readsoname(char *name, FILE *infile, int expected_type, ++ int *type, int elfclass) + { + char *res; + +@@ -206,8 +206,8 @@ char *readsoname(char *name, FILE *infile, int expected_type, + * If the expected, actual/deduced types missmatch we display a warning + * and use the actual/deduced type. + */ +-char *is_shlib(const char *dir, const char *name, int *type, +- int *islink, int expected_type) ++static char *is_shlib(const char *dir, const char *name, int *type, ++ int *islink, int expected_type) + { + char *good = NULL; + char *cp, *cp2; +@@ -323,7 +323,7 @@ char *is_shlib(const char *dir, const char *name, int *type, + } + + /* update the symlink to new library */ +-void link_shlib(const char *dir, const char *file, const char *so) ++static void link_shlib(const char *dir, const char *file, const char *so) + { + int change = 1; + char libname[BUFFER_SIZE]; +@@ -380,7 +380,7 @@ void link_shlib(const char *dir, const char *file, const char *so) + } + + /* figure out which library is greater */ +-int libcmp(char *p1, char *p2) ++static int libcmp(char *p1, char *p2) + { + while (*p1) { + if (isdigit(*p1) && isdigit(*p2)) { +@@ -412,7 +412,7 @@ struct lib { + }; + + /* update all shared library links in a directory */ +-void scan_dir(const char *rawname) ++static void scan_dir(const char *rawname) + { + DIR *dir; + const char *name; +@@ -554,7 +554,7 @@ void cache_write(void) + } + #else + /* return the list of system-specific directories */ +-char *get_extpath(void) ++static char *get_extpath(void) + { + char *res = NULL, *cp; + FILE *file; +diff --git a/utils/ldd.c b/utils/ldd.c +index 1f1dc25..02b37f1 100644 +--- a/utils/ldd.c ++++ b/utils/ldd.c +@@ -214,7 +214,7 @@ static char *elf_find_rpath(ElfW(Ehdr) *ehdr, ElfW(Dyn) *dynamic) + return NULL; + } + +-int check_elf_header(ElfW(Ehdr) *const ehdr) ++static int check_elf_header(ElfW(Ehdr) *const ehdr) + { + if (!ehdr || *(uint32_t*)ehdr != ELFMAG_U32 + || ehdr->e_ident[EI_CLASS] != ELFCLASSM +@@ -249,7 +249,7 @@ int check_elf_header(ElfW(Ehdr) *const ehdr) + static caddr_t cache_addr = NULL; + static size_t cache_size = 0; + +-int map_cache(void) ++static int map_cache(void) + { + int fd; + struct stat st; +@@ -306,7 +306,7 @@ fail: + return -1; + } + +-int unmap_cache(void) ++static int unmap_cache(void) + { + if (cache_addr == NULL || cache_addr == (caddr_t) - 1) + return -1; +@@ -372,8 +372,8 @@ static void search_for_named_library(char *name, char *result, + *result = '\0'; + } + +-void locate_library_file(ElfW(Ehdr) *ehdr, ElfW(Dyn) *dynamic, int is_suid, +- struct library *lib) ++static void locate_library_file(ElfW(Ehdr) *ehdr, ElfW(Dyn) *dynamic, ++ int is_suid, struct library *lib) + { + char *buf; + char *path; +@@ -608,7 +608,7 @@ static struct library *find_elf_interpreter(ElfW(Ehdr) *ehdr) + /* + #warning "There may be two warnings here about vfork() clobbering, ignore them" + */ +-int find_dependancies(char *filename) ++static int find_dependancies(char *filename) + { + int is_suid = 0; + FILE *thefile; +diff --git a/utils/readsoname2.c b/utils/readsoname2.c +index a74b46a..5cda331 100644 +--- a/utils/readsoname2.c ++++ b/utils/readsoname2.c +@@ -1,4 +1,4 @@ +-char *readsonameXX(char *name, FILE *infile, int expected_type, int *type) ++static char *readsonameXX(char *name, FILE *infile, int expected_type, int *type) + { + ElfW(Ehdr) *epnt; + ElfW(Phdr) *ppnt; +-- +This cuts down on a lot of noise from gcc-4.4 + +Signed-off-by: Ron Lee +--- + libc/misc/elf/dl-support.c | 5 ++--- + libc/sysdeps/linux/arm/aeabi_assert.c | 5 ++--- + libc/sysdeps/linux/arm/aeabi_atexit.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_errno_addr.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_localeconv.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_memclr.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_memcpy.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_memmove.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_memset.c | 4 ++-- + libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c | 15 ++++++--------- + libc/sysdeps/linux/arm/find_exidx.c | 4 ++-- + .../linuxthreads.old/sysdeps/arm/pt-machine.h | 4 ++-- + utils/chroot_realpath.c | 3 +++ + 13 files changed, 31 insertions(+), 33 deletions(-) + +diff --git a/libc/misc/elf/dl-support.c b/libc/misc/elf/dl-support.c +index 3c1d853..4dd155e 100644 +--- a/libc/misc/elf/dl-support.c ++++ b/libc/misc/elf/dl-support.c +@@ -17,9 +17,8 @@ + ElfW(Phdr) *_dl_phdr; + size_t _dl_phnum; + +-void +-internal_function +-_dl_aux_init (ElfW(auxv_t) *av) ++void internal_function _dl_aux_init (ElfW(auxv_t) *av); ++void internal_function _dl_aux_init (ElfW(auxv_t) *av) + { + /* Get the program headers base address from the aux vect */ + _dl_phdr = (ElfW(Phdr) *) av[AT_PHDR].a_un.a_val; +diff --git a/libc/sysdeps/linux/arm/aeabi_assert.c b/libc/sysdeps/linux/arm/aeabi_assert.c +index 53943ac..348ca9b 100644 +--- a/libc/sysdeps/linux/arm/aeabi_assert.c ++++ b/libc/sysdeps/linux/arm/aeabi_assert.c +@@ -22,9 +22,8 @@ + + /* libc_hidden_proto(__assert) */ + +-void +-__aeabi_assert (const char *assertion, const char *file, +- unsigned int line) ++void __aeabi_assert(const char *assertion, const char *file, unsigned int line); ++void __aeabi_assert(const char *assertion, const char *file, unsigned int line) + { + __assert (assertion, file, line, NULL); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_atexit.c b/libc/sysdeps/linux/arm/aeabi_atexit.c +index 4a7a6f1..ebb233b 100644 +--- a/libc/sysdeps/linux/arm/aeabi_atexit.c ++++ b/libc/sysdeps/linux/arm/aeabi_atexit.c +@@ -24,8 +24,8 @@ libc_hidden_proto(__cxa_atexit) + /* Register a function to be called by exit or when a shared library + is unloaded. This routine is like __cxa_atexit, but uses the + calling sequence required by the ARM EABI. */ +-int +-__aeabi_atexit (void *arg, void (*func) (void *), void *d) ++int __aeabi_atexit (void *arg, void (*func) (void *), void *d); ++int __aeabi_atexit (void *arg, void (*func) (void *), void *d) + { + return __cxa_atexit (func, arg, d); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_errno_addr.c b/libc/sysdeps/linux/arm/aeabi_errno_addr.c +index 09bdc1e..5e262a6 100644 +--- a/libc/sysdeps/linux/arm/aeabi_errno_addr.c ++++ b/libc/sysdeps/linux/arm/aeabi_errno_addr.c +@@ -18,8 +18,8 @@ + + #include + +-volatile int * +-__aeabi_errno_addr (void) ++volatile int * __aeabi_errno_addr (void); ++volatile int * __aeabi_errno_addr (void) + { + return &errno; + } +diff --git a/libc/sysdeps/linux/arm/aeabi_localeconv.c b/libc/sysdeps/linux/arm/aeabi_localeconv.c +index 6fa29bb..4c34f57 100644 +--- a/libc/sysdeps/linux/arm/aeabi_localeconv.c ++++ b/libc/sysdeps/linux/arm/aeabi_localeconv.c +@@ -20,8 +20,8 @@ + + /* libc_hidden_proto(localeconv) */ + +-struct lconv * +-__aeabi_localeconv (void) ++struct lconv * __aeabi_localeconv (void); ++struct lconv * __aeabi_localeconv (void) + { + return localeconv (); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_memclr.c b/libc/sysdeps/linux/arm/aeabi_memclr.c +index c0f9021..9125bac 100644 +--- a/libc/sysdeps/linux/arm/aeabi_memclr.c ++++ b/libc/sysdeps/linux/arm/aeabi_memclr.c +@@ -22,8 +22,8 @@ + + /* Clear memory. Can't alias to bzero because it's not defined in the + same translation unit. */ +-void +-__aeabi_memclr (void *dest, size_t n) ++void __aeabi_memclr (void *dest, size_t n); ++void __aeabi_memclr (void *dest, size_t n) + { + memset (dest, 0, n); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_memcpy.c b/libc/sysdeps/linux/arm/aeabi_memcpy.c +index 83eac0b..604c139 100644 +--- a/libc/sysdeps/linux/arm/aeabi_memcpy.c ++++ b/libc/sysdeps/linux/arm/aeabi_memcpy.c +@@ -23,8 +23,8 @@ + /* Copy memory like memcpy, but no return value required. Can't alias + to memcpy because it's not defined in the same translation + unit. */ +-void +-__aeabi_memcpy (void *dest, const void *src, size_t n) ++void __aeabi_memcpy (void *dest, const void *src, size_t n); ++void __aeabi_memcpy (void *dest, const void *src, size_t n) + { + memcpy (dest, src, n); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_memmove.c b/libc/sysdeps/linux/arm/aeabi_memmove.c +index 164d72b..7ecfbb7 100644 +--- a/libc/sysdeps/linux/arm/aeabi_memmove.c ++++ b/libc/sysdeps/linux/arm/aeabi_memmove.c +@@ -23,8 +23,8 @@ + /* Copy memory like memmove, but no return value required. Can't + alias to memmove because it's not defined in the same translation + unit. */ +-void +-__aeabi_memmove (void *dest, const void *src, size_t n) ++void __aeabi_memmove (void *dest, const void *src, size_t n); ++void __aeabi_memmove (void *dest, const void *src, size_t n) + { + memmove (dest, src, n); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_memset.c b/libc/sysdeps/linux/arm/aeabi_memset.c +index f1c366f..a37e21f 100644 +--- a/libc/sysdeps/linux/arm/aeabi_memset.c ++++ b/libc/sysdeps/linux/arm/aeabi_memset.c +@@ -22,8 +22,8 @@ + + /* Set memory like memset, but different argument order and no return + value required. */ +-void +-__aeabi_memset (void *dest, size_t n, int c) ++void __aeabi_memset (void *dest, size_t n, int c); ++void __aeabi_memset (void *dest, size_t n, int c) + { + memset (dest, c, n); + } +diff --git a/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c b/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c +index e657d38..4544dc7 100644 +--- a/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c ++++ b/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c +@@ -24,20 +24,17 @@ + + #include + +-attribute_hidden +-void +-__aeabi_unwind_cpp_pr0 (void) ++attribute_hidden void __aeabi_unwind_cpp_pr0 (void); ++attribute_hidden void __aeabi_unwind_cpp_pr0 (void) + { + } + +-attribute_hidden +-void +-__aeabi_unwind_cpp_pr1 (void) ++attribute_hidden void __aeabi_unwind_cpp_pr1 (void); ++attribute_hidden void __aeabi_unwind_cpp_pr1 (void) + { + } + +-attribute_hidden +-void +-__aeabi_unwind_cpp_pr2 (void) ++attribute_hidden void __aeabi_unwind_cpp_pr2 (void); ++attribute_hidden void __aeabi_unwind_cpp_pr2 (void) + { + } +diff --git a/libc/sysdeps/linux/arm/find_exidx.c b/libc/sysdeps/linux/arm/find_exidx.c +index 9e4f401..a16534b 100644 +--- a/libc/sysdeps/linux/arm/find_exidx.c ++++ b/libc/sysdeps/linux/arm/find_exidx.c +@@ -65,8 +65,8 @@ find_exidx_callback (struct dl_phdr_info * info, size_t size, void * ptr) + + /* Find the exception index table containing PC. */ + +-_Unwind_Ptr +-__gnu_Unwind_Find_exidx (_Unwind_Ptr pc, int * pcount) ++_Unwind_Ptr __gnu_Unwind_Find_exidx (_Unwind_Ptr pc, int * pcount); ++_Unwind_Ptr __gnu_Unwind_Find_exidx (_Unwind_Ptr pc, int * pcount) + { + struct unw_eh_callback_data data; + +diff --git a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h +index 14eb6f6..583eb68 100644 +--- a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h ++++ b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h +@@ -33,8 +33,8 @@ + time; let's hope nobody tries to use one. */ + + /* Spinlock implementation; required. */ +-PT_EI long int +-testandset (int *spinlock) ++PT_EI long int testandset (int *spinlock); ++PT_EI long int testandset (int *spinlock) + { + register unsigned int ret; + +diff --git a/utils/chroot_realpath.c b/utils/chroot_realpath.c +index 82ccbf6..d912a06 100644 +--- a/utils/chroot_realpath.c ++++ b/utils/chroot_realpath.c +@@ -25,6 +25,9 @@ + #define MAX_READLINKS 32 + + char *chroot_realpath(const char *chroot, const char *path, ++ char resolved_path[]); ++ ++char *chroot_realpath(const char *chroot, const char *path, + char resolved_path[]) + { + char copy_path[PATH_MAX]; +-- +Once again all of these reduce the noise from gcc-4.4. +Replaces a few more (USE_TLS && HAVE___THREAD) with USE___THREAD while we need +to mess with them for this anyhow. + +Signed-off-by: Ron Lee +--- + libc/misc/fnmatch/fnmatch.c | 2 +- + libpthread/linuxthreads.old/cancel.c | 6 +++--- + libpthread/linuxthreads.old/libc_pthread_init.c | 4 ++-- + libpthread/linuxthreads.old/pthread.c | 2 +- + libpthread/linuxthreads.old/ptlongjmp.c | 4 ++-- + libpthread/linuxthreads.old/specific.c | 2 +- + .../linuxthreads.old_db/td_thr_tls_get_addr.c | 2 +- + 7 files changed, 11 insertions(+), 11 deletions(-) + +Index: uClibc-0.9.30.1/libc/misc/fnmatch/fnmatch.c +=================================================================== +--- uClibc-0.9.30.1.orig/libc/misc/fnmatch/fnmatch.c 2008-06-01 22:44:48.000000000 +0200 ++++ uClibc-0.9.30.1/libc/misc/fnmatch/fnmatch.c 2009-07-06 21:16:29.000000000 +0200 +@@ -17,7 +17,7 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +-#if HAVE_CONFIG_H ++#ifdef HAVE_CONFIG_H + # include + #endif + +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old/cancel.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old/cancel.c 2008-07-23 13:23:36.000000000 +0200 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old/cancel.c 2009-07-06 21:16:29.000000000 +0200 +@@ -31,7 +31,7 @@ + + #ifdef _STACK_GROWS_DOWN + # define FRAME_LEFT(frame, other) ((char *) frame >= (char *) other) +-#elif _STACK_GROWS_UP ++#elif defined _STACK_GROWS_UP + # define FRAME_LEFT(frame, other) ((char *) frame <= (char *) other) + #else + # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" +@@ -193,10 +193,10 @@ + + for (c = THREAD_GETMEM(self, p_cleanup); c != NULL; c = c->__prev) + { +-#if _STACK_GROWS_DOWN ++#ifdef _STACK_GROWS_DOWN + if ((char *) c <= currentframe) + break; +-#elif _STACK_GROWS_UP ++#elif defined _STACK_GROWS_UP + if ((char *) c >= currentframe) + break; + #else +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old/libc_pthread_init.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old/libc_pthread_init.c 2008-05-20 10:47:51.000000000 +0200 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old/libc_pthread_init.c 2009-07-06 21:17:10.000000000 +0200 +@@ -26,7 +26,7 @@ + + /* Experimentally off - libc_hidden_proto(memcpy) */ + +-#if !(USE_TLS && HAVE___THREAD) && defined __UCLIBC_HAS_XLOCALE__ ++#if ! defined USE___THREAD && defined __UCLIBC_HAS_XLOCALE__ + libc_hidden_proto(uselocale) + #endif + +@@ -42,7 +42,7 @@ + sizeof (__libc_pthread_functions)); + #endif + +-#if !(USE_TLS && HAVE___THREAD) && defined __UCLIBC_HAS_XLOCALE__ ++#if ! defined USE___THREAD && defined __UCLIBC_HAS_XLOCALE__ + /* Initialize thread-locale current locale to point to the global one. + With __thread support, the variable's initializer takes care of this. */ + uselocale (LC_GLOBAL_LOCALE); +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old/pthread.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old/pthread.c 2008-10-03 15:59:52.000000000 +0200 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old/pthread.c 2009-07-06 21:17:53.000000000 +0200 +@@ -321,7 +321,7 @@ + + struct pthread_functions __pthread_functions = + { +-#if !(USE_TLS && HAVE___THREAD) ++#ifndef USE___THREAD + .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set, + .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get, + .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address, +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old/ptlongjmp.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old/ptlongjmp.c 2006-11-09 09:11:33.000000000 +0100 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old/ptlongjmp.c 2009-07-06 21:16:29.000000000 +0200 +@@ -35,13 +35,13 @@ + c != NULL && _JMPBUF_UNWINDS(target, c); + c = c->__prev) + { +-#if _STACK_GROWS_DOWN ++#ifdef _STACK_GROWS_DOWN + if ((char *) c <= currentframe) + { + c = NULL; + break; + } +-#elif _STACK_GROWS_UP ++#elif defined _STACK_GROWS_UP + if ((char *) c >= currentframe) + { + c = NULL; +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old/specific.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old/specific.c 2008-05-20 10:47:51.000000000 +0200 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old/specific.c 2009-07-06 21:18:28.000000000 +0200 +@@ -167,7 +167,7 @@ + __pthread_unlock(THREAD_GETMEM(self, p_lock)); + } + +-#if !(USE_TLS && HAVE___THREAD) ++#ifndef USE___THREAD + + /* Thread-specific data for libc. */ + +Index: uClibc-0.9.30.1/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c +=================================================================== +--- uClibc-0.9.30.1.orig/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2005-11-22 22:32:06.000000000 +0100 ++++ uClibc-0.9.30.1/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2009-07-06 21:16:29.000000000 +0200 +@@ -31,7 +31,7 @@ + size_t offset __attribute__ ((unused)), + void **address __attribute__ ((unused))) + { +-#if USE_TLS ++#ifdef USE_TLS + size_t modid; + union dtv pdtv, *dtvp; + +elf.h needs __BYTE_ORDER, and s_scalbn.c needs {LONG,INT}_MAX. +shm.c complains about no prototypes for shm_{open,unlink} without its header. + +Signed-off-by: Ron Lee +--- + include/elf.h | 1 + + libm/s_scalbn.c | 1 + + librt/shm.c | 1 + + 3 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/include/elf.h b/include/elf.h +index 0129f1e..16a6972 100644 +--- a/include/elf.h ++++ b/include/elf.h +@@ -28,6 +28,7 @@ extern "C" { + /* Standard ELF types. */ + + #include ++#include + + /* Type for a 16-bit quantity. */ + typedef uint16_t Elf32_Half; +diff --git a/libm/s_scalbn.c b/libm/s_scalbn.c +index c534467..47983b0 100644 +--- a/libm/s_scalbn.c ++++ b/libm/s_scalbn.c +@@ -18,6 +18,7 @@ + + #include "math.h" + #include "math_private.h" ++#include + + static const double + two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ +-- +gcc-4.4 barks about that. + +Signed-off-by: Ron Lee +--- + utils/ldconfig.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/utils/ldconfig.c b/utils/ldconfig.c +index 3bd7cee..505316b 100644 +--- a/utils/ldconfig.c ++++ b/utils/ldconfig.c +@@ -127,14 +127,14 @@ static void attribute_noreturn err(int errnum, const char *s, ...) + + static void vperror_msg(const char *s, va_list p) + { +- int err = errno; ++ int e = errno; + + if (s == 0) + s = ""; + verror_msg(s, p); + if (*s) + s = ": "; +- fprintf(stderr, "%s%s\n", s, strerror(err)); ++ fprintf(stderr, "%s%s\n", s, strerror(e)); + } + + static void warn(const char *s, ...) +-- +Signed-off-by: Ron Lee +--- + utils/ldconfig.c | 10 +++++----- + utils/ldd.c | 4 ++-- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/utils/ldconfig.c b/utils/ldconfig.c +index 505316b..139b5f9 100644 +--- a/utils/ldconfig.c ++++ b/utils/ldconfig.c +@@ -558,18 +558,18 @@ static char *get_extpath(void) + { + char *res = NULL, *cp; + FILE *file; +- struct stat stat; ++ struct stat st; + char realconffile[BUFFER_SIZE]; + + if (!chroot_realpath(chroot_dir, conffile, realconffile)) + return NULL; + + if ((file = fopen(realconffile, "r")) != NULL) { +- fstat(fileno(file), &stat); +- res = xmalloc(stat.st_size + 1); +- fread(res, 1, stat.st_size, file); ++ fstat(fileno(file), &st); ++ res = xmalloc(st.st_size + 1); ++ fread(res, 1, st.st_size, file); + fclose(file); +- res[stat.st_size] = '\0'; ++ res[st.st_size] = '\0'; + + /* convert comments fo spaces */ + for (cp = res; *cp; /*nada */ ) { +diff --git a/utils/ldd.c b/utils/ldd.c +index 02b37f1..e7a94cb 100644 +--- a/utils/ldd.c ++++ b/utils/ldd.c +@@ -683,8 +683,8 @@ foo: + && ehdr->e_ident[EI_VERSION] == EV_CURRENT + && MATCH_MACHINE(ehdr->e_machine)) + { +- struct stat statbuf; +- if (stat(interp->path, &statbuf) == 0 && S_ISREG(statbuf.st_mode)) { ++ struct stat st; ++ if (stat(interp->path, &st) == 0 && S_ISREG(st.st_mode)) { + pid_t pid; + int status; + static const char *const environment[] = { +-- +Signed-off-by: Ron Lee +--- + libpthread/linuxthreads.old/manager.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libpthread/linuxthreads.old/manager.c b/libpthread/linuxthreads.old/manager.c +index 0617d7d..88c9253 100644 +--- a/libpthread/linuxthreads.old/manager.c ++++ b/libpthread/linuxthreads.old/manager.c +@@ -578,9 +578,9 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, + /* See whether the TD_CREATE event bit is set in any of the + masks. */ + int idx = __td_eventword (TD_CREATE); +- uint32_t mask = __td_eventmask (TD_CREATE); ++ uint32_t m = __td_eventmask (TD_CREATE); + +- if ((mask & (__pthread_threads_events.event_bits[idx] ++ if ((m & (__pthread_threads_events.event_bits[idx] + | event_maskp->event_bits[idx])) != 0) + { + /* Lock the mutex the child will use now so that it will stop. */ +-- +Signed-off-by: Ron Lee +--- + utils/chroot_realpath.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/utils/chroot_realpath.c b/utils/chroot_realpath.c +index d912a06..0be57bf 100644 +--- a/utils/chroot_realpath.c ++++ b/utils/chroot_realpath.c +@@ -24,10 +24,10 @@ + + #define MAX_READLINKS 32 + +-char *chroot_realpath(const char *chroot, const char *path, ++char *chroot_realpath(const char *root, const char *path, + char resolved_path[]); + +-char *chroot_realpath(const char *chroot, const char *path, ++char *chroot_realpath(const char *root, const char *path, + char resolved_path[]) + { + char copy_path[PATH_MAX]; +@@ -41,13 +41,13 @@ char *chroot_realpath(const char *chroot, const char *path, + int chroot_len; + + /* Trivial case. */ +- if (chroot == NULL || *chroot == '\0' || +- (*chroot == '/' && chroot[1] == '\0')) { ++ if (root == NULL || *root == '\0' || ++ (*root == '/' && root[1] == '\0')) { + strcpy(resolved_path, path); + return resolved_path; + } + +- chroot_len = strlen(chroot); ++ chroot_len = strlen(root); + + if (chroot_len + strlen(path) >= PATH_MAX - 3) { + errno = ENAMETOOLONG; +@@ -60,7 +60,7 @@ char *chroot_realpath(const char *chroot, const char *path, + max_path = copy_path + PATH_MAX - chroot_len - 3; + + /* Start with the chroot path. */ +- strcpy(new_path, chroot); ++ strcpy(new_path, root); + new_path += chroot_len; + while (*new_path == '/' && new_path > got_path) + new_path--; +-- +The test here is a constant expression and will compile out. +For platforms that don't need the shift the code gets slightly smaller +and simpler, for those that do the result is unchanged. + +Signed-off-by: Ron Lee +--- + libc/sysdeps/linux/arm/posix_fadvise.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +Index: uClibc-0.9.30.1/libc/sysdeps/linux/arm/posix_fadvise.c +=================================================================== +--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/arm/posix_fadvise.c 2007-05-31 10:21:38.000000000 +0200 ++++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/posix_fadvise.c 2009-07-06 21:19:18.000000000 +0200 +@@ -18,8 +18,8 @@ + { + INTERNAL_SYSCALL_DECL (err); + int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise, +- __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset), +- __LONG_LONG_PAIR ((long)(len >> 32), (long)len)); ++ __LONG_LONG_PAIR (HIGH_BITS(offset), (long)offset), ++ __LONG_LONG_PAIR (HIGH_BITS(len), (long)len)); + + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) + return INTERNAL_SYSCALL_ERRNO (ret, err); +Signed-off-by: Ron Lee +--- + ldso/ldso/dl-elf.c | 4 +++- + ldso/ldso/dl-startup.c | 3 ++- + libc/inet/getaddrinfo.c | 9 ++++++--- + 3 files changed, 11 insertions(+), 5 deletions(-) + +Index: uClibc-0.9.30.1/ldso/ldso/dl-elf.c +=================================================================== +--- uClibc-0.9.30.1.orig/ldso/ldso/dl-elf.c 2008-11-18 15:01:35.000000000 +0100 ++++ uClibc-0.9.30.1/ldso/ldso/dl-elf.c 2009-07-06 21:20:03.000000000 +0200 +@@ -341,6 +341,7 @@ + ElfW(Addr) relro_addr = 0; + size_t relro_size = 0; + struct stat st; ++ uint32_t *p32; + DL_LOADADDR_TYPE lib_loadaddr; + DL_INIT_LOADADDR_EXTRA_DECLS + +Index: uClibc-0.9.30.1/ldso/ldso/dl-startup.c +=================================================================== +--- uClibc-0.9.30.1.orig/ldso/ldso/dl-startup.c 2008-05-30 16:22:26.000000000 +0200 ++++ uClibc-0.9.30.1/ldso/ldso/dl-startup.c 2009-07-06 21:20:03.000000000 +0200 +@@ -122,6 +122,7 @@ + struct elf_resolve *tpnt = &tpnt_tmp; + ElfW(auxv_t) auxvt[AT_EGID + 1]; + ElfW(Dyn) *dpnt; ++ uint32_t *p32; + + /* WARNING! -- we cannot make _any_ funtion calls until we have + * taken care of fixing up our own relocations. Making static +Index: uClibc-0.9.30.1/libc/inet/getaddrinfo.c +=================================================================== +--- uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c 2009-02-26 13:49:14.000000000 +0100 ++++ uClibc-0.9.30.1/libc/inet/getaddrinfo.c 2009-07-06 21:20:03.000000000 +0200 +@@ -539,7 +539,8 @@ + + if (scope_delim != NULL) { + int try_numericscope = 0; +- if (IN6_IS_ADDR_LINKLOCAL(at->addr) || IN6_IS_ADDR_MC_LINKLOCAL(at->addr)) { ++ uint32_t *a32 = (uint32_t*)at->addr; ++ if (IN6_IS_ADDR_LINKLOCAL(a32) || IN6_IS_ADDR_MC_LINKLOCAL(at->addr)) { + at->scopeid = if_nametoindex(scope_delim + 1); + if (at->scopeid == 0) + try_numericscope = 1; +@@ -617,8 +618,10 @@ + #endif + if (req->ai_family == 0 || req->ai_family == AF_INET) { + atr->family = AF_INET; +- if ((req->ai_flags & AI_PASSIVE) == 0) +- *(uint32_t*)atr->addr = htonl(INADDR_LOOPBACK); ++ if ((req->ai_flags & AI_PASSIVE) == 0) { ++ uint32_t *a = (uint32_t*)atr->addr; ++ *a = htonl(INADDR_LOOPBACK); ++ } + } + } + -- 2.30.2