Submitted By: Joe Ciccone Date: 2006-11-30 Initial Package Version: 2.5 Rediffed against 2.6 by Joe Ciccone Upstream Status: In CVS Origin: http://lists.parisc-linux.org/pipermail/parisc-linux/2006-July/029549.html Description: Adds the TLS reloc numbers to elf.h Works around a bug in the data initialization. Adds a missing macro. diff -Naur glibc-2.6.orig/elf/elf.h glibc-2.6/elf/elf.h --- glibc-2.6.orig/elf/elf.h 2007-07-04 21:13:57.000000000 -0400 +++ glibc-2.6/elf/elf.h 2007-07-04 21:14:25.000000000 -0400 @@ -1710,6 +1710,8 @@ #define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ #define R_PARISC_FPTR64 64 /* 64 bits function address. */ #define R_PARISC_PLABEL32 65 /* 32 bits function address. */ +#define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address */ +#define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address */ #define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ #define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ #define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ @@ -1770,6 +1772,29 @@ #define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ #define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ #define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ + +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 /* GD 21-bit left */ +#define R_PARISC_TLS_GD14R 235 /* GD 14-bit right */ +#define R_PARISC_TLS_GDCALL 236 /* GD call to __t_g_a */ +#define R_PARISC_TLS_LDM21L 237 /* LD module 21-bit left */ +#define R_PARISC_TLS_LDM14R 238 /* LD module 14-bit right */ +#define R_PARISC_TLS_LDMCALL 239 /* LD module call to __t_g_a */ +#define R_PARISC_TLS_LDO21L 240 /* LD offset 21-bit left */ +#define R_PARISC_TLS_LDO14R 241 /* LD offset 14-bit right */ +#define R_PARISC_TLS_DTPMOD32 242 /* DTP module 32-bit */ +#define R_PARISC_TLS_DTPMOD64 243 /* DTP module 64-bit */ +#define R_PARISC_TLS_DTPOFF32 244 /* DTP offset 32-bit */ +#define R_PARISC_TLS_DTPOFF64 245 /* DTP offset 32-bit */ + +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 + #define R_PARISC_HIRESERVE 255 /* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ diff -Naur glibc-2.6.orig/elf/rtld.c glibc-2.6/elf/rtld.c --- glibc-2.6.orig/elf/rtld.c 2007-07-04 21:13:57.000000000 -0400 +++ glibc-2.6/elf/rtld.c 2007-07-04 21:14:25.000000000 -0400 @@ -379,14 +379,14 @@ know it is available. We do not have to clear the memory if we do not have to use the temporary bootstrap_map. Global variables are initialized to zero by default. */ -#ifndef DONT_USE_BOOTSTRAP_MAP +#if !defined DONT_USE_BOOTSTRAP_MAP # ifdef HAVE_BUILTIN_MEMSET __builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info)); # else - for (size_t cnt = 0; - cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]); - ++cnt) - bootstrap_map.l_info[cnt] = 0; + /* Clear the whole bootstrap_map structure */ + for (char *cnt = (char *)&(bootstrap_map); + cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map)); + *cnt++ = '\0'); # endif # if USE___THREAD bootstrap_map.l_tls_modid = 0; diff -Naur glibc-2.6.orig/sysdeps/unix/sysv/linux/getcwd.c glibc-2.6/sysdeps/unix/sysv/linux/getcwd.c --- glibc-2.6.orig/sysdeps/unix/sysv/linux/getcwd.c 2007-07-04 21:13:56.000000000 -0400 +++ glibc-2.6/sysdeps/unix/sysv/linux/getcwd.c 2007-07-04 21:14:25.000000000 -0400 @@ -31,6 +31,9 @@ #include +#ifndef MAX +# define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif /* If we compile the file for use in ld.so we don't need the feature that getcwd() allocates the buffers itself. */