gcc.rst
changeset 1905 fba288d59662
child 1912 8b81a8f0f692
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc.rst	Mon Feb 22 12:46:36 2016 +0200
@@ -0,0 +1,77 @@
+.. -*- coding: utf-8; -*-
+.. include:: HEADER.rst
+
+=====
+ GCC
+=====
+.. contents::
+   :local:
+
+Remove dead code
+================
+
+  STRIP_DEAD_CODE = -Wl,-static -fvtable-gc -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s
+
+  -Wl,-static
+                Link against static libraries. Required for dead-code
+                elimination.
+
+  -fvtable-gc
+                C++ virtual method table instrumented with garbage collection
+                information for the linker.
+
+  -fdata-sections
+                Keeps data in separate data sections, so they can be discarded
+                if unused.
+
+  -ffunction-sections
+                Keeps funcitons in separate data sections, so they can be
+                discarded if unused.
+
+  -Wl,--gc-sections
+                Tell the linker to garbage collect and discard unused
+                sections.
+
+  -s
+                Strip the debug information, so as to make the code as small
+                as possible. (I presume that you'd want to do this in a
+                dead-code removal build.)
+
+Map file
+========
+::
+
+  $ ld -Map=file.map <opts> <files>
+
+or::
+
+  $ gcc -Wl,-Map=file.map <opts> <files>
+
+Predefined macros
+=================
+::
+
+  $ gcc -arch ppc -dM -E - < /dev/null | sort
+
+Default search path
+===================
+
+  $ echo | gcc -v -x c -E -
+
+  $ gcc -print-search-dirs
+  install: ...
+  programs: ...
+  libraries: ...
+
+Use -### in actual invoking::
+
+  $ gcc -### -o foo foo.c
+
+  $ ld --verbose | grep SEARCH_DIR
+
+``LIBRARY_PATH`` and ``LD_LIBRARY_PATH``::
+
+  $ cpp -Wp,-v
+  $ cpp -Wp,-lang-c++,-v
+  $ cpp -x c++ -Wp,-v
+