This patch fixes build error 1). In file included from ../include/pthread.h:1, from ../nptl/sysdeps/pthread/bits/libc-lock.h:23, from ./gconv_int.h:25, from gconv.c:23: ../nptl/sysdeps/pthread/pthread.h:664: error: array type has incomplete element type 2). rtld.c: In function '_dl_start': dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined 3). In file included from jis0208.c:23: jis0208.h:32: error: array type has incomplete element type elf/dynamic-link.h | 37 ------------------------------------- iconvdata/jis0208.h | 16 +++++++--------- nptl/sysdeps/pthread/pthread.h | 3 +-- 3 files changed, 8 insertions(+), 48 deletions(-) --- glibc-2.3.4/nptl/sysdeps/pthread/pthread.h.orig 2004-11-24 23:55:24.000000000 +0100 +++ glibc-2.3.4/nptl/sysdeps/pthread/pthread.h 2005-02-14 16:24:22.104239520 +0100 @@ -24,9 +24,9 @@ #include #define __need_sigset_t +#include #include #include -#include #include @@ -660,7 +660,6 @@ #endif /* Function used in the macros. */ -struct __jmp_buf_tag; extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW; --- glibc-2.3.4/elf/dynamic-link.h.orig 2004-09-24 19:09:03.000000000 +0200 +++ glibc-2.3.4/elf/dynamic-link.h 2005-02-16 10:37:32.664843192 +0100 @@ -19,43 +19,6 @@ #include #include - -#ifdef RESOLVE -/* We pass reloc_addr as a pointer to void, as opposed to a pointer to - ElfW(Addr), because not all architectures can assume that the - relocated address is properly aligned, whereas the compiler is - entitled to assume that a pointer to a type is properly aligned for - the type. Even if we cast the pointer back to some other type with - less strict alignment requirements, the compiler might still - remember that the pointer was originally more aligned, thereby - optimizing away alignment tests or using word instructions for - copying memory, breaking the very code written to handle the - unaligned cases. */ -auto void __attribute__((always_inline)) -elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, - const ElfW(Sym) *sym, const struct r_found_version *version, - void *const reloc_addr); -auto void __attribute__((always_inline)) -elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, - const ElfW(Sym) *sym, const struct r_found_version *version, - void *const reloc_addr); -auto void __attribute__((always_inline)) -elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, - void *const reloc_addr); -auto void __attribute__((always_inline)) -elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - void *const reloc_addr); -# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL -auto void __attribute__((always_inline)) -elf_machine_lazy_rel (struct link_map *map, - ElfW(Addr) l_addr, const ElfW(Rel) *reloc); -# else -auto void __attribute__((always_inline)) -elf_machine_lazy_rel (struct link_map *map, - ElfW(Addr) l_addr, const ElfW(Rela) *reloc); -# endif -#endif - #include #ifndef VERSYMIDX --- glibc-2.3.4/iconvdata/jis0208.h.orig 2005-02-16 10:30:39.185701576 +0100 +++ glibc-2.3.4/iconvdata/jis0208.h 2005-02-16 10:31:18.736688912 +0100 @@ -24,15 +24,6 @@ #include #include -/* Conversion table. */ -extern const uint16_t __jis0208_to_ucs[]; - -extern const char __jisx0208_from_ucs4_lat1[256][2]; -extern const char __jisx0208_from_ucs4_greek[0xc1][2]; -extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; -extern const char __jisx0208_from_ucs_tab[][2]; - - /* Struct for table with indeces in UCS mapping table. */ struct jisx0208_ucs_idx { @@ -41,6 +32,13 @@ uint16_t idx; }; +/* Conversion table. */ +extern const uint16_t __jis0208_to_ucs[]; + +extern const char __jisx0208_from_ucs4_lat1[256][2]; +extern const char __jisx0208_from_ucs4_greek[0xc1][2]; +extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; +extern const char __jisx0208_from_ucs_tab[14210][2]; static inline uint32_t __attribute ((always_inline)) =================================================================== RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/powerpc/tcb-offsets.sym,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- libc/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2004/01/13 21:30:17 1.7 +++ libc/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2005/03/05 19:27:55 1.8 @@ -8,7 +8,7 @@ -- Abuse tls.h macros to derive offsets relative to the thread register. # undef __thread_register # define __thread_register ((void *) 0) -# define thread_offsetof(mem) ((void *) &THREAD_SELF->p_##mem - (void *) 0) +# define thread_offsetof(mem) ((ptrdiff_t) THREAD_SELF + offsetof (struct _pthread_descr_struct, p_##mem)) # else --- glibc-2.3.4/sysdeps/powerpc/powerpc32/dl-machine.h.orig 2003-07-31 06:33:52.000000000 +0000 +++ glibc-2.3.4/sysdeps/powerpc/powerpc32/dl-machine.h 2005-03-20 16:56:21.000000000 +0000 @@ -353,7 +353,7 @@ LOADADDR is the load address of the object; INFO is an array indexed by DT_* of the .dynamic section info. */ -inline void +auto inline void __attribute__ ((always_inline)) elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, const Elf32_Sym *sym, const struct r_found_version *version, void *const reloc_addr_arg) @@ -383,7 +383,7 @@ { # if defined USE_TLS && !defined RTLD_BOOTSTRAP sym_map = RESOLVE_MAP (&sym, version, r_type); - value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value; + value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value; # else value = RESOLVE (&sym, version, r_type); # ifndef RTLD_BOOTSTRAP @@ -455,7 +455,7 @@ } } -static inline void +auto inline void __attribute__ ((always_inline)) elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, void *const reloc_addr_arg) { @@ -463,7 +463,7 @@ *reloc_addr = l_addr + reloc->r_addend; } -static inline void +auto inline void __attribute__ ((always_inline)) elf_machine_lazy_rel (struct link_map *map, Elf32_Addr l_addr, const Elf32_Rela *reloc) { =================================================================== RCS file: /cvs/glibc/libc/nptl/sysdeps/powerpc/tcb-offsets.sym,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- libc/nptl/sysdeps/powerpc/tcb-offsets.sym 2004/12/15 06:07:00 1.5 +++ libc/nptl/sysdeps/powerpc/tcb-offsets.sym 2005/02/14 22:44:12 1.6 @@ -6,7 +6,8 @@ -- Abuse tls.h macros to derive offsets relative to the thread register. # undef __thread_register # define __thread_register ((void *) 0) -# define thread_offsetof(mem) ((void *) &THREAD_SELF->mem - (void *) 0) +# define thread_offsetof(mem) ((ptrdiff_t) THREAD_SELF + offsetof (struct pthread, mem)) + #if TLS_MULTIPLE_THREADS_IN_TCB MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)