patches/uClibc/0.9.32/160-fix-TLS-DTPREL-TPREL-macros.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Nov 13 17:48:17 2011 +0100 (2011-11-13)
changeset 2744 d77d04661cd9
permissions -rw-r--r--
configure: add support for helper script to compute version string

Some projects are using (or planning to use) crosstool-NG, and are storing
it in their VCS, which might not be Mercurial. At the same time, those
projects may want to track development snapshots versions the way we do
with the Hg identity string (hg id).

Provide a way for these project to do so, without having to patch
./configure, and maintain that patch over-and-over again.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 ldso/mips: workaround for missing TLS macros in elfinterpret.c
     2 
     3 These macros declarations are missing, so gcc believes the code is calling
     4 a function, so any later linking will fail.
     5 
     6 Work this around by copying the mcaros from:
     7    libpthread/nptl/sysdeps/mips/dl-tls.h
     8 
     9 We can't include the header because of incompatible symbol declarations,
    10 so we just copy the macros for now.
    11 
    12 ---->  THIS IS A DIRTY HACK!  <----
    13 
    14 Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
    15 
    16 diff -durN uClibc-0.9.32.orig/ldso/ldso/mips/elfinterp.c uClibc-0.9.32/ldso/ldso/mips/elfinterp.c
    17 --- uClibc-0.9.32.orig/ldso/ldso/mips/elfinterp.c	2011-06-08 21:35:20.000000000 +0200
    18 +++ uClibc-0.9.32/ldso/ldso/mips/elfinterp.c	2011-09-12 14:02:37.553628824 +0200
    19 @@ -34,6 +34,21 @@
    20  
    21  #define OFFSET_GP_GOT 0x7ff0
    22  
    23 +/* The thread pointer points 0x7000 past the first static TLS block.  */
    24 +#define TLS_TP_OFFSET           0x7000
    25 +
    26 +/* Dynamic thread vector pointers point 0x8000 past the start of each
    27 + *    TLS block.  */
    28 +#define TLS_DTV_OFFSET          0x8000
    29 +
    30 +/* Compute the value for a GOTTPREL reloc.  */
    31 +#define TLS_TPREL_VALUE(sym_map, sym_val) \
    32 +  ((sym_map)->l_tls_offset + sym_val - TLS_TP_OFFSET)
    33 +
    34 +/* Compute the value for a DTPREL reloc.  */
    35 +#define TLS_DTPREL_VALUE(sym_val) \
    36 +  (sym_val - TLS_DTV_OFFSET)
    37 +
    38  unsigned long __dl_runtime_resolve(unsigned long sym_index,
    39  	unsigned long old_gpreg)
    40  {