ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/utils/lvm2/patches/002-const-stdio.patch b/external/subpack/utils/lvm2/patches/002-const-stdio.patch
new file mode 100644
index 0000000..070e834
--- /dev/null
+++ b/external/subpack/utils/lvm2/patches/002-const-stdio.patch
@@ -0,0 +1,43 @@
+--- a/lib/commands/toolcontext.c
++++ b/lib/commands/toolcontext.c
+@@ -1673,7 +1673,7 @@ struct cmd_context *create_toolcontext(u
+ 	/* FIXME Make this configurable? */
+ 	reset_lvm_errno(1);
+ 
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ 	/* Set in/out stream buffering before glibc */
+ 	if (set_buffering
+ #ifdef SYS_gettid
+@@ -2053,7 +2053,7 @@ void destroy_toolcontext(struct cmd_cont
+ 		dm_hash_destroy(cmd->cft_def_hash);
+ 
+ 	dm_device_list_destroy(&cmd->cache_dm_devs);
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ 	if (cmd->linebuffer) {
+ 		/* Reset stream buffering to defaults */
+ 		if (is_valid_fd(STDIN_FILENO) &&
+--- a/tools/lvmcmdline.c
++++ b/tools/lvmcmdline.c
+@@ -3398,6 +3398,7 @@ int lvm_split(char *str, int *argc, char
+ /* Make sure we have always valid filedescriptors 0,1,2 */
+ static int _check_standard_fds(void)
+ {
++#ifdef __GLIBC__
+ 	int err = is_valid_fd(STDERR_FILENO);
+ 
+ 	if (!is_valid_fd(STDIN_FILENO) &&
+@@ -3424,6 +3425,12 @@ static int _check_standard_fds(void)
+ 		       strerror(errno));
+ 		return 0;
+ 	}
++#else
++	if (!is_valid_fd(STDERR_FILENO) ||
++	    !is_valid_fd(STDOUT_FILENO) ||
++	    !is_valid_fd(STDIN_FILENO))
++		return 0;
++#endif
+ 
+ 	return 1;
+ }
diff --git a/external/subpack/utils/lvm2/patches/003-no-mallinfo.patch b/external/subpack/utils/lvm2/patches/003-no-mallinfo.patch
new file mode 100644
index 0000000..e46ead5
--- /dev/null
+++ b/external/subpack/utils/lvm2/patches/003-no-mallinfo.patch
@@ -0,0 +1,45 @@
+--- a/lib/mm/memlock.c
++++ b/lib/mm/memlock.c
+@@ -187,12 +187,15 @@ static void _allocate_memory(void)
+          *  memory on free(), this is good enough for our purposes.
+          */
+ 	while (missing > 0) {
++#ifdef __GLIBC__
+ 		struct mallinfo inf = mallinfo();
+ 		hblks = inf.hblks;
++#endif
+ 
+ 		if ((areas[area] = malloc(_size_malloc_tmp)))
+ 			_touch_memory(areas[area], _size_malloc_tmp);
+ 
++#ifdef __GLIBC__
+ 		inf = mallinfo();
+ 
+ 		if (hblks < inf.hblks) {
+@@ -202,9 +205,12 @@ static void _allocate_memory(void)
+ 			free(areas[area]);
+ 			_size_malloc_tmp /= 2;
+ 		} else {
++#endif
+ 			++ area;
+ 			missing -= _size_malloc_tmp;
++#ifdef __GLIBC__
+ 		}
++#endif
+ 
+ 		if (area == max_areas && missing > 0) {
+ 			/* Too bad. Warn the user and proceed, as things are
+@@ -525,8 +531,13 @@ static void _lock_mem(struct cmd_context
+ 	 * will not block memory locked thread
+ 	 * Note: assuming _memlock_count_daemon is updated before _memlock_count
+ 	 */
++#ifdef __GLIBC__
+ 	_use_mlockall = _memlock_count_daemon ? 1 :
+ 		find_config_tree_bool(cmd, activation_use_mlockall_CFG, NULL);
++#else
++	/* always use mlockall on musl */
++	_use_mlockall = 1;
++#endif
+ 
+ 	if (!_use_mlockall) {
+ 		if (!*_procselfmaps &&