1. 30 7月, 2013 1 次提交
    • T
      use separate sigaction buffers for old and new data · 48748143
      Timo Teräs 提交于
      in signal() it is needed since __sigaction uses restrict in parameters
      and sharing the buffer is technically an aliasing error. do the same
      for the syscall, as at least qemu-user does not handle it properly.
      48748143
  2. 29 7月, 2013 1 次提交
  3. 28 7月, 2013 5 次提交
  4. 27 7月, 2013 6 次提交
  5. 26 7月, 2013 2 次提交
    • R
    • R
      new mostly-C crt1 implementation · c5e34dab
      Rich Felker 提交于
      the only immediate effect of this commit is enabling PIE support on
      some archs that did not previously have any Scrt1.s, since the
      existing asm files for crt1 override this C code. so some of the
      crt_arch.h files committed are only there for the sake of documenting
      what their archs "would do" if they used the new C-based crt1.
      
      the expectation is that new archs should use this new system rather
      than using heavy asm for crt1. aside from being easier and less
      error-prone, it also ensures that PIE support is available immediately
      (since Scrt1.o is generated from the same C source, using -fPIC)
      rather than having to be added as an afterthought in the porting
      process.
      c5e34dab
  6. 25 7月, 2013 19 次提交
  7. 24 7月, 2013 5 次提交
    • R
      support STB_GNU_UNIQUE symbol bindings in dynamic linker · e152ee97
      Rich Felker 提交于
      these are needed for some C++ library binaries including most builds
      of libstdc++. I'm not entirely clear on the rationale. this patch does
      not implement any special semantics for them, but as far as I can
      tell, no special treatment is needed in correctly-linked programs;
      this binding seems to exist only for catching incorrectly-linked
      programs.
      e152ee97
    • R
      move the dynamic linker's jmp_buf from static to automatic storage · 17276be3
      Rich Felker 提交于
      this more than compensates for the size increase of jmp_buf, and
      greatly reduces bss/data size on archs with huge jmp_buf.
      17276be3
    • R
      change jmp_buf to share an underlying type and struct tag with sigjmp_buf · 9693501c
      Rich Felker 提交于
      this is necessary to meet the C++ ABI target. alternatives were
      considered to avoid the size increase for non-sig jmp_buf objects, but
      they seemed to have worse properties. moreover, the relative size
      increase is only extreme on x86[_64]; one way of interpreting this is
      that, if the size increase from this patch makes jmp_buf use too much
      memory, then the program was already using too much memory when built
      for non-x86 archs.
      9693501c
    • R
      remove redundant check in memalign · 4a30ba5c
      Rich Felker 提交于
      the case where mem was already aligned is handled earlier in the
      function now.
      4a30ba5c
    • R
      fix heap corruption bug in memalign · 70a92bc9
      Rich Felker 提交于
      this bug was caught by the new footer-corruption check in realloc and
      free.
      
      if the block returned by malloc was already aligned to the desired
      alignment, memalign's logic to split off the misaligned head was
      incorrect; rather than writing to a point inside the allocated block,
      it was overwriting the footer of the previous block on the heap with
      the value 1 (length 0 plus an in-use flag).
      
      fortunately, the impact of this bug was fairly low. (this is probably
      why it was not caught sooner.) due to the way the heap works, malloc
      will never return a block whose previous block is free. (doing so would
      be harmful because it would increase fragmentation with no benefit.)
      the footer is actually not needed for in-use blocks, except that its
      in-use bit needs to remain set so that it does not get merged with
      free blocks, so there was no harm in it being set to 1 instead of the
      correct value.
      
      however, there is one case where this bug could have had an impact: in
      multi-threaded programs, if another thread freed the previous block
      after memalign's call to malloc returned, but before memalign
      overwrote the previous block's footer, the resulting block in the free
      list could be left in a corrupt state. I have not analyzed the impact
      of this bad state and whether it could lead to more serious
      malfunction.
      70a92bc9
  8. 23 7月, 2013 1 次提交
    • R
      enhance build process to allow selective -O3 optimization · a80847d8
      Rich Felker 提交于
      the motivation for this patch is that the vast majority of libc is
      code that does not benefit at all from optimizations, but that certain
      components like string/memory operations can be major performance
      bottlenecks.
      
      at the same time, the old -falign-*=1 options are removed, since they
      were only beneficial for avoiding bloat when global -O3 was used, and
      in that case, they may have prevented some of the performance gains.
      
      to be the most useful, this patch will need further tuning. in
      particular, research is needed to determine which components should be
      built with -O3 by default, and it may be desirable to remove the
      hard-coded -O3 and instead allow more customization of the
      optimization level used for selected modules.
      a80847d8
反馈
建议
客服 返回
顶部