about summary refs log tree commit diff
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* add infrastructure to record and report the version of libc.soRich Felker2013-12-011-0/+12
| | | | | | | this is still experimental and subject to change. for git checkouts, an attempt is made to record the exact revision to aid in bug reports and debugging. no version information is recorded in the static libc.a or binaries it's linked into.
* replace system's install command with a shell scriptRich Felker2013-08-171-0/+65
| | | | | | | | | | | | | | | the historical (non-standardized) install command is really inappropriate for installing binaries/libraries on a system that utilizes memory-mapped executable files. rather than replacing an existing file atomically, it overwrites the existing file. this can cause running programs to see a partially-modified version of the file, resulting in unpredictable behavior, or SIGBUS. a MAP_COPY mode for mmap would get around this problem, but Linux lacks MAP_COPY. the shell script added with this commit works around the problem by writing temporary files and moving them into place. unlike the historical install utility, it also support a -l option for installing a symbolic link atomically, via the same method.
* refactor headers, especially alltypes.h, and improve C++ ABI compatRich Felker2013-07-221-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the arch-specific bits/alltypes.h.sh has been replaced with a generic alltypes.h.in and minimal arch-specific bits/alltypes.h.in. this commit is intended to have no functional changes except: - exposing additional symbols that POSIX allows but does not require - changing the C++ name mangling for some types - fixing the signedness of blksize_t on powerpc (POSIX requires signed) - fixing the limit macros for sig_atomic_t on x86_64 - making dev_t an unsigned type (ABI matching goal, and more logical) in addition, some types that were wrongly defined with long on 32-bit archs were changed to int, and vice versa; this change is non-functional except for the possibility of making pointer types mismatch, and only affects programs that were using them incorrectly, and only at build-time, not runtime. the following changes were made in the interest of moving non-arch-specific types out of the alltypes system and into the headers they're associated with, and also will tend to improve application compatibility: - netdb.h now includes netinet/in.h (for socklen_t and uint32_t) - netinet/in.h now includes sys/socket.h and inttypes.h - sys/resource.h now includes sys/time.h (for struct timeval) - sys/wait.h now includes signal.h (for siginfo_t) - langinfo.h now includes nl_types.h (for nl_item) for the types in stdint.h: - types which are of no interest to other headers were moved out of the alltypes system. - fast types for 8- and 64-bit are hard-coded (at least for now); only the 16- and 32-bit ones have reason to vary by arch. and the following types have been changed for C++ ABI purposes; - mbstate_t now has a struct tag, __mbstate_t - FILE's struct tag has been changed to _IO_FILE - DIR's struct tag has been changed to __dirstream - locale_t's struct tag has been changed to __locale_struct - pthread_t is defined as unsigned long in C++ mode only - fpos_t now has a struct tag, _G_fpos64_t - fsid_t's struct tag has been changed to __fsid_t - idtype_t has been made an enum type (also required by POSIX) - nl_catd has been changed from long to void * - siginfo_t's struct tag has been removed - sigset_t's has been given a struct tag, __sigset_t - stack_t has been given a struct tag, sigaltstack - suseconds_t has been changed to long on 32-bit archs - [u]intptr_t have been changed from long to int rank on 32-bit archs - dev_t has been made unsigned summary of tests that have been performed against these changes: - nsz's libc-test (diff -u before and after) - C++ ABI check symbol dump (diff -u before, after, glibc) - grepped for __NEED, made sure types needed are still in alltypes - built gcc 3.4.6
* fix mixup in previous change to gcc wrapperRich Felker2013-06-071-1/+1
|
* make gcc-specific headers (intrinsics, etc.) available with wrapperRich Felker2013-06-071-2/+2
| | | | | they are intentionally listed after the libc include directory so that the gcc float.h, etc. don't get used in place of the libc ones.
* gcc wrapper improvement: leave libgcc dir in the library pathRich Felker2012-07-231-1/+1
| | | | | this is needed in case -lgcc is passed explicitly on the link command line, for example if the wrapper is being used to build musl itself.
* make gcc wrapper rewrite link options rather than just extending themRich Felker2012-06-061-3/+1
| | | | | this is not tested yet, but should work to get rid of unwanted --hash-style=gnu hacks present in some distro-patched gcc versions.
* fix musl-gcc wrapper to work with -pieRich Felker2012-05-301-1/+1
| | | | linking the wrong crt1.o resulted in textrels and thus crashing
* new gcc wrapper, entirely specfile basedRich Felker2012-04-222-60/+39
| | | | | | | | | | | | | the _concept_ of this wrapper has been tested extensively, but the integration with the build/install system, and using a persistent specfile rather than one generated at build-time, have not been heavily tested and may need minor tweaks. this approach should be a lot more robust (and easier to improve) than writing a shell script that's responsible for trying to mimic gcc's logic about whether it's compiling or linking, building shared libs or executable files, etc. it's also lighter weight and should result in mildly faster builds when using the wrapper.
* remove -std=gnu99 from musl-gcc wrapperRich Felker2012-02-171-1/+1
| | | | | while probably desirable, changing the default language variant is outside the scope of the wrapper's responsibility.
* improve gcc wrapper to support -nostdlib, -nostartfilesRich Felker2012-02-021-1/+1
|
* make gcc wrapper support -shared correctlyRich Felker2012-01-241-2/+7
| | | | | | | it was previously attempting to link start files as part of shared objects. this is definitely wrong and depending on the platform and linker could range from just adding extraneous junk to introducing textrels to making linking fail entirely.
* new gcc wrapper now supports pre-4.4 gcc versions and is more robustRich Felker2011-09-211-17/+40
|
* cleanup shared library build system to be more $HOME-local-install friendlyRich Felker2011-06-271-2/+2
| | | | | the path for the dynamic linker is now configurable, and failure to install the symlink for it will not stop the build.
* fix dynamic linker issue in musl-gcc wrapperRich Felker2011-06-251-1/+1
|
* adapt build/install/gcc-wrapper systems for dynamic linking supportRich Felker2011-06-231-2/+3
|
* use -L/...../ -lgcc instead of /...../libgcc.a in musl-gcc wrapperRich Felker2011-03-011-1/+2
| | | | | | this should avoid warnings about unused libs when not linking, and might fix some other obscure issues too. i might replace this approach with a completely different one soon though.
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-121-0/+30