1===============
2LLVM Extensions
3===============
4
5.. contents::
6   :local:
7
8.. toctree::
9   :hidden:
10
11Introduction
12============
13
14This document describes extensions to tools and formats LLVM seeks compatibility
15with.
16
17General Assembly Syntax
18===========================
19
20C99-style Hexadecimal Floating-point Constants
21----------------------------------------------
22
23LLVM's assemblers allow floating-point constants to be written in C99's
24hexadecimal format instead of decimal if desired.
25
26.. code-block:: gas
27
28  .section .data
29  .float 0x1c2.2ap3
30
31Machine-specific Assembly Syntax
32================================
33
34X86/COFF-Dependent
35------------------
36
37Relocations
38^^^^^^^^^^^
39
40The following additional relocation type is supported:
41
42**@IMGREL** (AT&T syntax only) generates an image-relative relocation that
43corresponds 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
61Syntax:
62
63   ``.linkonce [ comdat type [ section identifier ] ]``
64
65Supported 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    ...
108