1. 13 9月, 2018 1 次提交
    • R
      apply hidden visibility to sigreturn code fragments · b6e59cd9
      Rich Felker 提交于
      these were overlooked in the declarations overhaul work because they
      are not properly declared, and the current framework even allows their
      declared types to vary by arch. at some point this should be cleaned
      up, but I'm not sure what the right way would be.
      b6e59cd9
  2. 10 11月, 2015 1 次提交
    • R
      explicitly assemble all arm asm sources as UAL · 4e73d121
      Rich Felker 提交于
      these files are all accepted as legacy arm syntax when producing arm
      code, but legacy syntax cannot be used for producing thumb2 with
      access to the full ISA. even after switching to UAL, some asm source
      files contain instructions which are not valid in thumb mode, so these
      will need to be addressed separately.
      4e73d121
  3. 18 4月, 2015 1 次提交
    • R
      redesign sigsetjmp so that signal mask is restored after longjmp · 583e5512
      Rich Felker 提交于
      the conventional way to implement sigsetjmp is to save the signal mask
      then tail-call to setjmp; siglongjmp then restores the signal mask and
      calls longjmp. the problem with this approach is that a signal already
      pending, or arriving between unmasking of signals and restoration of
      the saved stack pointer, will have its signal handler run on the stack
      that was active before siglongjmp was called. this can lead to
      unbounded stack usage when siglongjmp is used to leave a signal
      handler.
      
      in the new design, sigsetjmp saves its own return address inside the
      extended part of the sigjmp_buf (outside the __jmp_buf part used by
      setjmp) then calls setjmp to save a jmp_buf inside its own execution.
      it then tail-calls to __sigsetjmp_tail, which uses the return value of
      setjmp to determine whether to save the current signal mask or restore
      a previously-saved mask.
      
      as an added bonus, this design makes it so that siglongjmp and longjmp
      are identical. this is useful because the __longjmp_chk function we
      need to add for ABI-compatibility assumes siglongjmp and longjmp are
      the same, but for different reasons -- it was designed assuming either
      can access a flag just past the __jmp_buf indicating whether the
      signal masked was saved, and act on that flag. however, early versions
      of musl did not have space past the __jmp_buf for the non-sigjmp_buf
      version of jmp_buf, so our setjmp cannot store such a flag without
      risking clobbering memory on (very) old binaries.
      583e5512
  4. 03 4月, 2014 1 次提交
  5. 03 7月, 2012 1 次提交
    • R
      fix sigsetjmp on arm (needs asm) · e6129e6d
      Rich Felker 提交于
      no idea why gcc refuses to compile the C code to use a tail call, but
      it's best to use asm anyway so we don't have to rely on the quality of
      the compiler's optimizations for correct code.
      e6129e6d
  6. 19 9月, 2011 1 次提交
    • R
      initial commit of the arm port · d960d4f2
      Rich Felker 提交于
      this port assumes eabi calling conventions, eabi linux syscall
      convention, and presence of the kernel helpers at 0xffff0f?0 needed
      for threads support. otherwise it makes very few assumptions, and the
      code should work even on armv4 without thumb support, as well as on
      systems with thumb interworking. the bits headers declare this a
      little endian system, but as far as i can tell the code should work
      equally well on big endian.
      
      some small details are probably broken; so far, testing has been
      limited to qemu/aboriginal linux.
      d960d4f2