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