summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)AuthorLines
2014-01-15fix system breakage window during make install due to permissionsRich Felker-2/+1
install.sh was wrongly waiting until after atomically replacing the old file to set the correct permissions on the new file. in the case of the dynamic linker, this would cause a dynamic-linked chmod command not to run (due to missing executable permissions on the dynamic linker) and thus leave the system in an unusable state. even if chmod is static-linked, the old behavior had a race window where dynamic-linked programs could fail to run.
2013-12-03fix mv usage in install.sh to avoid bogus interactive promptingRich Felker-1/+1
2013-12-01add infrastructure to record and report the version of libc.soRich Felker-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.
2013-08-17replace system's install command with a shell scriptRich Felker-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.
2013-07-22refactor headers, especially alltypes.h, and improve C++ ABI compatRich Felker-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
2013-06-07fix mixup in previous change to gcc wrapperRich Felker-1/+1
2013-06-07make gcc-specific headers (intrinsics, etc.) available with wrapperRich Felker-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.
2012-07-23gcc wrapper improvement: leave libgcc dir in the library pathRich Felker-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.
2012-06-06make gcc wrapper rewrite link options rather than just extending themRich Felker-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.
2012-05-30fix musl-gcc wrapper to work with -pieRich Felker-1/+1
linking the wrong crt1.o resulted in textrels and thus crashing
2012-04-22new gcc wrapper, entirely specfile basedRich Felker-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.
2012-02-17remove -std=gnu99 from musl-gcc wrapperRich Felker-1/+1
while probably desirable, changing the default language variant is outside the scope of the wrapper's responsibility.
2012-02-02improve gcc wrapper to support -nostdlib, -nostartfilesRich Felker-1/+1
2012-01-24make gcc wrapper support -shared correctlyRich Felker-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.
2011-09-21new gcc wrapper now supports pre-4.4 gcc versions and is more robustRich Felker-17/+40
2011-06-27cleanup shared library build system to be more $HOME-local-install friendlyRich Felker-2/+2
the path for the dynamic linker is now configurable, and failure to install the symlink for it will not stop the build.
2011-06-25fix dynamic linker issue in musl-gcc wrapperRich Felker-1/+1
2011-06-23adapt build/install/gcc-wrapper systems for dynamic linking supportRich Felker-2/+3
2011-03-01use -L/...../ -lgcc instead of /...../libgcc.a in musl-gcc wrapperRich Felker-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.
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker-0/+30