Home | History | Annotate | Download | only in COFF
      1 // Test section manipulation via .linkonce directive.
      2 //
      3 // RUN: llvm-mc -triple i386-pc-win32 -filetype=obj %s | llvm-readobj -s -t | FileCheck %s
      4 // RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -s -t | FileCheck %s
      5 
      6 .section s1
      7 .linkonce
      8 .long 1
      9 
     10 .section s2
     11 .linkonce one_only
     12 .long 1
     13 
     14 .section s3
     15 .linkonce discard
     16 .long 1
     17 
     18 .section s4
     19 .linkonce same_size
     20 .long 1
     21 
     22 .section s5
     23 .linkonce same_contents
     24 .long 1
     25 
     26 .section s6
     27 .linkonce associative s1
     28 .long 1
     29 
     30 .section s7
     31 .linkonce largest
     32 .long 1
     33 
     34 .section s8
     35 .linkonce newest
     36 .long 1
     37 
     38 .section .foo$bar
     39 .linkonce discard
     40 .long 1
     41 
     42 // Check that valid '.section' names can be associated.
     43 .section multi
     44 .linkonce associative .foo$bar
     45 .long 1
     46 
     47 
     48 // CHECK: Sections [
     49 // CHECK:   Section {
     50 // CHECK:     Name: s1
     51 // CHECK:     Characteristics [
     52 // CHECK:       IMAGE_SCN_LNK_COMDAT
     53 // CHECK:     ]
     54 // CHECK:   }
     55 // CHECK:   Section {
     56 // CHECK:     Name: s2
     57 // CHECK:     Characteristics [
     58 // CHECK:       IMAGE_SCN_LNK_COMDAT
     59 // CHECK:     ]
     60 // CHECK:   }
     61 // CHECK:   Section {
     62 // CHECK:     Name: s3
     63 // CHECK:     Characteristics [
     64 // CHECK:       IMAGE_SCN_LNK_COMDAT
     65 // CHECK:     ]
     66 // CHECK:   }
     67 // CHECK:   Section {
     68 // CHECK:     Name: s4
     69 // CHECK:     Characteristics [
     70 // CHECK:       IMAGE_SCN_LNK_COMDAT
     71 // CHECK:     ]
     72 // CHECK:   }
     73 // CHECK:   Section {
     74 // CHECK:     Name: s5
     75 // CHECK:     Characteristics [
     76 // CHECK:       IMAGE_SCN_LNK_COMDAT
     77 // CHECK:     ]
     78 // CHECK:   }
     79 // CHECK:   Section {
     80 // CHECK:     Name: s6
     81 // CHECK:     Characteristics [
     82 // CHECK:       IMAGE_SCN_LNK_COMDAT
     83 // CHECK:     ]
     84 // CHECK:   }
     85 // CHECK:   Section {
     86 // CHECK:     Name: s7
     87 // CHECK:     Characteristics [
     88 // CHECK:       IMAGE_SCN_LNK_COMDAT
     89 // CHECK:     ]
     90 // CHECK:   }
     91 // CHECK:   Section {
     92 // CHECK:     Name: s8
     93 // CHECK:     Characteristics [
     94 // CHECK:       IMAGE_SCN_LNK_COMDAT
     95 // CHECK:     ]
     96 // CHECK:   }
     97 // CHECK:   Section {
     98 // CHECK:     Name: multi
     99 // CHECK:     Characteristics [
    100 // CHECK:       IMAGE_SCN_LNK_COMDAT
    101 // CHECK:     ]
    102 // CHECK:   }
    103 // CHECK: ]
    104 // CHECK: Symbols [
    105 // CHECK:   Symbol {
    106 // CHECK:     Name: s1
    107 // CHECK:     Section: s1 (1)
    108 // CHECK:     AuxSectionDef {
    109 // CHECK:       Number: 1
    110 // CHECK:       Selection: Any (0x2)
    111 // CHECK:     }
    112 // CHECK:   }
    113 // CHECK:   Symbol {
    114 // CHECK:     Name: s2
    115 // CHECK:     Section: s2 (2)
    116 // CHECK:     AuxSectionDef {
    117 // CHECK:       Number: 2
    118 // CHECK:       Selection: NoDuplicates (0x1)
    119 // CHECK:     }
    120 // CHECK:   }
    121 // CHECK:   Symbol {
    122 // CHECK:     Name: s3
    123 // CHECK:     Section: s3 (3)
    124 // CHECK:     AuxSectionDef {
    125 // CHECK:       Number: 3
    126 // CHECK:       Selection: Any (0x2)
    127 // CHECK:     }
    128 // CHECK:   }
    129 // CHECK:   Symbol {
    130 // CHECK:     Name: s4
    131 // CHECK:     Section: s4 (4)
    132 // CHECK:     AuxSectionDef {
    133 // CHECK:       Number: 4
    134 // CHECK:       Selection: SameSize (0x3)
    135 // CHECK:     }
    136 // CHECK:   }
    137 // CHECK:   Symbol {
    138 // CHECK:     Name: s5
    139 // CHECK:     Section: s5 (5)
    140 // CHECK:     AuxSectionDef {
    141 // CHECK:       Number: 5
    142 // CHECK:       Selection: ExactMatch (0x4)
    143 // CHECK:     }
    144 // CHECK:   }
    145 // CHECK:   Symbol {
    146 // CHECK:     Name: s6
    147 // CHECK:     Section: s6 (6)
    148 // CHECK:     AuxSectionDef {
    149 // CHECK:       Number: 1
    150 // CHECK:       Selection: Associative (0x5)
    151 // CHECK:       AssocSection: s1
    152 // CHECK:     }
    153 // CHECK:   }
    154 // CHECK:   Symbol {
    155 // CHECK:     Name: s7
    156 // CHECK:     Section: s7 (7)
    157 // CHECK:     AuxSectionDef {
    158 // CHECK:       Number: 7
    159 // CHECK:       Selection: Largest (0x6)
    160 // CHECK:     }
    161 // CHECK:   }
    162 // CHECK:   Symbol {
    163 // CHECK:     Name: s8
    164 // CHECK:     Section: s8 (8)
    165 // CHECK:     AuxSectionDef {
    166 // CHECK:       Number: 8
    167 // CHECK:       Selection: Newest (0x7)
    168 // CHECK:     }
    169 // CHECK:   }
    170 // CHECK:   Symbol {
    171 // CHECK:     Name: multi
    172 // CHECK:     Value: 0
    173 // CHECK:     Section: multi (10)
    174 // CHECK:     AuxSectionDef {
    175 // CHECK:       Number: 9
    176 // CHECK:       Selection: Associative (0x5)
    177 // CHECK:       AssocSection: .foo$bar
    178 // CHECK:     }
    179 // CHECK:   }
    180