Revert "Run clang-format on file."
[oota-llvm.git] / docs / Extensions.rst
1 ===============
2 LLVM Extensions
3 ===============
4
5 .. contents::
6    :local:
7
8 .. toctree::
9    :hidden:
10
11 Introduction
12 ============
13
14 This document describes extensions to tools and formats LLVM seeks compatibility
15 with.
16
17 General Assembly Syntax
18 ===========================
19
20 C99-style Hexadecimal Floating-point Constants
21 ----------------------------------------------
22
23 LLVM's assemblers allow floating-point constants to be written in C99's
24 hexadecimal format instead of decimal if desired.
25
26 .. code-block:: gas
27
28   .section .data
29   .float 0x1c2.2ap3
30
31 Machine-specific Assembly Syntax
32 ================================
33
34 X86/COFF-Dependent
35 ------------------
36
37 Relocations
38 ^^^^^^^^^^^
39
40 The following additional relocation type is supported:
41
42 **@IMGREL** (AT&T syntax only) generates an image-relative relocation that
43 corresponds to the COFF relocation types ``IMAGE_REL_I386_DIR32NB`` (32-bit) or
44 ``IMAGE_REL_AMD64_ADDR32NB`` (64-bit).
45
46 .. code-block:: gas
47
48   .text
49   fun:
50     mov foo@IMGREL(%ebx, %ecx, 4), %eax
51
52   .section .pdata
53     .long fun@IMGREL
54     .long (fun@imgrel + 0x3F)
55     .long $unwind$fun@imgrel
56
57
58 ``.linkonce`` Directive
59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
60
61 Syntax:
62
63    ``.linkonce [ comdat type [ section identifier ] ]``
64
65 Supported COMDAT types:
66
67 ``discard``
68    Discards duplicate sections with the same COMDAT symbol. This is the default
69    if no type is specified.
70
71 ``one_only``
72    If the symbol is defined multiple times, the linker issues an error.
73
74 ``same_size``
75    Duplicates are discarded, but the linker issues an error if any have
76    different sizes.
77
78 ``same_contents``
79    Duplicates are discarded, but the linker issues an error if any duplicates
80    do not have exactly the same content.
81
82 ``associative``
83    Links the section if a certain other COMDAT section is linked. This other
84    section is indicated by its section identifier following the comdat type.
85    The following restrictions apply to the associated section:
86
87    1. It must be the name of a section already defined.
88    2. It must differ from the current section.
89    3. It must be a COMDAT section.
90    4. It cannot be another associative COMDAT section.
91
92 ``largest``
93    Links the largest section from among the duplicates.
94
95 ``newest``
96    Links the newest section from among the duplicates.
97
98
99 .. code-block:: gas
100
101   .section .text$foo
102   .linkonce
103     ...
104
105   .section .xdata$foo
106   .linkonce associative .text$foo
107     ...