This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: PowerPC: Add DSO and TAR fields to TLS
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>, "GNU C. Library" <libc-alpha at sourceware dot org>
- Cc: "Steven J. Munroe" <sjmunroe at us dot ibm dot com>
- Date: Thu, 12 Dec 2013 12:34:38 -0500
- Subject: Re: PowerPC: Add DSO and TAR fields to TLS
- Authentication-results: sourceware.org; auth=none
- References: <52A9B0D7 dot 702 at linux dot vnet dot ibm dot com>
On 12/12/2013 07:49 AM, Adhemerval Zanella wrote:
> Hi all,
>
> This patch add three fields in powerpc tcb: one for tar save (ISA 2.07) and
> two for DSO (Dynamic System Optimizer, an IBM product). Tested on PPC32,
> PPC64, PPC64LE. Ok to apply?
Looks good to me as long as nothing else relies on the size of the DTV
and that offsets into the DTV are negative from the thread pointer
such that adding things to the front of the structure is appropriate.
I don't think anything relies on DTV size, and the Power TLS ABI does
indeed use negative offsets from the thread pointer.
Correct me if I'm wrong.
> ---
>
> nptl/ChangeLog:
>
> 2011-12-12 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
>
> * sysdeps/powerpc/tls.h (struct tcbhead_t): Add DSO and TAR fields.
> * nptl/sysdeps/powerpc/tcb-offsets.sym: Likewise.
>
> --
>
> diff --git a/nptl/sysdeps/powerpc/tcb-offsets.sym b/nptl/sysdeps/powerpc/tcb-offsets.sym
> index 8ac133d..eac5b5c 100644
> --- a/nptl/sysdeps/powerpc/tcb-offsets.sym
> +++ b/nptl/sysdeps/powerpc/tcb-offsets.sym
> @@ -15,6 +15,9 @@ MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
> PID thread_offsetof (pid)
> TID thread_offsetof (tid)
> POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
> +TAR_SAVE (offsetof (tcbhead_t, tar_save) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
> +DSO_SLOT1 (offsetof (tcbhead_t, dso_slot1) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
> +DSO_SLOT2 (offsetof (tcbhead_t, dso_slot2) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
> #ifndef __ASSUME_PRIVATE_FUTEX
> PRIVATE_FUTEX_OFFSET thread_offsetof (header.private_futex)
> #endif
> diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h
> index c21c027..31329c7 100644
> --- a/nptl/sysdeps/powerpc/tls.h
> +++ b/nptl/sysdeps/powerpc/tls.h
> @@ -61,6 +61,11 @@ typedef union dtv
> are private. */
> typedef struct
> {
> + /* Reservation for Dynamic System Optimizer ABI. */
> + uintptr_t dso_slot2;
> + uintptr_t dso_slot1;
> + /* Reservation for tar register (ISA 2.07). */
> + uintptr_t tar_save;
> /* GCC split stack support. */
> void *__private_ss;
> /* Reservation for the Event-Based Branching ABI. */
>