1. 13 11月, 2012 6 次提交
  2. 12 11月, 2012 4 次提交
    • R
      debloat src/thread tree but putting lots of junk in one file · c4a35f8c
      Rich Felker 提交于
      POSIX includes mostly-useless attribute-get functions for each
      attribute-set function, presumably out of some object-oriented
      dogmatism. the get functions are not useful with the simple idiomatic
      usage of attributes. there are of course possible valid uses of them
      (like writing wrappers for pthread init functions that perform special
      actions on the presence of certain attributes), but considering how
      tiny these functions are anyway, little is lost by putting them all in
      one file, and some build-time cost and archive-file-size benefits are
      achieved.
      c4a35f8c
    • R
      report support of TPS option in unistd.h and sysconf · 7df42e87
      Rich Felker 提交于
      also update another newish feature in sysconf, stackaddr
      7df42e87
    • R
      add support for thread scheduling (POSIX TPS option) · 1e21e78b
      Rich Felker 提交于
      linux's sched_* syscalls actually implement the TPS (thread
      scheduling) functionality, not the PS (process scheduling)
      functionality which the sched_* functions are supposed to have.
      omitting support for the PS option (and having the sched_* interfaces
      fail with ENOSYS rather than omitting them, since some broken software
      assumes they exist) seems to be the only conforming way to do this on
      linux.
      1e21e78b
    • R
      fix clobber of edx in i386 vsyscall asm · e9b885ee
      Rich Felker 提交于
      this function does not obey the normal calling convention; like a
      syscall instruction, it's expected not to clobber any registers except
      the return value. clobbering edx could break callers that were reusing
      the value cached in edx after the syscall returns.
      e9b885ee
  3. 10 11月, 2012 2 次提交
    • R
      always add memory streams to stdio open file list · dc059f03
      Rich Felker 提交于
      per interpretation for austin group issue #626, fflush(0) and exit()
      must block waiting for a lock if another thread has locked a memory
      stream with flockfile. this adds some otherwise-unnecessary
      synchronization cost to use of memory streams, but there was already a
      synchronization cost calling malloc anyway.
      
      previously the stream was only added to the open file list in
      single-threaded programs, so that upon subsequent call to
      pthread_create, locking could be turned on for the stream.
      dc059f03
    • R
      support ldso path files without final newline · 65465101
      Rich Felker 提交于
      65465101
  4. 09 11月, 2012 5 次提交
    • R
      change ldso path file logic to replace rather than add to search path · 40d5f7eb
      Rich Felker 提交于
      this change was originally intended just to avoid repeated attempts to
      open a nonexistant /etc/ls-musl-$(ARCH).path file, but I realized it
      also prevents the default paths from being searched when such a path
      file exists. despite the potential to break existing usage, I believe
      the new behavior is the right behavior, and it's better to fix it
      sooner rather than later. with the old behavior, it was impossible to
      inhibit search of default paths which might contain musl-incompatible
      libs (or even libs from a different cpu arch, on multi-arch machines).
      40d5f7eb
    • R
      fix "configure --prefix=" and improve path/arg handling in configure · 3d9e3a30
      Rich Felker 提交于
      previously, empty string was treated as "use default". this is
      apparently not compatible with standard configure semantics where an
      empty prefix puts everything under /. the new logic should be a lot
      cleaner and not suffer from such issues.
      3d9e3a30
    • R
      clean up sloppy nested inclusion from pthread_impl.h · efd4d87a
      Rich Felker 提交于
      this mirrors the stdio_impl.h cleanup. one header which is not
      strictly needed, errno.h, is left in pthread_impl.h, because since
      pthread functions return their error codes rather than using errno,
      nearly every single pthread function needs the errno constants.
      
      in a few places, rather than bringing in string.h to use memset, the
      memset was replaced by direct assignment. this seems to generate much
      better code anyway, and makes many functions which were previously
      non-leaf functions into leaf functions (possibly eliminating a great
      deal of bloat on some platforms where non-leaf functions require ugly
      prologue and/or epilogue).
      efd4d87a
    • R
      clean up stdio_impl.h · 835f9f95
      Rich Felker 提交于
      this header evolved to facilitate the extremely lazy practice of
      omitting explicit includes of the necessary headers in individual
      stdio source files; not only was this sloppy, but it also increased
      build time.
      
      now, stdio_impl.h is only including the headers it needs for its own
      use; any further headers needed by source files are included directly
      where needed.
      835f9f95
    • R
      fix dlsym asm for mips · 1e717ea3
      Rich Felker 提交于
      saving the return address from the delay slot is not valid -- by the
      time the instruction executes, the return address has already been
      replaced.
      1e717ea3
  5. 06 11月, 2012 2 次提交
    • R
      improve SOCK_NONBLOCK/SOCK_CLOEXEC fallback code · e8a0b27a
      Rich Felker 提交于
      checking for EINVAL should be sufficient, but qemu user emulation
      returns EPROTONOSUPPORT in some of the failure cases, and it seems
      conceivable that other kernels doing linux-emulation could make the
      same mistake. since DNS lookups and other important code might break
      if the fallback does not get invoked, be extra careful and check for
      either error.
      
      note that it's important NOT to perform the fallback code on other
      errors such as resource-exhaustion cases, since the fallback is not
      atomic and will lead to file-descriptor leaks in multi-threaded
      programs that use exec. the fallback code is only "safe" to run when
      the initial failure is caused by the application's choice of
      arguments, not the system state.
      e8a0b27a
    • R
      fix numerous mips abi constant definition mismatches · 32d6d77e
      Rich Felker 提交于
      32d6d77e
  6. 05 11月, 2012 1 次提交
  7. 02 11月, 2012 3 次提交
  8. 01 11月, 2012 2 次提交
    • R
      b367ab15
    • R
      add dl_iterate_phdr interface · 18c0e02e
      Rich Felker 提交于
      patches by Alex Caudill (npx). the dynamic-linked version is almost
      identical to the final submitted patch; I just added a couple missing
      lines for saving the phdr address when the dynamic linker is invoked
      directly to run a program, and removed a couple to avoid introducing
      another unnecessary type. the static-linked version is based on npx's
      draft. it could use some improvements which are contingent on the
      startup code saving some additional information for later use.
      18c0e02e
  9. 29 10月, 2012 3 次提交
    • R
      system is a cancellation point · 76f28cfc
      Rich Felker 提交于
      ideally, system would also be cancellable while running the external
      command, but I cannot find any way to make that work without either
      leaking zombie processes or introducing behavior that is far outside
      what the standard specifies. glibc handles cancellation by killing the
      child process with SIGKILL, but this could be unsafe in that it could
      leave the data being manipulated by the command in an inconsistent
      state.
      76f28cfc
    • R
      release notes for 0.9.7 · dd762cf6
      Rich Felker 提交于
      dd762cf6
    • R
      fix shmdt syscall calling convention on old archs · 86dd1e7b
      Rich Felker 提交于
      86dd1e7b
  10. 28 10月, 2012 1 次提交
    • R
      separate getc/putc from fgetc/fputc · 8fc7b596
      Rich Felker 提交于
      for conformance, two functions should not have the same address. a
      conforming program could use the addresses of getc and fgetc in ways
      that assume they are distinct. normally i would just use a wrapper,
      but these functions are so small and performance-critical that an
      extra layer of function call could make the one that's a wrapper
      nearly twice as slow, so I'm just duplicating the code instead.
      8fc7b596
  11. 27 10月, 2012 3 次提交
    • R
      update documentation · 3ffb556c
      Rich Felker 提交于
      3ffb556c
    • R
      further pcc fixes in configure · cd31a1fc
      Rich Felker 提交于
      -lpcc only works if -nostdlib is not passed, so it's useless. instead,
      use -print-file-name to look up the full pathname for libpcc.a, and
      check whether that succeeds before trying to link with the result.
      
      also, silence pcc's junk printed on stdout during tests.
      cd31a1fc
    • R
      add support for detecting pcc's compiler runtime · 3d99266b
      Rich Felker 提交于
      in old versions of pcc, the directory containing libpcc.a was not in
      the library path, and other options like -print-file-name may have
      been needed to locate it. however, -print-file-name itself seems to
      have been added around the same time that the directory was added to
      the search path, and moreover, I see no evidence that older versions
      of pcc are capable of building a working musl shared library. thus, it
      seems reasonable to just test whether -lpcc is accepted.
      3d99266b
  12. 26 10月, 2012 2 次提交
    • R
      use explicit visibility to optimize a few hot-path function calls · 607b05ac
      Rich Felker 提交于
      on x86 and some other archs, functions which make function calls which
      might go through a PLT incur a significant overhead cost loading the
      GOT register prior to making the call. this load is utterly useless in
      musl, since all calls are bound at library-creation time using
      -Bsymbolic-functions, but the compiler has no way of knowing this, and
      attempts to set the default visibility to protected have failed due to
      bugs in GCC and binutils.
      
      this commit simply manually assigns hidden/protected visibility, as
      appropriate, to a few internal-use-only functions which have many
      callers, or which have callers that are hot paths like getc/putc. it
      shaves about 5k off the i386 libc.so with -Os. many of the
      improvements are in syscall wrappers, where the benefit is just size
      and performance improvement is unmeasurable noise amid the syscall
      overhead. however, stdio may be measurably faster.
      
      if in the future there are toolchains that can do the same thing
      globally without introducing linking bugs, it might be worth
      considering removing these workarounds.
      607b05ac
    • R
      configure: test not just compiling but linking with -march/-mtune · 80a45458
      Rich Felker 提交于
      pcc wrongly passes any option beginning with -m to the linker, and
      will break at link time if these options were added to CFLAGS. testing
      linking lets us catch this at configure time and skip them.
      80a45458
  13. 25 10月, 2012 3 次提交
    • R
      correct locking in stdio functions that tried to be lock-free · c8cb6bcd
      Rich Felker 提交于
      these functions must behave as if they obtain the lock via flockfile
      to satisfy POSIX requirements. since another thread can provably hold
      the lock when they are called, they must wait to obtain the lock
      before they can return, even if the correct return value could be
      obtained without locking. in the case of fclose and freopen, failure
      to do so could cause correct (albeit obscure) programs to crash or
      otherwise misbehave; in the case of feof, ferror, and fwide, failure
      to obtain the lock could sometimes return incorrect results. in any
      case, having these functions proceed and return while another thread
      held the lock was wrong.
      c8cb6bcd
    • R
      greatly improve freopen behavior · 892cafff
      Rich Felker 提交于
      1. don't open /dev/null just as a basis to copy flags; use shared
      __fmodeflags function to get the right file flags for the mode.
      
      2. handle the case (probably invalid, but whatever) case where the
      original stream's file descriptor was closed; previously, the logic
      re-closed it.
      
      3. accept the "e" mode flag for close-on-exec; update dup3 to fallback
      to using dup2 so we can simply call __dup3 instead of putting fallback
      logic in freopen itself.
      892cafff
    • R
      708c91f4
  14. 23 10月, 2012 1 次提交
  15. 22 10月, 2012 2 次提交