gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 07 Dec 2009 00:00:18 +0200
changeset 246 56362e0a859d
parent 194 c9a5f5dad40d
child 352 2f4c25b2b493
permissions -rw-r--r--
About audio.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
194
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     1
-*- mode: outline; coding: utf-8 -*-
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     2
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     3
* Remove dead code.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     4
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     5
  STRIP_DEAD_CODE = -Wl,-static -fvtable-gc -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     6
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     7
  -Wl,-static
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     8
                Link against static libraries. Required for dead-code
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     9
                elimination.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    10
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    11
  -fvtable-gc
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    12
                C++ virtual method table instrumented with garbage collection
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    13
                information for the linker.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    14
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    15
  -fdata-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    16
                Keeps data in separate data sections, so they can be discarded
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    17
                if unused.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    18
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    19
  -ffunction-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    20
                Keeps funcitons in separate data sections, so they can be
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    21
                discarded if unused.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    22
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    23
  -Wl,--gc-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    24
                Tell the linker to garbage collect and discard unused
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    25
                sections.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    26
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    27
  -s
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    28
                Strip the debug information, so as to make the code as small
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    29
                as possible. (I presume that you'd want to do this in a
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    30
                dead-code removal build.)
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    31
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    32
* Map file.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    33
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    34
  $ ld -Map=file.map <opts> <files>
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    35
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    36
or
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    37
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    38
  $ gcc -Wl,-Map=file.map <opts> <files>