1. 02 5月, 2015 1 次提交
    • R
      fix crash in x32 sigsetjmp · 551c1d7a
      Rich Felker 提交于
      the 64-bit push reads not only the 32-bit return address but also the
      first 32 signal mask bits. if any were nonzero, the return address
      obtained will be invalid.
      
      at some point storage of the return address should probably be moved
      to follow the saved mask so that there's plenty room and the same code
      can be used on x32 and regular x86_64, but for now I want a fix that
      does not risk breaking x86_64, and this simple re-zeroing works.
      551c1d7a
  2. 19 4月, 2015 1 次提交
  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. 23 2月, 2014 1 次提交
  6. 22 4月, 2013 1 次提交
  7. 05 5月, 2012 1 次提交
    • R
      update license of njk contributed code (x86_64 asm) · 8cfbc8be
      Rich Felker 提交于
      these changes are based on the following communication via email:
      
      "I hereby grant that all of the code I have contributed to musl on or
      before April 23, 2012 may be licensed under the terms of the following
      MIT license:
      
      Copyright (c) 2011-2012 Nicholas J. Kain
      
      Permission is hereby granted, free of charge, to any person obtaining
      a copy of this software and associated documentation files (the
      "Software"), to deal in the Software without restriction, including
      without limitation the rights to use, copy, modify, merge, publish,
      distribute, sublicense, and/or sell copies of the Software, and to
      permit persons to whom the Software is furnished to do so, subject to
      the following conditions:
      
      The above copyright notice and this permission notice shall be
      included in all copies or substantial portions of the Software.
      
      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
      IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
      CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
      TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
      SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
      8cfbc8be
  8. 15 6月, 2011 1 次提交
  9. 08 4月, 2011 1 次提交
  10. 15 2月, 2011 1 次提交