1. 21 4月, 2015 1 次提交
    • R
      fix regression in configure script with new visibility option · 60ed988f
      Rich Felker 提交于
      commit de2b67f8 introduced a
      regression by adding a -include option to CFLAGS_AUTO which did not
      work without additional -I options. this broke subsequent trycppif
      tests and caused x86_64 to be misdetected as x32, among other issues.
      simply using the full relative pathname to vis.h rather than -I is the
      cleanest way to fix the problem.
      60ed988f
  2. 20 4月, 2015 1 次提交
    • R
      add optional global visibility override · de2b67f8
      Rich Felker 提交于
      this is implemented via the build system and does not affect source
      files. the idea is to use protected or hidden visibility to prevent
      the compiler from pessimizing function calls within a shared (or
      position-independent static) libc in the form of overhead setting up
      for a call through the PLT. the ld-time symbol binding via the
      -Bsymbolic-functions option already optimized out the PLT itself, but
      not the code in the caller needed to support a call through the PLT.
      on some archs this overhead can be substantial; on others it's
      trivial.
      de2b67f8
  3. 14 4月, 2015 1 次提交
    • R
      allow libc itself to be built with stack protector enabled · 1ef849c6
      Rich Felker 提交于
      this was already essentially possible as a result of the previous
      commits changing the dynamic linker/thread pointer bootstrap process.
      this commit mainly adds build system infrastructure:
      
      configure no longer attempts to disable stack protector. instead it
      simply determines how so the makefile can disable stack protector for
      a few translation units used during early startup.
      
      stack protector is also disabled for memcpy and memset since compilers
      (incorrectly) generate calls to them on some archs to implement
      struct initialization and assignment, and such calls may creep into
      early initialization.
      
      no explicit attempt to enable stack protector is made by configure at
      this time; any stack protector option supported by the compiler can be
      passed to configure in CFLAGS, and if the compiler uses stack
      protector by default, this default is respected.
      1ef849c6
  4. 12 3月, 2015 1 次提交
    • S
      add aarch64 port · 01ef3dd9
      Szabolcs Nagy 提交于
      This adds complete aarch64 target support including bigendian subarch.
      
      Some of the long double math functions are known to be broken otherwise
      interfaces should be fully functional, but at this point consider this
      port experimental.
      
      Initial work on this port was done by Sireesh Tripurari and Kevin Bortis.
      01ef3dd9
  5. 31 1月, 2015 1 次提交
  6. 19 7月, 2014 1 次提交
    • S
      add or1k (OpenRISC 1000) architecture port · 200d1547
      Stefan Kristiansson 提交于
      With the exception of a fenv implementation, the port is fully featured.
      The port has been tested in or1ksim, the golden reference functional
      simulator for OpenRISC 1000.
      It passes all libc-test tests (except the math tests that
      requires a fenv implementation).
      
      The port assumes an or1k implementation that has support for
      atomic instructions (l.lwa/l.swa).
      
      Although it passes all the libc-test tests, the port is still
      in an experimental state, and has yet experienced very little
      'real-world' use.
      200d1547
  7. 17 7月, 2014 1 次提交
    • R
      work around constant folding bug 61144 in gcc 4.9.0 and 4.9.1 · a6adb2bc
      Rich Felker 提交于
      previously we detected this bug in configure and issued advice for a
      workaround, but this turned out not to work. since then gcc 4.9.0 has
      appeared in several distributions, and now 4.9.1 has been released
      without a fix despite this being a wrong code generation bug which is
      supposed to be a release-blocker, per gcc policy.
      
      since the scope of the bug seems to affect only data objects (rather
      than functions) whose definitions are overridable, and there are only
      a very small number of these in musl, I am just changing them from
      const to volatile for the time being. simply removing the const would
      be sufficient to make gcc 4.9.1 work (the non-const case was
      inadvertently fixed as part of another change in gcc), and this would
      also be sufficient with 4.9.0 if we forced -O0 on the affected files
      or on the whole build. however it's cleaner to just remove all the
      broken compiler detection and use volatile, which will ensure that
      they are never constant-folded. the quality of a non-broken compiler's
      output should not be affected except for the fact that these objects
      are no longer const and thus possibly add a few bytes to data/bss.
      
      this change can be reconsidered and possibly reverted at some point in
      the future when the broken gcc versions are no longer relevant.
      a6adb2bc
  8. 21 6月, 2014 1 次提交
  9. 11 6月, 2014 1 次提交
    • R
      fail configure on --enable-shared if -Bsymbolic-functions doesn't work · d79b2778
      Rich Felker 提交于
      previously, a warning was issued in this case no matter what, even if
      --disable-shared was used. now, the default for --enable-shared is
      changed from "yes" to "auto", and the warning is issued by default,
      but becomes an error if --enable-shared is used, and the test is
      suppressed completely if --disable-shared is used.
      d79b2778
  10. 21 5月, 2014 1 次提交
  11. 19 5月, 2014 1 次提交
    • R
      add configure check for broken gcc 4.9.0 and possibly other versions · 9ca4dae5
      Rich Felker 提交于
      this is gcc bug #61144. the broken compiler is detected, but the user
      must manually work around it. this is partly to avoid complex logic
      for adding workaround CFLAGS and attempting to recheck with them, and
      partly for the sake of letting the user know the compiler is broken
      (since the workaround will result in less-efficient code production).
      
      some refactoring was also needed to move the check for gcc outside of
      the check for whether to build the compiler wrapper.
      9ca4dae5
  12. 13 5月, 2014 1 次提交
    • R
      add configure check for working compiler · 8945667f
      Rich Felker 提交于
      without this, broken choices of CC/CPPFLAGS/CFLAGS don't show up until
      late in the configure process where they are confusingly reported as a
      different failure such as incorrect long double type.
      8945667f
  13. 28 4月, 2014 1 次提交
    • B
      fix superh nofpu check on old gcc versions · 23d64182
      Bobby Bingham 提交于
      As far as gcc3 knows, sh4 is the only processor version that can have an
      FPU, so it indicates the FPU's presence by defining __SH4__.  This is not
      defined if there is no FPU, even if the processor really is an SH4.
      
      Starting with gcc4, there is support for the sh2a processor, which has an
      FPU but is not an SH4.  gcc4 therefore additionally defines __SH_FPU_ANY__
      when there is an FPU, but still doesn't define __SH4__ for an FPU-less sh4.
      
      Therefore, to support all gcc versions, we must look at both preprocessor
      symbols.
      23d64182
  14. 20 3月, 2014 1 次提交
  15. 18 3月, 2014 1 次提交
    • R
      make configure accept alternate gcc tuples for x32 · f162c064
      Rich Felker 提交于
      the previous pattern required "x32" to be used as the second field of
      the gcc tuple, which is usually reserved for vendor use and not
      appropriate as an ABI specifier. with this change, putting "x32" at
      the end of the tuple, the way ABI specifiers are normally done, is
      also permitted.
      f162c064
  16. 01 3月, 2014 1 次提交
    • R
      improve configure's target arch matching · 0b8f0c57
      Rich Felker 提交于
      most notably, it was failing to match sh4-*, etc., but in general the
      explicit matching of hyphens for some archs was problematic because it
      failed to accept simply the musl-style arch name (without a gcc-style
      tuple) as an input. the original motivation of matching hyphens was to
      prevent incorrectly identifying a 64-bit arch as the corresponding
      32-bit arch (e.g. mips* matching mips64) but this is easily fixed by
      simply checking (and for now, rejecting as unsupported) the relevant
      64-bit archs.
      0b8f0c57
  17. 28 2月, 2014 5 次提交
  18. 25 2月, 2014 1 次提交
    • S
      mips: add mips-sf subarch support (soft-float) · e5bb165b
      Szabolcs Nagy 提交于
      Userspace emulated floating-point (gcc -msoft-float) is not compatible
      with the default mips abi (assumes an FPU or in kernel emulation of it).
      Soft vs hard float abi should not be mixed, __mips_soft_float is checked
      in musl's configure script and there is no runtime check. The -sf subarch
      does not save/restore floating-point registers in setjmp/longjmp and only
      provides dummy fenv implementation.
      e5bb165b
  19. 24 2月, 2014 1 次提交
  20. 23 2月, 2014 2 次提交
    • R
      configure: suppress bogus pointer-int cast warnings · adbeefbe
      rofl0r 提交于
      adbeefbe
    • R
      configure: recognize x86_64-x32 and x32 · 3e4b2cdc
      rofl0r 提交于
      x32 is the internal arch name, but glibc uses x86_64-x32.
      there doesn't exist a specific triple for x32 in gcc and binutils.
      you're supposed to build your compiler for x86_64 and configure
      it with multilib support for "mx32".
      
      however it turns out that using a triple of x86_64-x32 makes
      gcc and binutils pick up the right arch (they detect it as x86_64)
      and allows us to have a unique triple for cross-compiler toolchains.
      3e4b2cdc
  21. 28 8月, 2013 2 次提交
    • R
      remove -Wcast-align from --enable-warnings · f7bc29ed
      Rich Felker 提交于
      I originally added this warning option based on a misunderstanding of
      how it works. it does not warn whenever the destination of the cast
      has stricter alignment; it only warns in cases where misaligned
      dereference could lead to a fault. thus, it's essentially a no-op for
      i386, which had me wrongly believing the code was clean for this
      warning level. on other archs, numerous diagnostic messages are
      produced, and all of them are false-positives, so it's better just not
      to use it.
      f7bc29ed
    • R
      add attribute((may_alias)) checking in configure · 06ceee8c
      Rich Felker 提交于
      this will be needed for upcoming commits to the string/mem functions
      to correct their unannounced use of aliasing violations for
      word-at-a-time search, fill, and copy operations.
      06ceee8c
  22. 21 8月, 2013 1 次提交
    • R
      fix two bugs in sed code configure uses to save command line · e449974d
      Rich Felker 提交于
      one place where semicolon (non-portable) was still used in place of
      separate -e options (copied over from an old version of this code),
      and use of a literal slash in the bracket expression for the final
      command, despite slash being used as the delimiter for the s command.
      e449974d
  23. 17 8月, 2013 2 次提交
    • R
      make configure store its command line in config.mak for easy re-run · 453f4622
      Rich Felker 提交于
      proper shell quoting and pretty-printing (avoiding ugly gratuitous
      quoting and bad quoting style) is included.
      453f4622
    • R
      fix detection of arm hardfloat · 4918c2bb
      Rich Felker 提交于
      it turns out that __SOFTFP__ does not indicate the ABI in use but
      rather that fpu instructions are not to be used at all. this is
      specified in ARM's documentation so I'm unclear on how I previously
      got the wrong idea. unfortunately, this resulted in the 0.9.12 release
      producing a dynamic linker with the wrong name. fortunately, there do
      not yet seem to be any public toolchain builds using the wrong name.
      
      the __ARM_PCS_VFP macro does not seem to be official from ARM, and in
      fact it was missing from the very earliest gcc versions (around 4.5.x)
      that added -mfloat-abi=hard. it would be possible on such versions to
      perform some ugly linker-based tests instead in hopes that the linker
      will reject ABI-mismatching object files, if there is demand for
      supporting such versions. I would probably prefer to document which
      versions are broken and warn users to manually add -D__ARM_PCS_VFP if
      using such a version.
      
      there's definitely an argument to be made that the fenv macros should
      be exposed even in -mfloat-abi=softfp mode. for now, I have chosen not
      to expose them in this case, since the math library will not
      necessarily have the capability to raise exceptions (it depends on the
      CFLAGS used to compile it), and since exceptions are officially
      excluded from the ARM EABI, which the plain "arm" arch aims to
      follow.
      4918c2bb
  24. 11 8月, 2013 1 次提交
    • R
      allow subarch-specific asm, including asm specific to the default · 90d77722
      Rich Felker 提交于
      the default subarch is the one whose full name is just the base arch
      name, with no suffixes. normally, either the asm in the default
      subarch is suitable for all subarch variants, or separate asm is
      mandatory for each variant. however, in the case of asm which is
      purely for optimization purposes, it's possible to have asm that only
      works (or only performs well) on the default subarch, and not any othe
      the other variants. thus, I have added a mechanism to give a name to
      the default variant, for example "armel" for the default,
      little-endian arm. further such default-subarch names can be added in
      the future as needed.
      90d77722
  25. 03 8月, 2013 1 次提交
  26. 02 8月, 2013 1 次提交
  27. 25 7月, 2013 1 次提交
  28. 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
  29. 19 7月, 2013 2 次提交
  30. 12 12月, 2012 1 次提交
  31. 19 11月, 2012 1 次提交
  32. 14 11月, 2012 1 次提交