diff --git a/configs/eagle100/httpd/Make.defs b/configs/eagle100/httpd/Make.defs
index cc0cba87a3c79a1918e93633e1dbbd9e17fe653e..c2081bd72f16182b655a5d1df3be3962143295a0 100644
--- a/configs/eagle100/httpd/Make.defs
+++ b/configs/eagle100/httpd/Make.defs
@@ -54,23 +54,13 @@ OBJDUMP			= $(CROSSDEV)objdump
 ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
 ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
 
-ARCHCFLAGS		= -fno-builtin
-ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
-ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
-ARCHWARNINGSXX		= -Wall -Wshadow
-
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHCPUFLAGS		= -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/httpd/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK 		= $(TOPDIR)/tools/winlink.sh
@@ -80,8 +70,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/httpd/ld.script}"
+  MAXOPTIMIZATION	= -O2
 endif
 
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS		= -fno-builtin
+ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
+ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX		= -Wall -Wshadow
 ARCHDEFINES		=
 ARCHPICFLAGS		= -fpic
 
diff --git a/configs/eagle100/httpd/ld.script b/configs/eagle100/httpd/ld.script
index 40b2681f4ac2138151ed21209a44104fa7ba44a5..0063eb39fd1a8369c1c4582ce52e97388abe3203 100644
--- a/configs/eagle100/httpd/ld.script
+++ b/configs/eagle100/httpd/ld.script
@@ -83,7 +83,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {			/* BSS				*/
diff --git a/configs/eagle100/httpd/setenv.sh b/configs/eagle100/httpd/setenv.sh
index 3fa717db2891e0ed678d97928a314a7ddf71f3bc..337ecc9676972743590ae15252916a32c892d712 100755
--- a/configs/eagle100/httpd/setenv.sh
+++ b/configs/eagle100/httpd/setenv.sh
@@ -37,10 +37,10 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export PATH=${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export PATH="${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/eagle100/nettest/Make.defs b/configs/eagle100/nettest/Make.defs
index acca26e576228e58a9c17eaab6b506ee0546e92a..fd2d3cb51dd5ffa370b632352346a50bae3898fc 100644
--- a/configs/eagle100/nettest/Make.defs
+++ b/configs/eagle100/nettest/Make.defs
@@ -54,23 +54,13 @@ OBJDUMP			= $(CROSSDEV)objdump
 ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
 ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
 
-ARCHCFLAGS		= -fno-builtin
-ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
-ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
-ARCHWARNINGSXX		= -Wall -Wshadow
-
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHCPUFLAGS		= -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nettest/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK 		= $(TOPDIR)/tools/winlink.sh
@@ -80,8 +70,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nettest/ld.script}"
+  MAXOPTIMIZATION	= -O2
 endif
 
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS		= -fno-builtin
+ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
+ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX		= -Wall -Wshadow
 ARCHDEFINES		=
 ARCHPICFLAGS		= -fpic
 
diff --git a/configs/eagle100/nettest/ld.script b/configs/eagle100/nettest/ld.script
index 6ed7a76c04fa8d69e7dc5504f4454c708f64c171..91ac6f57e6e1acc3e360470daaf60c96949f14f6 100644
--- a/configs/eagle100/nettest/ld.script
+++ b/configs/eagle100/nettest/ld.script
@@ -83,7 +83,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {			/* BSS				*/
diff --git a/configs/eagle100/nettest/setenv.sh b/configs/eagle100/nettest/setenv.sh
index d422fcad08d39fa5798ed704075c05fb67cb87f1..555e6b553a9cc4c74d06758a899bf744a77312fc 100755
--- a/configs/eagle100/nettest/setenv.sh
+++ b/configs/eagle100/nettest/setenv.sh
@@ -37,10 +37,10 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export PATH=${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export PATH="${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/eagle100/nsh/Make.defs b/configs/eagle100/nsh/Make.defs
index 9527be6e408a7ec8e335885808165ff2ecb1f91e..f9478831698df5e92032050bf823885f80fbe54c 100644
--- a/configs/eagle100/nsh/Make.defs
+++ b/configs/eagle100/nsh/Make.defs
@@ -54,23 +54,13 @@ OBJDUMP			= $(CROSSDEV)objdump
 ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
 ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
 
-ARCHCFLAGS		= -fno-builtin
-ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
-ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
-ARCHWARNINGSXX		= -Wall -Wshadow
-
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHCPUFLAGS		= -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK 		= $(TOPDIR)/tools/winlink.sh
@@ -80,8 +70,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script}"
+  MAXOPTIMIZATION	= -O2
 endif
 
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS		= -fno-builtin
+ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
+ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX		= -Wall -Wshadow
 ARCHDEFINES		=
 ARCHPICFLAGS		= -fpic
 
diff --git a/configs/eagle100/nsh/ld.script b/configs/eagle100/nsh/ld.script
index c4067e923bdcb88abfbf18a269a0bbe7813c882b..5a8fdc472a35097757e24374a3cab6d8a317e035 100644
--- a/configs/eagle100/nsh/ld.script
+++ b/configs/eagle100/nsh/ld.script
@@ -83,7 +83,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {			/* BSS				*/
diff --git a/configs/eagle100/nsh/setenv.sh b/configs/eagle100/nsh/setenv.sh
index 3b9ef57d0aa874ec8bfefe7fd7b02dbaf870dc7d..6e487c2a358c8437b5b930fd6eea7247f6fd8351 100755
--- a/configs/eagle100/nsh/setenv.sh
+++ b/configs/eagle100/nsh/setenv.sh
@@ -37,10 +37,10 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export PATH=${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export PATH="${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/eagle100/ostest/Make.defs b/configs/eagle100/ostest/Make.defs
index 10c344e25a7adfb45031caecd3e5ee162ec45f23..5794cf6c372cb8b2d3e66cfa7eba25f8734dbe14 100644
--- a/configs/eagle100/ostest/Make.defs
+++ b/configs/eagle100/ostest/Make.defs
@@ -54,23 +54,13 @@ OBJDUMP			= $(CROSSDEV)objdump
 ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
 ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
 
-ARCHCFLAGS		= -fno-builtin
-ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
-ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
-ARCHWARNINGSXX		= -Wall -Wshadow
-
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHCPUFLAGS		= -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK 		= $(TOPDIR)/tools/winlink.sh
@@ -80,8 +70,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script}"
+  MAXOPTIMIZATION	= -O2
 endif
 
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS		= -fno-builtin
+ARCHCXXFLAGS		= -fno-builtin -fno-exceptions
+ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX		= -Wall -Wshadow
 ARCHDEFINES		=
 ARCHPICFLAGS		= -fpic
 
diff --git a/configs/eagle100/ostest/ld.script b/configs/eagle100/ostest/ld.script
index 49eb7d8cf49aaed81e397abd2fc1c30ab6a8aff1..7c1d8f1bfbf1a0b8c134bc2afd4396a91acb6329 100644
--- a/configs/eagle100/ostest/ld.script
+++ b/configs/eagle100/ostest/ld.script
@@ -83,7 +83,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {			/* BSS				*/
diff --git a/configs/eagle100/ostest/setenv.sh b/configs/eagle100/ostest/setenv.sh
index eb2a54b60eb6bed9be5b4ad8a0cce6d2aa9fb10c..b370ce372639c1934a50a3cd9766a8446de7ad3a 100755
--- a/configs/eagle100/ostest/setenv.sh
+++ b/configs/eagle100/ostest/setenv.sh
@@ -37,10 +37,10 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export PATH=${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export PATH="${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/mcu123-lpc214x/nsh/Make.defs b/configs/mcu123-lpc214x/nsh/Make.defs
index 57f621ef7b814740528908be7c849a6c087250c1..00c75988aa4dc1a2d206120b8d8f57c026927d86 100644
--- a/configs/mcu123-lpc214x/nsh/Make.defs
+++ b/configs/mcu123-lpc214x/nsh/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/mcu123-lpc214x/nsh/ld.script b/configs/mcu123-lpc214x/nsh/ld.script
index dfc44db5e1b8138af4ed0d0b3d1d79e19ea8665d..fed8016994ea7b7e8b5a80c8f5d641732838061f 100644
--- a/configs/mcu123-lpc214x/nsh/ld.script
+++ b/configs/mcu123-lpc214x/nsh/ld.script
@@ -90,7 +90,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/mcu123-lpc214x/nsh/setenv.sh b/configs/mcu123-lpc214x/nsh/setenv.sh
index 5b8fc1108684a108ebf39e3dcd323ed0ca7dca97..7a79f8fcbda1be3c3deeff677728c163dd356126 100755
--- a/configs/mcu123-lpc214x/nsh/setenv.sh
+++ b/configs/mcu123-lpc214x/nsh/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/mcu123-lpc2148/nsh/setenv.sh
 #
-#   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export LPC214XSCRIPTS=$WD/configs/mcu123-lpc214x/scripts
-export PATH=${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export LPC214XSCRIPTS="$WD/configs/mcu123-lpc214x/scripts"
+export PATH="${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/mcu123-lpc214x/ostest/Make.defs b/configs/mcu123-lpc214x/ostest/Make.defs
index 1d5ededb04e25c7db802ffae997908f38d4dc5ad..96b4873bde5d55952c0f7de1ffbc6f6b0df795ad 100644
--- a/configs/mcu123-lpc214x/ostest/Make.defs
+++ b/configs/mcu123-lpc214x/ostest/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/mcu123-lpc214x/ostest/ld.script b/configs/mcu123-lpc214x/ostest/ld.script
index 344fdd6d1eb68408bda6358806b6abd513f298e9..fe3db69415e9613cec7693fc0fc465b503133dc1 100644
--- a/configs/mcu123-lpc214x/ostest/ld.script
+++ b/configs/mcu123-lpc214x/ostest/ld.script
@@ -46,8 +46,8 @@
 
 MEMORY
 {
-    flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
-    sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
+	flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
+	sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
 }
 
 OUTPUT_ARCH(arm)
@@ -90,7 +90,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/mcu123-lpc214x/ostest/setenv.sh b/configs/mcu123-lpc214x/ostest/setenv.sh
index fa840b656bc6a9d947cdc161e593a87dcf9efba4..c4b3b42bd23861e73f1b68dd6cd27540face1178 100755
--- a/configs/mcu123-lpc214x/ostest/setenv.sh
+++ b/configs/mcu123-lpc214x/ostest/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/mcu123-lpc2148/ostest/setenv.sh
 #
-#   Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export LPC214XSCRIPTS=$WD/configs/mcu123-lpc214x/scripts
-export PATH=${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export LPC214XSCRIPTS="$WD/configs/mcu123-lpc214x/scripts"
+export PATH="${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/mcu123-lpc214x/usbserial/Make.defs b/configs/mcu123-lpc214x/usbserial/Make.defs
index 8df0be01087c25756d029bf18fcbf72d2450611f..3b6c201c0bc6719c57bef0d221f6e35caf26a2b6 100644
--- a/configs/mcu123-lpc214x/usbserial/Make.defs
+++ b/configs/mcu123-lpc214x/usbserial/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbserial/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbserial/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/mcu123-lpc214x/usbserial/ld.script b/configs/mcu123-lpc214x/usbserial/ld.script
index bcfb4c738906ee9bf10ee64e69c124a11342dd7b..34e22fba6409cdb9202c1e3a75cde71ce55b896e 100644
--- a/configs/mcu123-lpc214x/usbserial/ld.script
+++ b/configs/mcu123-lpc214x/usbserial/ld.script
@@ -46,8 +46,8 @@
 
 MEMORY
 {
-    flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
-    sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
+	flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
+	sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
 }
 
 OUTPUT_ARCH(arm)
@@ -90,7 +90,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/mcu123-lpc214x/usbserial/setenv.sh b/configs/mcu123-lpc214x/usbserial/setenv.sh
index fe9114e63a357a8deaebb4df62dbd15cb8df2f64..f68750d884b812935b4c7c8eb62e6ae286c726bd 100755
--- a/configs/mcu123-lpc214x/usbserial/setenv.sh
+++ b/configs/mcu123-lpc214x/usbserial/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/mcu123-lpc2148/usbserial/setenv.sh
 #
-#   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export LPC214XSCRIPTS=$WD/configs/mcu123-lpc214x/scripts
-export PATH=${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export LPC214XSCRIPTS="$WD/configs/mcu123-lpc214x/scripts"
+export PATH="${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/mcu123-lpc214x/usbstorage/Make.defs b/configs/mcu123-lpc214x/usbstorage/Make.defs
index bdde83ef5f241de6542796b3771818f70951ee08..e544917d4f2fa59d582cc439b5cd66045b7afbe9 100644
--- a/configs/mcu123-lpc214x/usbstorage/Make.defs
+++ b/configs/mcu123-lpc214x/usbstorage/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbstorage/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbstorage/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/mcu123-lpc214x/usbstorage/ld.script b/configs/mcu123-lpc214x/usbstorage/ld.script
index 2236cd7ca6caed428427aa24374eb8cd3181bfa7..54bb21ee6751608d5039cca070c186ada027f11f 100644
--- a/configs/mcu123-lpc214x/usbstorage/ld.script
+++ b/configs/mcu123-lpc214x/usbstorage/ld.script
@@ -46,8 +46,8 @@
 
 MEMORY
 {
-    flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
-    sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
+	flash (rx) : ORIGIN = 0x00000000, LENGTH = 500K
+	sram  (rw) : ORIGIN = 0x40000000, LENGTH = 32K - 32
 }
 
 OUTPUT_ARCH(arm)
@@ -90,7 +90,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/mcu123-lpc214x/usbstorage/setenv.sh b/configs/mcu123-lpc214x/usbstorage/setenv.sh
index f5ca5a07e35b1a78352262e0f8121de03968db63..4be2cb49ab77cab1dcdf1a8c7c7498856c70ddca 100755
--- a/configs/mcu123-lpc214x/usbstorage/setenv.sh
+++ b/configs/mcu123-lpc214x/usbstorage/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/mcu123-lpc2148/usbstorage/setenv.sh
 #
-#   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export LPC214XSCRIPTS=$WD/configs/mcu123-lpc214x/scripts
-export PATH=${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export LPC214XSCRIPTS="$WD/configs/mcu123-lpc214x/scripts"
+export PATH="${BUILDROOT_BIN}:${LPC214XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/olimex-strp711/nsh/Make.defs b/configs/olimex-strp711/nsh/Make.defs
index bb6d5dace319b8885a630e166c0f1ed52aea34dc..762ff0d2fa26a47faa86b32cb3252d50d08addec 100644
--- a/configs/olimex-strp711/nsh/Make.defs
+++ b/configs/olimex-strp711/nsh/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/olimex-strp711/nsh/ld.script b/configs/olimex-strp711/nsh/ld.script
index 34c7a4edb05cb579de84357c0c85df3cc9eae12f..a4ee85eabe914f13a39e17ce917989842e121e40 100644
--- a/configs/olimex-strp711/nsh/ld.script
+++ b/configs/olimex-strp711/nsh/ld.script
@@ -93,7 +93,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/olimex-strp711/nsh/setenv.sh b/configs/olimex-strp711/nsh/setenv.sh
index ec99e5205669aacc61a706735313bb33640d4d51..42fef8da64ffaf94e0d6aaaa97949f7ede465bbf 100755
--- a/configs/olimex-strp711/nsh/setenv.sh
+++ b/configs/olimex-strp711/nsh/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/olimex-strp711/nsh/setenv.sh
 #
-#   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export STR41XSCRIPTS=$WD/configs/olimex-strp711/scripts
-export PATH=${BUILDROOT_BIN}:${STR41XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export STR41XSCRIPTS="$WD/configs/olimex-strp711/scripts"
+export PATH="${BUILDROOT_BIN}:${STR41XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/configs/olimex-strp711/ostest/Make.defs b/configs/olimex-strp711/ostest/Make.defs
index 56a973b570cc07cb75435d1437167d660f2c7f5d..86b33807b1aece17252232ed2aefd4bbf03c482f 100644
--- a/configs/olimex-strp711/ostest/Make.defs
+++ b/configs/olimex-strp711/ostest/Make.defs
@@ -62,23 +62,12 @@ OBJCOPYARGS		= -R .note -R .note.gnu.build-id -R .comment
 endif
 endif
 
-ifeq ("${CONFIG_DEBUG}","y")
-  ARCHOPTIMIZATION	= -g
-else
-  ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
-endif
-
-ifeq ($(ARCHCCMAJOR),4)
-  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
-else
-  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
-endif
-
 ifeq ($(CROSSDEV),arm-elf-)
   MKDEP			= $(TOPDIR)/tools/mkdeps.sh
   ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
   ARCHXXINCLUDES	= -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
   ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
+  MAXOPTIMIZATION	= -Os
 else
   WINTOOL		= y
   DIRLINK		= $(TOPDIR)/tools/winlink.sh
@@ -87,6 +76,19 @@ else
   ARCHINCLUDES		= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES	= -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT		= -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script}"
+  MAXOPTIMIZATION	= -O2
+endif
+
+ifeq ("${CONFIG_DEBUG}","y")
+  ARCHOPTIMIZATION	= -g
+else
+  ARCHOPTIMIZATION	= $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -mfloat-abi=soft
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float
 endif
 
 ARCHCFLAGS		= -fno-builtin
diff --git a/configs/olimex-strp711/ostest/ld.script b/configs/olimex-strp711/ostest/ld.script
index d19e51e82b88d8de664536f9ce5da90479bb1761..017d8f4dd5e299580d8f701fdb656f9f7d1d273f 100644
--- a/configs/olimex-strp711/ostest/ld.script
+++ b/configs/olimex-strp711/ostest/ld.script
@@ -93,7 +93,9 @@ SECTIONS
 	} >sram
 
 	.ARM.exidx : {
+		__exidx_start = ABSOLUTE(.);
 		*(.ARM.exidx*)
+		__exidx_end = ABSOLUTE(.);
 	} >sram
 
 	.bss : {
diff --git a/configs/olimex-strp711/ostest/setenv.sh b/configs/olimex-strp711/ostest/setenv.sh
index 0ebf1a2c90fdda7cedb0cf5214422d43762909ee..726ef404db7d745dad63edcaeb02013d9cc6822b 100755
--- a/configs/olimex-strp711/ostest/setenv.sh
+++ b/configs/olimex-strp711/ostest/setenv.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 # configs/olimex-strp711/ostest/setenv.sh
 #
-#   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,11 +37,11 @@ if [ "$(basename $0)" = "setenv.sh" ] ; then
   exit 1
 fi
 
-if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
 
 WD=`pwd`
-export BUILDROOT_BIN=${WD}/../buildroot/build_arm_nofpu/staging_dir/bin
-export STR41XSCRIPTS=$WD/configs/olimex-strp711/scripts
-export PATH=${BUILDROOT_BIN}:${STR41XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}
+export BUILDROOT_BIN="${WD}/../buildroot/build_arm_nofpu/staging_dir/bin"
+export STR41XSCRIPTS="$WD/configs/olimex-strp711/scripts"
+export PATH="${BUILDROOT_BIN}:${STR41XSCRIPTS}:/sbin:/usr/sbin:${PATH_ORIG}"
 
 echo "PATH : ${PATH}"
diff --git a/drivers/bch/bch_internal.h b/drivers/bch/bch_internal.h
index cef8a49b80f9ad399fc219bbacbf41dd1869dbbb..1a5ba58899008da7ca06bf88ed0b9a0b15aa3943 100644
--- a/drivers/bch/bch_internal.h
+++ b/drivers/bch/bch_internal.h
@@ -81,7 +81,7 @@ extern "C" {
 #define EXTERN extern
 #endif
 
-EXTERN struct file_operations bch_fops;
+EXTERN const struct file_operations bch_fops;
 
 /****************************************************************************
  * Public Function Prototypes
diff --git a/drivers/bch/bchdev_driver.c b/drivers/bch/bchdev_driver.c
index 42d9825db7253eb3c05e9570a0885a3280ff40ae..1258fec23a0fd058c35521225572f23901c7a619 100644
--- a/drivers/bch/bchdev_driver.c
+++ b/drivers/bch/bchdev_driver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * drivers/bch/bchdev_driver.c
  *
- *   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -78,7 +78,7 @@ static int     bch_ioctl(FAR struct file *filp, int cmd, unsigned long arg);
  * Public Data
  ****************************************************************************/
 
-static const struct file_operations bch_fops =
+const struct file_operations bch_fops =
 {
   bch_open,  /* open */
   bch_close, /* close */
diff --git a/include/stdlib.h b/include/stdlib.h
index 887a516fbe0f028cdd6a2e5a947b4871398ecabb..92437a574c822401d04f998a42d68d46130922fb 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -114,8 +114,8 @@ EXTERN int       unsetenv(const char *name);
 
 /* Process exit functions */
 
-EXTERN void      exit(int status);
-EXTERN void      abort(void);
+EXTERN void      exit(int status) noreturn_function;
+EXTERN void      abort(void) noreturn_function;
 EXTERN int       atexit(void (*func)(void));
 
 /* String to binary conversions */