tcbhead_t has changed significantly since ABI was published #97

Closed
opened 5 years ago by wschmidt-ibm · 0 comments
wschmidt-ibm commented 5 years ago (Migrated from github.com)

Section 3.7.2, TLS Runtime Handling, shows the "glibc extended TCB," but it is outdated in a number of ways. Change it to reflect sysdeps/powerpc/nptl/tls.h. Currently that reads:

typedef struct
{
  /* Reservation for HWCAP data.  To be accessed by GCC in                      
     __builtin_cpu_supports(), so it is a part of public ABI.  */
  uint64_t hwcap;
  /* Reservation for AT_PLATFORM data.  To be accessed by GCC in                
     __builtin_cpu_is(), so it is a part of public ABI.  Since there            
     are different ABIs for 32 and 64 bit, we put this field in a               
     previously empty padding space for powerpc64.  */
#ifndef __powerpc64__
  /* Padding to maintain alignment.  */
  uint32_t padding;
  uint32_t at_platform;
#endif
  uint32_t __unused;
  /* Reservation for AT_PLATFORM data - powerpc64.  */
#ifdef __powerpc64__
  uint32_t at_platform;
#endif
  /* 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.  */
  uintptr_t ebb_handler;
  uintptr_t ebb_ctx_pointer;
  uintptr_t ebb_reserved1;
  uintptr_t ebb_reserved2;
  uintptr_t pointer_guard;
  uintptr_t stack_guard;
  dtv_t *dtv;
} tcbhead_t;
Section 3.7.2, TLS Runtime Handling, shows the "glibc extended TCB," but it is outdated in a number of ways. Change it to reflect sysdeps/powerpc/nptl/tls.h. Currently that reads: ``` typedef struct { /* Reservation for HWCAP data. To be accessed by GCC in __builtin_cpu_supports(), so it is a part of public ABI. */ uint64_t hwcap; /* Reservation for AT_PLATFORM data. To be accessed by GCC in __builtin_cpu_is(), so it is a part of public ABI. Since there are different ABIs for 32 and 64 bit, we put this field in a previously empty padding space for powerpc64. */ #ifndef __powerpc64__ /* Padding to maintain alignment. */ uint32_t padding; uint32_t at_platform; #endif uint32_t __unused; /* Reservation for AT_PLATFORM data - powerpc64. */ #ifdef __powerpc64__ uint32_t at_platform; #endif /* 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. */ uintptr_t ebb_handler; uintptr_t ebb_ctx_pointer; uintptr_t ebb_reserved1; uintptr_t ebb_reserved2; uintptr_t pointer_guard; uintptr_t stack_guard; dtv_t *dtv; } tcbhead_t; ```
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: systemsoftware/ELFv2-ABI#97
Loading…
There is no content yet.