1. 19 6月, 2012 1 次提交
  2. 18 6月, 2012 2 次提交
    • R
      change stdio_ext __freading/__fwriting semantics slightly · deb90c79
      Rich Felker 提交于
      the old behavior was to only consider a stream to be "reading" or
      "writing" if it had buffered, unread/unwritten data. this reportedly
      differs from the traditional behavior of these functions, which is
      essentially to return true as much as possible without creating the
      possibility that both __freading and __fwriting could return true.
      
      gnulib expects __fwriting to return true as soon as a file is opened
      write-only, and possibly expects other cases that depend on the
      traditional behavior. and since these functions exist mostly for
      gnulib (does anything else use them??), they should match the expected
      behavior to avoid even more ugly hacks and workarounds...
      deb90c79
    • R
      3b43d10f
  3. 16 6月, 2012 1 次提交
  4. 15 6月, 2012 1 次提交
  5. 14 6月, 2012 4 次提交
  6. 13 6月, 2012 3 次提交
    • R
      add init_module/delete_module syscall wrappers · 2169265e
      Rich Felker 提交于
      these are not exposed publicly in any header, but the few programs
      that use them (modutils/kmod, etc.) are declaring the functions
      themselves rather than making the syscalls directly, and it doesn't
      really hurt to have them (same as the capset junk).
      2169265e
    • R
      add (currently stubbed due to stubbed strverscmp) versionsort function · fbffcee6
      Rich Felker 提交于
      based on patch by Emil Renner Berthing, with minor changes to dirent.h
      for LFS64 and organization of declarations
      
      this code should work unmodified once a real strverscmp is added, but
      I've been hesitant to add it because the GNU strverscmp behavior is
      harmful in a lot of cases (for instance if you have numeric filenames
      in hex). at some point I plan on trying to design a variant of the
      algorithm that behaves better on a mix of filename styles.
      fbffcee6
    • R
      add deprecated capabilities functions · e361019c
      Rich Felker 提交于
      these were left in glibc for binary compatibility after the public
      part of the interface was removed, and libcap kept using them (with
      its own copy of the header files) rather than just making the syscalls
      directly. might as well add them since they're so small...
      e361019c
  7. 10 6月, 2012 2 次提交
    • R
      6343ac8f
    • R
      add pthread_attr_setstack interface (and get) · 819006a8
      Rich Felker 提交于
      i originally omitted these (optional, per POSIX) interfaces because i
      considered them backwards implementation details. however, someone
      later brought to my attention a fairly legitimate use case: allocating
      thread stacks in memory that's setup for sharing and/or fast transfer
      between CPU and GPU so that the thread can move data to a GPU directly
      from automatic-storage buffers without having to go through additional
      buffer copies.
      
      perhaps there are other situations in which these interfaces are
      useful too.
      819006a8
  8. 08 6月, 2012 7 次提交
  9. 07 6月, 2012 6 次提交
    • R
      check for ld support of -Bsymbolic-functions; disable shared if not avail · 498a100d
      Rich Felker 提交于
      this issue affects the last gpl2 version of binutils, which some
      people are still using out of aversion to gpl3. musl requires
      -Bsymbolic-functions because it's the only way to make a libc.so
      that's able to operate prior to dynamic linking but that still behaves
      correctly with respect to global vars that may be moved to the main
      program via copy relocations.
      498a100d
    • R
    • R
      avoid linking main program in linker tests · 67a0383d
      Rich Felker 提交于
      it's possible that the user has provided a compiler that does not have
      any libc to link to, so linking a main program is a bad idea. instead,
      generate an empty shared library with no dependencies.
      67a0383d
    • R
      make configure try to disable stack protector · 0c5efde8
      Rich Felker 提交于
      in theory we could support stack protector in the libc itself, and
      users wanting to experiment with such usage could add
      -fstack-protector to CFLAGS intentionally. but to avoid breakage in
      the default case, override broken distro-patched gcc that forces stack
      protector on.
      0c5efde8
    • R
      add configure check for gnu linker hash style setting · 08f70a30
      Rich Felker 提交于
      some broken distro-provided toolchains have modified gcc to produce
      only "gnu hash" dynamic hash table by default. as this is unsupported
      by musl, that results in a non-working libc.so. we detect and switch
      this on in configure rather than hard-coding it in the Makefile
      because it's not supported by old binutils versions, but that might
      not even be relevant since old binutils versions already fail from
      -Bsymbolic-functions being missing. at some point I may review whether
      this should just go in the Makefile...
      08f70a30
    • R
      make gcc wrapper rewrite link options rather than just extending them · 6e0ad227
      Rich Felker 提交于
      this is not tested yet, but should work to get rid of unwanted
      --hash-style=gnu hacks present in some distro-patched gcc versions.
      6e0ad227
  10. 06 6月, 2012 2 次提交
    • R
      treat failure of mprotect in map_library as a fatal load failure · f7d15dcc
      Rich Felker 提交于
      the error will propagate up and be printed to the user at program
      start time; at runtime, dlopen will just fail and leave a message for
      dlerror.
      
      previously, if mprotect failed, subsequent attempts to perform
      relocations would crash the program. this was resulting in an
      increasing number of false bug reports on grsec systems where rwx
      permission is not possible in cases where users were wrongly
      attempting to use non-PIC code in shared libraries. supporting that
      usage is in theory possible, but the x86_64 toolchain does not even
      support textrels, and the cost of keeping around the necessary
      information to handle textrels without rwx permissions is
      disproportionate to the benefit (which is essentially just supporting
      broken library setups on grsec machines).
      
      also, i unified the error-out code in map_library now that there are 3
      places from which munmap might have to be called.
      f7d15dcc
    • R
      908bed20
  11. 04 6月, 2012 3 次提交
  12. 03 6月, 2012 8 次提交
    • R
      ensure that abort always works · 2557d0ba
      Rich Felker 提交于
      Per POSIX, "The abort() function shall cause abnormal process
      termination to occur, unless the signal SIGABRT is being caught and
      the signal handler does not return."
      
      If SIGABRT is blocked or if a signal handler is installed and does
      return, abort is still required to cause abnormal program termination.
      We cannot use a_crash() to do this, since a SIGILL handler could also
      be installed (and might even longjmp out of the abort, not expecting
      to be invoked from within abort), nor can we rely on resetting the
      signal handler and re-raising the signal (this has race conditions in
      multi-threaded programs). On the other hand, SIGKILL is a perfectly
      safe, unblockable way to obtain abnormal program termination, and it
      requires no ugly loop-and-retry logic.
      2557d0ba
    • R
      add some ugly aliases for LSB ABI compatibility · 6a4b9472
      Rich Felker 提交于
      for some nonsensical reason, glibc's headers use inline functions that
      redirect some of the standard functions to ugly nonstandard names (and
      likewise for some of their nonstandard functions).
      6a4b9472
    • R
      increase default thread stack size to 80k · 13b3645c
      Rich Felker 提交于
      I've been looking for data that would suggest a good default, and
      since little has shown up, i'm doing this based on the limited data I
      have. the value 80k is chosen to accommodate 64k of application data
      (which happens to be the size of the buffer in git that made it crash
      without a patch to call pthread_attr_setstacksize) plus the max stack
      usage of most libc functions (with a few exceptions like crypt, which
      will be fixed soon to avoid excessive stack usage, and [n]ftw, which
      inherently uses a fair bit in recursive directory searching).
      
      if further evidence emerges suggesting that the default should be
      larger, I'll consider changing it again, but I'd like to avoid it
      getting too large to avoid the issues of large commit charge and rapid
      address space exhaustion on 32-bit machines.
      13b3645c
    • R
      remove implementation-reserved bits when saving signal mask · 40bd1726
      Rich Felker 提交于
      this fix is necessary because a program could be started with some of
      the implementation-reserved signals masked (e.g. due to exec having
      been called from a signal handler, or from a non-musl program) and
      then could obtain an invalid-to-use-later sigset_t as the old/saved
      signal mask.
      40bd1726
    • R
      remove no-longer-needed unblocking of signals in pthread_create · 1e597a3e
      Rich Felker 提交于
      this action is now performed in pthread_self initialization; it must
      be performed there in case the first call to pthread_create is from a
      signal handler, in which case the old signal mask could be restored on
      return from the signal.
      1e597a3e
    • R
      add LSB abi junk for ctype functions · 9372655e
      Rich Felker 提交于
      this should be the last major fix needed to support running
      glibc-linked conforming POSIX programs with musl in place of glibc, as
      long as musl provides the features they need and they don't use
      pthread cancellation (which is implemented as c++ exceptions in glibc,
      and fundamentally incompatible with musl).
      9372655e
    • R
      declare environ in unistd.h when _GNU_SOURCE feature test macro is used · d200bd72
      Rich Felker 提交于
      lots of broken programs expect this, and it's gotten to the point of
      being a troubleshooting FAQ topic. best to just fix it.
      d200bd72
    • R
      use fistpll mnemonic instead of fistpq (more widely supported) on x86_64 too · 19e48c55
      Rich Felker 提交于
      this was fixed previously on i386 but the corresponding code on x86_64
      was missed.
      19e48c55