reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
# RUN: rm -rf %t && mkdir -p %t && cd %t
# RUN: llvm-mc -triple=x86_64-unknown-freebsd -filetype=obj -o t.o %s
# RUN: llvm-rtdyld -triple=x86_64-unknown-linux -verify -check=%s t.o -dummy-extern=extern_data=0x4200000000

# Generated from this C source:
#
# static int static_data[10];
# int global_data[10] = {1, 2};
# extern int extern_data[10];
#
# int *lea_static_data() { return &static_data[0]; }
# int *lea_global_data() { return &global_data[0]; }
# int *lea_extern_data() { return &extern_data[0]; }

        .text
        .file   "model.c"
        .globl  lea_static_data         # -- Begin function lea_static_data
        .p2align        4, 0x90
        .type   lea_static_data,@function
lea_static_data:                        # @lea_static_data
        .cfi_startproc
# %bb.0:
.Ltmp0:
        leaq    .Ltmp0(%rip), %rcx
# rtdyld-check: decode_operand(lea_static_got, 1) = section_addr(t.o, .got) - lea_static_data
lea_static_got:
        movabsq $_GLOBAL_OFFSET_TABLE_-.Ltmp0, %rax
        addq    %rax, %rcx
# rtdyld-check: decode_operand(lea_static_gotoff, 1) = static_data - section_addr(t.o, .got)
lea_static_gotoff:
        movabsq $static_data@GOTOFF, %rax
        addq    %rcx, %rax
        retq
.Lfunc_end0:
        .size   lea_static_data, .Lfunc_end0-lea_static_data
        .cfi_endproc


        .globl  lea_global_data         # -- Begin function lea_global_data
        .p2align        4, 0x90
        .type   lea_global_data,@function
lea_global_data:                        # @lea_global_data
        .cfi_startproc
# %bb.0:
.Ltmp1:
        leaq    .Ltmp1(%rip), %rcx
# rtdyld-check: decode_operand(lea_global_got, 1) = section_addr(t.o, .got) - lea_global_data
lea_global_got:
        movabsq $_GLOBAL_OFFSET_TABLE_-.Ltmp1, %rax
        addq    %rax, %rcx
# rtdyld-check: decode_operand(lea_global_gotoff, 1) = global_data - section_addr(t.o, .got)
lea_global_gotoff:
        movabsq $global_data@GOTOFF, %rax
        addq    %rcx, %rax
        retq
.Lfunc_end1:
        .size   lea_global_data, .Lfunc_end1-lea_global_data
        .cfi_endproc


        .globl  lea_extern_data         # -- Begin function lea_extern_data
        .p2align        4, 0x90
        .type   lea_extern_data,@function
lea_extern_data:                        # @lea_extern_data
        .cfi_startproc
# %bb.0:
.Ltmp2:
        leaq    .Ltmp2(%rip), %rax
# rtdyld-check: decode_operand(lea_extern_got, 1) = section_addr(t.o, .got) - lea_extern_data
lea_extern_got:
        movabsq $_GLOBAL_OFFSET_TABLE_-.Ltmp2, %rcx
        addq    %rcx, %rax
# extern_data is the only thing in the GOT, so it'll be slot 0.
# rtdyld-check: decode_operand(lea_extern_gotslot, 1) = 0
lea_extern_gotslot:
        movabsq $extern_data@GOT, %rcx
        movq    (%rax,%rcx), %rax
        retq
.Lfunc_end2:
        .size   lea_extern_data, .Lfunc_end2-lea_extern_data
        .cfi_endproc


        .type   global_data,@object     # @global_data
        .data
        .globl  global_data
        .p2align        4
global_data:
        .long   1                       # 0x1
        .long   2                       # 0x2
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .long   0                       # 0x0
        .size   global_data, 40

        .type   static_data,@object     # @static_data
        .local  static_data
        .comm   static_data,40,16