ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/toolchain/musl/patches/110-read_timezone_from_fs.patch b/toolchain/musl/patches/110-read_timezone_from_fs.patch
new file mode 100644
index 0000000..c6d5d90
--- /dev/null
+++ b/toolchain/musl/patches/110-read_timezone_from_fs.patch
@@ -0,0 +1,97 @@
+--- a/src/time/__tz.c
++++ b/src/time/__tz.c
+@@ -5,6 +5,10 @@
+ #include <string.h>
+ #include <sys/mman.h>
+ #include <ctype.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include "libc.h"
+ #include "lock.h"
+ #include "fork_impl.h"
+@@ -123,6 +127,67 @@ static size_t zi_dotprod(const unsigned
+ 	return y;
+ }
+ 
++#define TZ_BUFLEN		(2*TZNAME_MAX + 56)
++static char *read_TZ_file(char *buf)
++{
++	int r;
++	int fd;
++	char *p = NULL;
++
++	fd = open("/etc/TZ", O_RDONLY);
++	if (fd >= 0) {
++		/* Shorter, and does one fewer read syscall */
++		r = read(fd, buf, TZ_BUFLEN);
++		if (r < 0)
++			goto ERROR;
++		p = buf + r;
++
++		if ((p > buf) && (p[-1] == '\n')) { /* Must end with newline */
++			p[-1] = 0;
++			p = buf;
++		} else {
++ERROR:
++			p = NULL;
++		}
++		close(fd);
++	} else {
++		fd = open("/etc/localtime", O_RDONLY);
++		if (fd >= 0) {
++			r = read(fd, buf, TZ_BUFLEN);
++			if (r != TZ_BUFLEN
++			 || strncmp(buf, "TZif", 4) != 0
++			 || (unsigned char)buf[4] < 2
++			 || lseek(fd, -TZ_BUFLEN, SEEK_END) < 0
++			) {
++				goto ERROR;
++			}
++			/* tzfile.h from tzcode database says about TZif2+ files:
++			**
++			** If tzh_version is '2' or greater, the above is followed by a second instance
++			** of tzhead and a second instance of the data in which each coded transition
++			** time uses 8 rather than 4 chars,
++			** then a POSIX-TZ-environment-variable-style string for use in handling
++			** instants after the last transition time stored in the file
++			** (with nothing between the newlines if there is no POSIX representation for
++			** such instants).
++			*/
++			r = read(fd, buf, TZ_BUFLEN);
++			if (r <= 0 || buf[--r] != '\n')
++				goto ERROR;
++			buf[r] = 0;
++			while (r != 0) {
++				if (buf[--r] == '\n') {
++					p = buf + r + 1;
++					break;
++				}
++			} /* else ('\n' not found): p remains NULL */
++			close(fd);
++		}
++	}
++
++	return p;
++}
++
+ static void do_tzset()
+ {
+ 	char buf[NAME_MAX+25], *pathname=buf+24;
+@@ -131,8 +196,15 @@ static void do_tzset()
+ 	size_t i;
+ 	static const char search[] =
+ 		"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
++	char tzbuf[TZ_BUFLEN];
+ 
+ 	s = getenv("TZ");
++
++	/* if TZ is empty try to read it from /etc/TZ */
++	if (!s || !*s) {
++		s = read_TZ_file(tzbuf);
++	}
++
+ 	if (!s) s = "/etc/localtime";
+ 	if (!*s) s = __utc;
+ 
diff --git a/toolchain/musl/patches/200-add_libssp_nonshared.patch b/toolchain/musl/patches/200-add_libssp_nonshared.patch
new file mode 100644
index 0000000..26a9bfe
--- /dev/null
+++ b/toolchain/musl/patches/200-add_libssp_nonshared.patch
@@ -0,0 +1,53 @@
+From 7ec87fbbc3cac99b4173d082dd6195f47c9a32e7 Mon Sep 17 00:00:00 2001
+From: Steven Barth <steven@midlink.org>
+Date: Mon, 22 Jun 2015 11:01:56 +0200
+Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed
+
+Signed-off-by: Steven Barth <steven@midlink.org>
+
+--- a/Makefile
++++ b/Makefile
+@@ -67,7 +67,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C
+ STATIC_LIBS = lib/libc.a
+ SHARED_LIBS = lib/libc.so
+ TOOL_LIBS = lib/musl-gcc.specs
+-ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS)
++ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) lib/libssp_nonshared.a
+ ALL_TOOLS = obj/musl-gcc
+ 
+ WRAPCC_GCC = gcc
+@@ -88,7 +88,7 @@ else
+ 
+ all: $(ALL_LIBS) $(ALL_TOOLS)
+ 
+-OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include)
++OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include obj/libssp_nonshared)
+ 
+ $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(ALL_OBJS:%.o=%.lo) $(GENH) $(GENH_INT): | $(OBJ_DIRS)
+ 
+@@ -115,6 +115,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.
+ 
+ obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC
+ 
++obj/libssp_nonshared/__stack_chk_fail_local.o: CFLAGS_ALL += $(CFLAGS_NOSSP)
++
+ OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=$(srcdir)/src/%))
+ $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.o) $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.lo): CFLAGS += -O3
+ 
+@@ -167,6 +169,11 @@ lib/libc.a: $(AOBJS)
+ 	$(AR) rc $@ $(AOBJS)
+ 	$(RANLIB) $@
+ 
++lib/libssp_nonshared.a: obj/libssp_nonshared/__stack_chk_fail_local.o
++	rm -f $@
++	$(AR) rc $@ $<
++	$(RANLIB) $@
++
+ $(EMPTY_LIBS):
+ 	rm -f $@
+ 	$(AR) rc $@
+--- /dev/null
++++ b/libssp_nonshared/__stack_chk_fail_local.c
+@@ -0,0 +1,2 @@
++#include "atomic.h"
++void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); }
diff --git a/toolchain/musl/patches/300-relative.patch b/toolchain/musl/patches/300-relative.patch
new file mode 100644
index 0000000..7e1eb7d
--- /dev/null
+++ b/toolchain/musl/patches/300-relative.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -217,7 +217,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
+ 	$(INSTALL) -D -m 644 $< $@
+ 
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+-	$(INSTALL) -D -l $(libdir)/libc.so $@ || true
++	$(INSTALL) -D -l libc.so $@ || true
+ 
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+ 
diff --git a/toolchain/musl/patches/400-fix-loongarch64-ldso-file-name.patch b/toolchain/musl/patches/400-fix-loongarch64-ldso-file-name.patch
new file mode 100644
index 0000000..a19ceb4
--- /dev/null
+++ b/toolchain/musl/patches/400-fix-loongarch64-ldso-file-name.patch
@@ -0,0 +1,10 @@
+--- a/Makefile
++++ b/Makefile
+@@ -218,6 +218,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
+ 
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
+ 	$(INSTALL) -D -l libc.so $@ || true
++	$(if $(filter loongarch64,$(ARCH)$(SUBARCH)),$(INSTALL) -D -l libc.so $(subst $(ARCH)$(SUBARCH).so.1,loongarch-lp64d.so.1,$@) || true)
+ 
+ install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
+ 
diff --git a/toolchain/musl/patches/600-nftw-support-common-gnu-extension.patch b/toolchain/musl/patches/600-nftw-support-common-gnu-extension.patch
new file mode 100644
index 0000000..7a1ab3f
--- /dev/null
+++ b/toolchain/musl/patches/600-nftw-support-common-gnu-extension.patch
@@ -0,0 +1,95 @@
+From 6f1143425a3afc4eb5086e9c90e7efb3affd7cb7 Mon Sep 17 00:00:00 2001
+From: Tony Ambardar <Tony.Ambardar@gmail.com>
+Date: Sat, 11 Jul 2020 06:35:46 -0700
+Subject: [PATCH 2/2] nftw: support common gnu extension
+
+Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
+---
+ include/ftw.h   |  8 ++++++++
+ src/misc/nftw.c | 35 ++++++++++++++++++++++++++++++-----
+ 2 files changed, 38 insertions(+), 5 deletions(-)
+
+--- a/include/ftw.h
++++ b/include/ftw.h
+@@ -21,6 +21,14 @@ extern "C" {
+ #define FTW_CHDIR 4
+ #define FTW_DEPTH 8
+ 
++#ifdef _GNU_SOURCE
++#define FTW_ACTIONRETVAL 16
++#define FTW_CONTINUE 0
++#define FTW_STOP 1
++#define FTW_SKIP_SUBTREE 2
++#define FTW_SKIP_SIBLINGS 3
++#endif
++
+ struct FTW {
+ 	int base;
+ 	int level;
+--- a/src/misc/nftw.c
++++ b/src/misc/nftw.c
+@@ -1,3 +1,4 @@
++#define _GNU_SOURCE
+ #include <ftw.h>
+ #include <dirent.h>
+ #include <fcntl.h>
+@@ -74,8 +75,20 @@ static int do_nftw(char *path, int (*fn)
+ 		if (!fd_limit) close(dfd);
+ 	}
+ 
+-	if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
+-		return r;
++	if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) {
++		if (flags & FTW_ACTIONRETVAL)
++			switch (r) {
++			case FTW_SKIP_SUBTREE:
++				h = NULL;
++			case FTW_CONTINUE:
++				break;
++			case FTW_SKIP_SIBLINGS:
++			case FTW_STOP:
++				return r;
++			}
++		else
++			return r;
++	}
+ 
+ 	for (; h; h = h->chain)
+ 		if (h->dev == st.st_dev && h->ino == st.st_ino)
+@@ -103,7 +116,10 @@ static int do_nftw(char *path, int (*fn)
+ 				strcpy(path+j+1, de->d_name);
+ 				if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) {
+ 					closedir(d);
+-					return r;
++					if ((flags & FTW_ACTIONRETVAL) && r == FTW_SKIP_SIBLINGS)
++						break;
++					else
++						return r;
+ 				}
+ 			}
+ 			closedir(d);
+@@ -114,8 +130,16 @@ static int do_nftw(char *path, int (*fn)
+ 	}
+ 
+ 	path[l] = 0;
+-	if ((flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
+-		return r;
++	if ((flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) {
++		if (flags & FTW_ACTIONRETVAL)
++			switch (r) {
++				case FTW_SKIP_SIBLINGS:
++				case FTW_STOP:
++					return r;
++			}
++		else
++			return r;
++	}
+ 
+ 	return 0;
+ }
+@@ -140,3 +164,5 @@ int nftw(const char *path, int (*fn)(con
+ 	pthread_setcancelstate(cs, 0);
+ 	return r;
+ }
++
++#undef nftw64
diff --git a/toolchain/musl/patches/610-add-renameat2-linux-syscall-wrapper.patch b/toolchain/musl/patches/610-add-renameat2-linux-syscall-wrapper.patch
new file mode 100644
index 0000000..1677693
--- /dev/null
+++ b/toolchain/musl/patches/610-add-renameat2-linux-syscall-wrapper.patch
@@ -0,0 +1,61 @@
+From dc651fe2e6b16087c519c0bd0bf943cb7c53c807 Mon Sep 17 00:00:00 2001
+In-Reply-To: <20240423234355.2414567-1-Tony.Ambardar@gmail.com>
+References: <20240423234355.2414567-1-Tony.Ambardar@gmail.com>
+From: Tony Ambardar <Tony.Ambardar@gmail.com>
+Date: Sat, 20 Apr 2024 21:30:13 -0700
+Subject: [PATCH v3] add renameat2 linux syscall wrapper
+To: musl@lists.openwall.com
+Cc: Rich Felker <dalias@libc.org>
+
+This syscall is available since Linux 3.15 and also implemented in glibc
+from version 2.28. It is commonly used in filesystem or security contexts.
+
+Constants RENAME_NOREPLACE, RENAME_EXCHANGE, RENAME_WHITEOUT are guarded by
+_GNU_SOURCE as with glibc.
+
+Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
+---
+v2 -> v3:
+ * call SYS_renameat first if applicable
+ * drop unneeded error code handling
+
+v1 -> v2:
+ * align related constants
+ * drop 'int' from 'unsigned int'
+ * add fallback to SYS_renameat where applicable
+---
+ include/stdio.h       |  7 +++++++
+ src/linux/renameat2.c | 11 +++++++++++
+ 2 files changed, 18 insertions(+)
+ create mode 100644 src/linux/renameat2.c
+
+--- a/include/stdio.h
++++ b/include/stdio.h
+@@ -158,6 +158,13 @@ char *ctermid(char *);
+ #define L_ctermid 20
+ #endif
+ 
++#if defined(_GNU_SOURCE)
++#define RENAME_NOREPLACE (1 << 0)
++#define RENAME_EXCHANGE  (1 << 1)
++#define RENAME_WHITEOUT  (1 << 2)
++
++int renameat2(int, const char *, int, const char *, unsigned);
++#endif
+ 
+ #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+  || defined(_BSD_SOURCE)
+--- /dev/null
++++ b/src/linux/renameat2.c
+@@ -0,0 +1,11 @@
++#define _GNU_SOURCE
++#include <stdio.h>
++#include "syscall.h"
++
++int renameat2(int oldfd, const char *old, int newfd, const char *new, unsigned flags)
++{
++#ifdef SYS_renameat
++	if (!flags) return syscall(SYS_renameat, oldfd, old, newfd, new);
++#endif
++	return syscall(SYS_renameat2, oldfd, old, newfd, new, flags);
++}
diff --git a/toolchain/musl/patches/900-iconv_size_hack.patch b/toolchain/musl/patches/900-iconv_size_hack.patch
new file mode 100644
index 0000000..ad1dc4b
--- /dev/null
+++ b/toolchain/musl/patches/900-iconv_size_hack.patch
@@ -0,0 +1,100 @@
+--- a/src/locale/iconv.c
++++ b/src/locale/iconv.c
+@@ -48,6 +48,7 @@ static const unsigned char charmaps[] =
+ "utf16\0\0\312"
+ "ucs4\0utf32\0\0\313"
+ "ucs2\0\0\314"
++#ifdef FULL_ICONV
+ "eucjp\0\0\320"
+ "shiftjis\0sjis\0cp932\0\0\321"
+ "iso2022jp\0\0\322"
+@@ -56,6 +57,7 @@ static const unsigned char charmaps[] =
+ "gb2312\0\0\332"
+ "big5\0bigfive\0cp950\0big5hkscs\0\0\340"
+ "euckr\0ksc5601\0ksx1001\0cp949\0\0\350"
++#endif
+ #include "codepages.h"
+ ;
+ 
+@@ -66,6 +68,7 @@ static const unsigned short legacy_chars
+ #include "legacychars.h"
+ };
+ 
++#ifdef FULL_ICONV
+ static const unsigned short jis0208[84][94] = {
+ #include "jis0208.h"
+ };
+@@ -85,6 +88,7 @@ static const unsigned short hkscs[] = {
+ static const unsigned short ksc[93][94] = {
+ #include "ksc.h"
+ };
++#endif
+ 
+ static const unsigned short rev_jis[] = {
+ #include "revjis.h"
+@@ -205,6 +209,7 @@ static unsigned legacy_map(const unsigne
+ 	return x < 256 ? x : legacy_chars[x-256];
+ }
+ 
++#ifdef FULL_ICONV
+ static unsigned uni_to_jis(unsigned c)
+ {
+ 	unsigned nel = sizeof rev_jis / sizeof *rev_jis;
+@@ -223,6 +228,7 @@ static unsigned uni_to_jis(unsigned c)
+ 		}
+ 	}
+ }
++#endif
+ 
+ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb)
+ {
+@@ -319,6 +325,7 @@ size_t iconv(iconv_t cd, char **restrict
+ 			}
+ 			type = scd->state;
+ 			continue;
++#ifdef FULL_ICONV
+ 		case SHIFT_JIS:
+ 			if (c < 128) break;
+ 			if (c-0xa1 <= 0xdf-0xa1) {
+@@ -518,6 +525,7 @@ size_t iconv(iconv_t cd, char **restrict
+ 			c = ksc[c][d];
+ 			if (!c) goto ilseq;
+ 			break;
++#endif
+ 		default:
+ 			if (!c) break;
+ 			c = legacy_map(map, c);
+@@ -559,6 +567,7 @@ size_t iconv(iconv_t cd, char **restrict
+ 				}
+ 			}
+ 			goto subst;
++#ifdef FULL_ICONV
+ 		case SHIFT_JIS:
+ 			if (c < 128) goto revout;
+ 			if (c == 0xa5) {
+@@ -632,6 +641,7 @@ size_t iconv(iconv_t cd, char **restrict
+ 			*(*out)++ = 'B';
+ 			*outb -= 8;
+ 			break;
++#endif
+ 		case UCS2:
+ 			totype = UCS2BE;
+ 		case UCS2BE:
+--- a/src/locale/codepages.h
++++ b/src/locale/codepages.h
+@@ -129,6 +129,7 @@
+ "\340\204\43\316\100\344\34\144\316\71\350\244\243\316\72\354\264\343\316\73"
+ "\21\361\44\317\74\364\30\145\17\124\146\345\243\317\76\374\134\304\327\77"
+ 
++#ifdef FULL_ICONV
+ "cp1250\0"
+ "windows1250\0"
+ "\0\40"
+@@ -239,6 +240,7 @@
+ "\20\105\163\330\64\324\324\145\315\65\330\144\243\315\66\334\334\145\330\67"
+ "\340\204\43\316\100\344\224\143\316\71\350\244\243\316\72\205\265\343\316\73"
+ "\21\305\203\330\74\364\330\145\317\75\370\344\243\317\76\374\340\65\362\77"
++#endif
+ 
+ "koi8r\0"
+ "\0\40"
diff --git a/toolchain/musl/patches/901-crypt_size_hack.patch b/toolchain/musl/patches/901-crypt_size_hack.patch
new file mode 100644
index 0000000..667894a
--- /dev/null
+++ b/toolchain/musl/patches/901-crypt_size_hack.patch
@@ -0,0 +1,75 @@
+--- a/src/crypt/crypt_sha512.c
++++ b/src/crypt/crypt_sha512.c
+@@ -13,6 +13,17 @@
+ #include <string.h>
+ #include <stdint.h>
+ 
++#ifdef CRYPT_SIZE_HACK
++#include <errno.h>
++
++char *__crypt_sha512(const char *key, const char *setting, char *output)
++{
++	errno = ENOSYS;
++	return NULL;
++}
++
++#else
++
+ /* public domain sha512 implementation based on fips180-3 */
+ /* >=2^64 bits messages are not supported (about 2000 peta bytes) */
+ 
+@@ -369,3 +380,4 @@ char *__crypt_sha512(const char *key, co
+ 		return "*";
+ 	return p;
+ }
++#endif
+--- a/src/crypt/crypt_blowfish.c
++++ b/src/crypt/crypt_blowfish.c
+@@ -50,6 +50,17 @@
+ #include <string.h>
+ #include <stdint.h>
+ 
++#ifdef CRYPT_SIZE_HACK
++#include <errno.h>
++
++char *__crypt_blowfish(const char *key, const char *setting, char *output)
++{
++	errno = ENOSYS;
++	return NULL;
++}
++
++#else
++
+ typedef uint32_t BF_word;
+ typedef int32_t BF_word_signed;
+ 
+@@ -804,3 +815,4 @@ char *__crypt_blowfish(const char *key,
+ 
+ 	return "*";
+ }
++#endif
+--- a/src/crypt/crypt_sha256.c
++++ b/src/crypt/crypt_sha256.c
+@@ -13,6 +13,17 @@
+ #include <string.h>
+ #include <stdint.h>
+ 
++#ifdef CRYPT_SIZE_HACK
++#include <errno.h>
++
++char *__crypt_sha256(const char *key, const char *setting, char *output)
++{
++	errno = ENOSYS;
++	return NULL;
++}
++
++#else
++
+ /* public domain sha256 implementation based on fips180-3 */
+ 
+ struct sha256 {
+@@ -320,3 +331,4 @@ char *__crypt_sha256(const char *key, co
+ 		return "*";
+ 	return p;
+ }
++#endif
diff --git a/toolchain/musl/patches/999-libc-so-0-1.patch b/toolchain/musl/patches/999-libc-so-0-1.patch
new file mode 100644
index 0000000..d865690
--- /dev/null
+++ b/toolchain/musl/patches/999-libc-so-0-1.patch
@@ -0,0 +1,16 @@
+--- a/Makefile
++++ b/Makefile
+@@ -216,11 +216,11 @@ $(DESTDIR)$(includedir)/bits/%: obj/incl
+ $(DESTDIR)$(includedir)/%: $(srcdir)/include/%
+ 	$(INSTALL) -D -m 644 $< $@
+ 
+-$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
++$(DESTDIR)$(LDSO_PATHNAME) $(DESTDIR)$(syslibdir)/libc.so.0 $(DESTDIR)$(syslibdir)/libc.so.1: $(DESTDIR)$(libdir)/libc.so
+ 	$(INSTALL) -D -l libc.so $@ || true
+ 	$(if $(filter loongarch64,$(ARCH)$(SUBARCH)),$(INSTALL) -D -l libc.so $(subst $(ARCH)$(SUBARCH).so.1,loongarch-lp64d.so.1,$@) || true)
+ 
+-install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
++install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME) $(DESTDIR)$(syslibdir)/libc.so.0 $(DESTDIR)$(syslibdir)/libc.so.1,)
+ 
+ install-headers: $(ALL_INCLUDES:include/%=$(DESTDIR)$(includedir)/%)
+