1. 20 6月, 2018 7 次提交
    • R
      work around broken kernel struct ipc_perm on some big endian archs · 0cd2be23
      Rich Felker 提交于
      the mode member of struct ipc_perm is specified by POSIX to have type
      mode_t, which is uniformly defined as unsigned int. however, Linux
      defines it with type __kernel_mode_t, and defines __kernel_mode_t as
      unsigned short on some archs. since there is a subsequent padding
      field, treating it as a 32-bit unsigned int works on little endian
      archs, but the order is backwards on big endian archs with the
      erroneous definition.
      
      since multiple archs are affected, remedy the situation with fixup
      code in the affected functions (shmctl, semctl, and msgctl) rather
      than repeating the same shims in syscall_arch.h for every affected
      arch.
      0cd2be23
    • S
      s390x: add kexec_file_load syscall number from linux v4.17 · 7ea235b1
      Szabolcs Nagy 提交于
      new in linux commit 71406883fd35794d573b3085433c41d0a3bf6c21
      7ea235b1
    • S
      mips: add HWCAP_ flags from linux v4.17 · 1177f61d
      Szabolcs Nagy 提交于
      new in linux commit 256211f2b0b251e532d1899b115e374feb16fa7a
      1177f61d
    • S
      aarch64: add HWCAP_ flags from linux v4.17 · f3b6690a
      Szabolcs Nagy 提交于
      hwcaps for armv8.4, new in linux commit
      7206dc93a58fb76421c4411eefa3c003337bcb2d
      f3b6690a
    • S
      powerpc: add pkey syscall numbers from linux v4.16 · 90ac71d8
      Szabolcs Nagy 提交于
      add pkey_mprotect, pkey_alloc, pkey_free syscall numbers,
      new in linux commits 3350eb2ea127978319ced883523d828046af4045
      and 9499ec1b5e82321829e1c1510bcc37edc20b6f38
      90ac71d8
    • S
      aarch64: add HWCAP_ASIMDFHM from linux v4.16 · a697a1c9
      Szabolcs Nagy 提交于
      armv8.4 fp mul instructions.
      added in commit 3b3b681097fae73b7f5dcdd42db6cfdf32943d4c
      a697a1c9
    • R
      add m68k port · f81e44a0
      Rich Felker 提交于
      three ABIs are supported: the default with 68881 80-bit fpu format and
      results returned in floating point registers, softfloat-only with the
      same format, and coldfire fpu with IEEE single/double only. only the
      first is tested at all, and only under qemu which has fpu emulation
      bugs.
      
      basic functionality smoke tests have been performed for the most
      common arch-specific breakage via libc-test and qemu user-level
      emulation. some sysvipc failures remain, but are shared with other big
      endian archs and will be fixed separately.
      f81e44a0
  2. 03 6月, 2018 1 次提交
    • S
      fix TLS layout of TLS variant I when there is a gap above TP · 610c5a85
      Szabolcs Nagy 提交于
      In TLS variant I the TLS is above TP (or above a fixed offset from TP)
      but on some targets there is a reserved gap above TP before TLS starts.
      
      This matters for the local-exec tls access model when the offsets of
      TLS variables from the TP are hard coded by the linker into the
      executable, so the libc must compute these offsets the same way as the
      linker.  The tls offset of the main module has to be
      
      	alignup(GAP_ABOVE_TP, main_tls_align).
      
      If there is no TLS in the main module then the gap can be ignored
      since musl does not use it and the tls access models of shared
      libraries are not affected.
      
      The previous setup only worked if (tls_align & -GAP_ABOVE_TP) == 0
      (i.e. TLS did not require large alignment) because the gap was
      treated as a fixed offset from TP.  Now the TP points at the end
      of the pthread struct (which is aligned) and there is a gap above
      it (which may also need alignment).
      
      The fix required changing TP_ADJ and __pthread_self on affected
      targets (aarch64, arm and sh) and in the tlsdesc asm the offset to
      access the dtv changed too.
      610c5a85
  3. 02 5月, 2018 1 次提交
    • R
      work around arm gcc's rejection of r7 asm constraints in thumb mode · e3c682ab
      Rich Felker 提交于
      in thumb mode, r7 is the ABI frame pointer register, and unless frame
      pointer is disabled, gcc insists on treating it as a fixed register,
      refusing to spill it to satisfy constraints. unfortunately, r7 is also
      used in the syscall ABI for passing the syscall number.
      
      up til now we just treated this as a requirement to disable frame
      pointer when generating code as thumb, but it turns out gcc forcibly
      enables frame pointer, and the fixed register constraint that goes
      with it, for functions which contain VLAs. this produces an
      unacceptable arch-specific constraint that (non-arm-specific) source
      files making syscalls cannot use VLAs.
      
      as a workaround, avoid r7 register constraints when producing thumb
      code and instead save/restore r7 in a temp register as part of the asm
      block. at some point we may want/need to support armv6-m/thumb1, so
      the asm has been tweaked to be thumb1-compatible while also
      near-optimal for thumb2: it allows the temp and/or syscall number to
      be in high registers (necessary since r0-r5 may all be used for
      syscalll args) and in thumb2 mode allows the syscall number to be an
      8-bit immediate.
      e3c682ab
  4. 20 4月, 2018 4 次提交
  5. 11 3月, 2018 3 次提交
  6. 23 2月, 2018 8 次提交
  7. 01 2月, 2018 1 次提交
  8. 15 12月, 2017 1 次提交
  9. 06 11月, 2017 11 次提交
  10. 25 10月, 2017 1 次提交
    • R
      fix build regression on ARM for ISA levels less than v5 · 1b9406b0
      Rich Felker 提交于
      commit 06fbefd1 (first included in
      release 1.1.17) introduced this regression.
      
      patch by Adrian Bunk. it fixes the regression in all cases, but
      spuriously prevents use of the clz instruction on very old compiler
      versions that don't define __ARM_ARCH. this may be fixed in a more
      general way at some point in the future. it also omits thumb1 logic
      since building as thumb1 code is currently not supported.
      1b9406b0
  11. 12 9月, 2017 1 次提交
  12. 07 9月, 2017 1 次提交
    • S
      make syscall.h consistent with linux · 822dddfb
      Szabolcs Nagy 提交于
      most of the found naming differences don't matter to musl, because
      internally it unifies the syscall names that vary across targets,
      but for external code the names should match the kernel uapi.
      
      aarch64:
      	__NR_fstatat is called __NR_newfstatat in linux.
      	__NR_or1k_atomic got mistakenly copied from or1k.
      arm:
      	__NR_arm_sync_file_range is an alias for __NR_sync_file_range2
      	__NR_fadvise64_64 is called __NR_arm_fadvise64_64 in linux,
      	the old non-arm name is kept too, it should not cause issues.
      	(powerpc has similar nonstandard fadvise and it uses the
      	normal name.)
      i386:
      	__NR_madvise1 was removed from linux in commit
      	303395ac3bf3e2cb488435537d416bc840438fcb 2011-11-11
      microblaze:
      	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite
      	had different name in linux.
      mips:
      	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite, __NR_select
      	had different name in linux.
      mipsn32:
      	__NR_fstatat is called __NR_newfstatat in linux.
      or1k:
      	__NR__llseek is called __NR_llseek in linux.
      	the old name is kept too because that's the name musl uses
      	internally.
      powerpc:
      	__NR_{get,set}res{gid,uid}32 was never present in powerpc linux.
      	__NR_timerfd was briefly defined in linux but then got renamed.
      822dddfb