Port Status

This page lists issues for which some ports need updating to take account of global changes to glibc or features initially implemented only for some ports. Each issue should list the ports for which it's relevant. When making a change needing port updates, please add details to this page. When fixing an issue for a port, please remove the port from the list of those to which the issue applies (and remove the issue from the page if it was the last port affected).

This is in addition to any port-specific issues that may be filed in Bugzilla, or that may show up through testsuite failures (it's generally a good idea to file such issues in Bugzilla, if they appear to indicate port bugs and you aren't immediately fixing them).

Generally, libm-test-ulps should be regenerated from scratch for each architecture for each release, but this is not mentioned on this page.

ABI test baselines

Needed for: Hurd.

ABI test baselines should be checked against binaries of as many past releases as possible rather than presuming no ABI bugs have crept in while the ABI was not being tested.

c++-types.data

Needed for: Hurd.

bits/mman.h using mman-linux.h

Needed for: hppa.

For GNU/Linux, bits/mman.h should use bits/mman-linux.h to define architecture-independent values and only define things itself where architecture-dependent (if needed, make more definitions in bits/mman-linux.h support the values being architecture-specific). For hppa, doing this should fix the missing definitions of MADV_HUGEPAGE, MADV_NOHUGEPAGE, MADV_DONTDUMP, MADV_DODUMP and MADV_HWPOISON. This isn't straightforward though because hppa has custom values for more defines than other arches.

Handle ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA

Needed for: alpha hppa ia64 m68k microblaze mips powerpc s390 sh sparc tile. See candidate MIPS patch (seems to require binutils changes).

Handle ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA in elf_machine_type_class and define DL_EXTERN_PROTECTED_DATA, or establish a reason why this is not required for the given architecture. Note that the tests elf/tst-protected1a and elf/tst-protected1b may or may not run at all depending on the results of a configure test on linker support, and binutils (and possibly GCC) fixes may be needed for them to pass as well as glibc fixes.

Remove unnecessary soft-fp directory layers

Needed for: aarch64 alpha powerpc sh sparc.

sysdeps subdirectories sysdeps/$arch/soft-fp should be merged into sysdeps/$arch. See message.

Syscall cancellation handling (NOT UPSTREAM)

Needed for: all architectures.

The new cancellation syscall wrapper for GLIBC will require port adjustments in the call function sequence:

1. Write a new syscall implementation at sysdeps/unix/sysv/linux/<arch>/syscall_cancel.S that basically do:

long int __syscall_cancel_arch (volatile unsigned int *cancelhandling,
  __syscall_arg_t nr, __syscall_arg_t arg1, __syscall_arg_t arg2, 
  __syscall_arg_t arg3, __syscall_arg_t arg4, __syscall_arg_t arg5,
  __syscall_arg_t arg6)
{
  if (*cancelhandling & CANCELED_BITMASK)
    __syscall_do_cancel()

  INTERNAL_SYSCALL_DECL (err);
  result = INTERNAL_SYSCALL_NCS (nr, err, 6, a1, a2, a3, a4, a5, a6);
  if (INTERNAL_SYSCALL_ERROR_P (result, err))
    return -INTERNAL_SYSCALL_ERRNO (result, err);
  return result;
}

2. Adjust sysdeps/unix/sysv/linux/<arch>/sysdep-cancel.h to make cancellable syscalls to call syscall_cancel instead of *_{enable,disable}_asynccancel.

3. Create a function to get current IP address based on ucontext_t:

static inline
long int __pthread_get_ip (const struct ucontext *uc)
{
  // TODO: return current program counter based on uc.
}

4. Define both SYSCALL_CANCEL_ERROR(__val) and SYSCALL_CANCEL_ERRNO(__val) macros.

5. Make INTERNAL_SYSCALL_NCS accept 6 argument syscall.

Issues specific to hppa

The following issues are ones for which only hppa has not been updated.

None: PortStatus (last edited 2016-01-04 18:20:48 by MikeFrysinger)