Index: uspace/lib/libc/Makefile.toolchain
===================================================================
--- uspace/lib/libc/Makefile.toolchain	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/Makefile.toolchain	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -27,22 +27,26 @@
 #
 
-GCC_CFLAGS = -I$(LIBC_PREFIX)/include -O3 -imacros $(LIBC_PREFIX)/../../../config.h \
+OPTIMIZATION = 3
+
+GCC_CFLAGS = -I$(LIBC_PREFIX)/include -O$(OPTIMIZATION) -imacros $(LIBC_PREFIX)/../../../config.h \
 	-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
 	-finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
 	-Wall -Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes \
-	-Werror-implicit-function-declaration -Werror -pipe -g -D__$(ENDIANESS)__
+	-Werror-implicit-function-declaration -Wwrite-strings \
+	-Werror -pipe -g -D__$(ENDIANESS)__
 
-ICC_CFLAGS = -I$(LIBC_PREFIX)/include -O3 -imacros $(LIBC_PREFIX)/../../../config.h \
+ICC_CFLAGS = -I$(LIBC_PREFIX)/include -O$(OPTIMIZATION) -imacros $(LIBC_PREFIX)/../../../config.h \
+	-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
+	-finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
+	-Wall -Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes \
+	-Werror-implicit-function-declaration -Wwrite-strings \
+	-Werror -pipe -g -D__$(ENDIANESS)__
+
+CLANG_CFLAGS = -I$(LIBC_PREFIX)/include -O$(OPTIMIZATION) -imacros $(LIBC_PREFIX)/../../../config.h \
 	-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
 	-finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
 	-Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \
-	-Werror-implicit-function-declaration -Werror -pipe -g -D__$(ENDIANESS)__
-
-CLANG_CFLAGS = -I$(LIBC_PREFIX)/include -O3 -imacros $(LIBC_PREFIX)/../../../config.h \
-	-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
-	-finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
-	-Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \
-	-Werror-implicit-function-declaration -pipe -g -arch $(CLANG_ARCH) \
-	-D__$(ENDIANESS)__
+	-Werror-implicit-function-declaration -Wwrite-strings \
+	-pipe -g -arch $(CLANG_ARCH) -D__$(ENDIANESS)__
 
 LFLAGS = -M -N $(SOFTINT_PREFIX)/libsoftint.a
Index: uspace/lib/libc/generic/loader.c
===================================================================
--- uspace/lib/libc/generic/loader.c	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/generic/loader.c	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -183,5 +183,5 @@
  *
  */
-int loader_set_args(loader_t *ldr, char *const argv[])
+int loader_set_args(loader_t *ldr, const char *const argv[])
 {
 	/*
@@ -189,5 +189,5 @@
 	 * compute size of the buffer needed.
 	 */
-	char *const *ap = argv;
+	const char *const *ap = argv;
 	size_t buffer_size = 0;
 	while (*ap != NULL) {
Index: uspace/lib/libc/generic/sysinfo.c
===================================================================
--- uspace/lib/libc/generic/sysinfo.c	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/generic/sysinfo.c	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -37,7 +37,7 @@
 #include <string.h>
 
-sysarg_t sysinfo_value(char *name)
+sysarg_t sysinfo_value(const char *name)
 {
-	return __SYSCALL2(SYS_SYSINFO_VALUE, (sysarg_t ) name,
+	return __SYSCALL2(SYS_SYSINFO_VALUE, (sysarg_t) name,
 	    (sysarg_t) str_size(name));
 }
Index: uspace/lib/libc/generic/task.c
===================================================================
--- uspace/lib/libc/generic/task.c	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/generic/task.c	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -76,5 +76,5 @@
  *
  */
-task_id_t task_spawn(const char *path, char *const args[])
+task_id_t task_spawn(const char *path, const char *const args[])
 {
 	/* Connect to a program loader. */
Index: uspace/lib/libc/generic/thread.c
===================================================================
--- uspace/lib/libc/generic/thread.c	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/generic/thread.c	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -86,5 +86,5 @@
  * @return Zero on success or a code from @ref errno.h on failure.
  */
-int thread_create(void (* function)(void *), void *arg, char *name,
+int thread_create(void (* function)(void *), void *arg, const char *name,
     thread_id_t *tid)
 {
Index: uspace/lib/libc/include/loader/loader.h
===================================================================
--- uspace/lib/libc/include/loader/loader.h	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/include/loader/loader.h	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -51,5 +51,5 @@
 extern int loader_set_cwd(loader_t *);
 extern int loader_set_pathname(loader_t *, const char *);
-extern int loader_set_args(loader_t *, char *const[]);
+extern int loader_set_args(loader_t *, const char *const[]);
 extern int loader_set_files(loader_t *, fdi_node_t *const[]);
 extern int loader_load_program(loader_t *);
Index: uspace/lib/libc/include/sysinfo.h
===================================================================
--- uspace/lib/libc/include/sysinfo.h	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/include/sysinfo.h	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -40,5 +40,5 @@
 #include <string.h>
 
-sysarg_t sysinfo_value(char *name);
+sysarg_t sysinfo_value(const char *name);
 
 #endif
Index: uspace/lib/libc/include/task.h
===================================================================
--- uspace/lib/libc/include/task.h	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/include/task.h	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -47,5 +47,5 @@
 extern task_id_t task_get_id(void);
 extern int task_set_name(const char *name);
-extern task_id_t task_spawn(const char *path, char *const argv[]);
+extern task_id_t task_spawn(const char *path, const char *const argv[]);
 extern int task_wait(task_id_t id, task_exit_t *texit, int *retval);
 extern int task_retval(int val);
Index: uspace/lib/libc/include/thread.h
===================================================================
--- uspace/lib/libc/include/thread.h	(revision a634485c00ca23ba2df2fecef2d928929debee43)
+++ uspace/lib/libc/include/thread.h	(revision aadf01ebd2c032bc8dd43a6e06ae5715e6c2710f)
@@ -45,5 +45,5 @@
 extern void __thread_main(uspace_arg_t *);
 
-extern int thread_create(void (*)(void *), void *, char *, thread_id_t *);
+extern int thread_create(void (*)(void *), void *, const char *, thread_id_t *);
 extern void thread_exit(int) __attribute__ ((noreturn));
 extern void thread_detach(thread_id_t);
