blob: 925d7279bfaef13127e51f284d34e751ee4beb02 [file] [log] [blame]
Nico Rieck18d49ac2013-04-10 23:28:17 +00001===============
2LLVM Extensions
3===============
4
5.. contents::
6 :local:
Nico Rieck18d49ac2013-04-10 23:28:17 +00007
8.. toctree::
9 :hidden:
10
11Introduction
12============
13
14This document describes extensions to tools and formats LLVM seeks compatibility
15with.
16
Tim Northover003f93f2013-08-14 15:27:20 +000017General 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
Benjamin Kramer17a54572013-08-14 16:18:47 +000027
Tim Northover003f93f2013-08-14 15:27:20 +000028 .section .data
29 .float 0x1c2.2ap3
30
Nico Rieck18d49ac2013-04-10 23:28:17 +000031Machine-specific Assembly Syntax
32================================
33
34X86/COFF-Dependent
35------------------
36
Nico Rieck80646282013-07-06 12:13:10 +000037Relocations
38^^^^^^^^^^^
39
Nico Rieck18d49ac2013-04-10 23:28:17 +000040The 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
Nico Rieck80646282013-07-06 12:13:10 +000056
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 ...