zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

blob 381465f0 (2891B) - Raw


      1 // REQUIRES: x86
      2 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
      3 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/merge.s -o %t2.o
      4 // RUN: ld.lld %t.o %t2.o -o %t
      5 // RUN: llvm-readobj -S --section-data --symbols %t | FileCheck %s
      6 // RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
      7 
      8         .section        .mysec,"aM",@progbits,4
      9         .align  4
     10         .global foo
     11         .hidden foo
     12         .long   0x10
     13 foo:
     14         .long   0x42
     15 bar:
     16         .long   0x42
     17 zed:
     18         .long   0x42
     19 
     20 // CHECK:      Name: .mysec
     21 // CHECK-NEXT: Type: SHT_PROGBITS
     22 // CHECK-NEXT:    Flags [
     23 // CHECK-NEXT:      SHF_ALLOC
     24 // CHECK-NEXT:      SHF_MERGE
     25 // CHECK-NEXT:    ]
     26 // CHECK-NEXT:    Address: 0x200120
     27 // CHECK-NEXT:    Offset: 0x120
     28 // CHECK-NEXT:    Size: 8
     29 // CHECK-NEXT:    Link: 0
     30 // CHECK-NEXT:    Info: 0
     31 // CHECK-NEXT:    AddressAlignment: 4
     32 // CHECK-NEXT:    EntrySize: 4
     33 // CHECK-NEXT:    SectionData (
     34 // CHECK-NEXT:      0000: 10000000 42000000
     35 // CHECK-NEXT:    )
     36 
     37 
     38 // Address of the constant 0x10 = 0x200120 = 2097440
     39 // Address of the constant 0x42 = 0x200124 = 2097444
     40 
     41 // CHECK:      Symbols [
     42 
     43 // CHECK:        Name: bar
     44 // CHECK-NEXT:   Value: 0x200124
     45 // CHECK-NEXT:   Size: 0
     46 // CHECK-NEXT:   Binding: Loca
     47 // CHECK-NEXT:   Type: None
     48 // CHECK-NEXT:   Other: 0
     49 // CHECK-NEXT:   Section: .mysec
     50 
     51 // CHECK:        Name: zed
     52 // CHECK-NEXT:   Value: 0x200124
     53 // CHECK-NEXT:   Size: 0
     54 // CHECK-NEXT:   Binding: Local
     55 // CHECK-NEXT:   Type: None
     56 // CHECK-NEXT:   Other: 0
     57 // CHECK-NEXT:   Section: .mysec
     58 
     59 // CHECK:        Name: foo
     60 // CHECK-NEXT:   Value: 0x200124
     61 // CHECK-NEXT:   Size: 0
     62 // CHECK-NEXT:   Binding: Local
     63 // CHECK-NEXT:   Type: None
     64 // CHECK-NEXT:   Other [ (0x2)
     65 // CHECK-NEXT:     STV_HIDDEN
     66 // CHECK-NEXT:   ]
     67 // CHECK-NEXT:   Section: .mysec
     68 
     69  // CHECK: ]
     70 
     71         .text
     72         .globl  _start
     73 _start:
     74 // DISASM:      Disassembly of section .text:
     75 // DISASM-EMPTY:
     76 // DISASM-NEXT: _start:
     77 
     78         movl .mysec, %eax
     79 // addr(0x10) = 2097440
     80 // DISASM-NEXT:   movl    2097440, %eax
     81 
     82         movl .mysec+7, %eax
     83 // addr(0x42) + 3 = 2097444 + 3 = 2097447
     84 // DISASM-NEXT:   movl    2097447, %eax
     85 
     86         movl .mysec+8, %eax
     87 // addr(0x42) = 2097444
     88 // DISASM-NEXT:   movl    2097444, %eax
     89 
     90         movl bar+7, %eax
     91 // addr(0x42) + 7 = 2097444 + 7 = 2097451
     92 // DISASM-NEXT:   movl    2097451, %eax
     93 
     94         movl bar+8, %eax
     95 // addr(0x42) + 8 = 2097444 + 8 = 2097452
     96 // DISASM-NEXT:   movl    2097452, %eax
     97 
     98         movl foo, %eax
     99 // addr(0x42) = 2097444
    100 // DISASM-NEXT:   movl    2097444, %eax
    101 
    102         movl foo+7, %eax
    103 // addr(0x42) + 7 =  = 2097444 + 7 = 2097451
    104 // DISASM-NEXT:   movl    2097451, %eax
    105 
    106         movl foo+8, %eax
    107 // addr(0x42) + 8 =  = 2097444 + 8 = 2097452
    108 // DISASM-NEXT:   movl    2097452, %eax
    109 
    110 //  From the other file:  movl .mysec, %eax
    111 // addr(0x42) = 2097444
    112 // DISASM-NEXT:   movl    2097444, %eax