1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 23 10月, 2012 1 次提交
  8. 22 10月, 2012 4 次提交
  9. 21 10月, 2012 1 次提交
  10. 20 10月, 2012 4 次提交
  11. 19 10月, 2012 10 次提交
  12. 18 10月, 2012 2 次提交
  13. 17 10月, 2012 1 次提交
  14. 16 10月, 2012 3 次提交
    • R
      add memmem function (gnu extension) · c86f2974
      Rich Felker 提交于
      based on strstr. passes gnulib tests and a few quick checks of my own.
      c86f2974
    • R
      microblaze TLS relocation support, completely untested · 21284ec7
      Rich Felker 提交于
      21284ec7
    • R
      add support for TLS variant I, presently needed for arm and mips · 9ec4283b
      Rich Felker 提交于
      despite documentation that makes it sound a lot different, the only
      ABI-constraint difference between TLS variants II and I seems to be
      that variant II stores the initial TLS segment immediately below the
      thread pointer (i.e. the thread pointer points to the end of it) and
      variant I stores the initial TLS segment above the thread pointer,
      requiring the thread descriptor to be stored below. the actual value
      stored in the thread pointer register also tends to have per-arch
      random offsets applied to it for silly micro-optimization purposes.
      
      with these changes applied, TLS should be basically working on all
      supported archs except microblaze. I'm still working on getting the
      necessary information and a working toolchain that can build TLS
      binaries for microblaze, but in theory, static-linked programs with
      TLS and dynamic-linked programs where only the main executable uses
      TLS should already work on microblaze.
      
      alignment constraints have not yet been heavily tested, so it's
      possible that this code does not always align TLS segments correctly
      on archs that need TLS variant I.
      9ec4283b