diff --git a/build.sh b/build.sh
index 8ca3208087f6a4729a1f8a991e86f08832a40a26..1532e586cb6574267bd97ae4fcd27f45294183ae 100755
--- a/build.sh
+++ b/build.sh
@@ -268,6 +268,10 @@ then
     else
       upload_item installer "$package" binary/octet-stream
       upload_item quicklink "$package" binary/octet-stream
+	  gzip $build_dir/newview/secondlife-bin-$arch.MAP
+	  mapfile=secondlife-bin-$arch.MAP.gz
+	  upload_item mapfile "$build_dir/newview/$mapfile" binary/octet-stream
+	  echo "Uploaded mapfile"
       [ -f summary.json ] && upload_item installer summary.json text/plain
 
       # Upload crash reporter files.
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 0be289052ce49b02079b19d2f2ba07aabec8846f..f2486adab32dc265a74f94657fe4de4e8c4b32a6 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1550,7 +1550,7 @@ if (WINDOWS)
         #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\""
         LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc "
         LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
-        LINK_FLAGS_RELEASE "/FORCE:MULTIPLE"
+        LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP:secondlife-bin-win32.MAP /OPT:REF"
         )
     if(USE_PRECOMPILED_HEADERS)
         set_target_properties(
@@ -1755,6 +1755,12 @@ if (WINDOWS)
         #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
 
     endif (PACKAGE)
+else (WINDOWS)
+	# Linux and Darwin
+    set_target_properties(${VIEWER_BINARY_NAME}
+        PROPERTIES
+        LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--Map=${VIEWER_BINARY_NAME}-${ARCH}.MAP"
+        )
 endif (WINDOWS)
 
 # *NOTE - this list is very sensitive to ordering, test carefully on all