alias-reloc.s   [plain text]


// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump  | FileCheck %s

// Test that this produces a R_X86_64_PLT32 with bar.

        .globl foo
foo:
bar = foo
        .section zed, "", @progbits
        call bar@PLT


// Test that this produres a relocation with bar2

    .weak    foo2
foo2:
    .weak    bar2
    .set    bar2,foo2
    .quad    bar2

// CHECK:       # Relocation 0
// CHECK-NEXT:  (('r_offset', 0x0000000000000001)
// CHECK-NEXT:   ('r_sym', 0x00000001)
// CHECK-NEXT:   ('r_type', 0x00000004)
// CHECK-NEXT:   ('r_addend', 0xfffffffffffffffc)
// CHECK-NEXT:  ),

// CHECK:      # Relocation 1
// CHECK-NEXT: (('r_offset', 0x0000000000000005)
// CHECK-NEXT:  ('r_sym', 0x00000006)
// CHECK-NEXT:  ('r_type', 0x00000001)
// CHECK-NEXT:  ('r_addend', 0x0000000000000000)
// CHECK-NEXT: ),

// CHECK:       # Symbol 1
// CHECK-NEXT:  (('st_name', 0x00000005) # 'bar'
// CHECK-NEXT:   ('st_bind', 0x0)
// CHECK-NEXT:   ('st_type', 0x0)
// CHECK-NEXT:   ('st_other', 0x00)
// CHECK-NEXT:   ('st_shndx', 0x0001)
// CHECK-NEXT:   ('st_value', 0x0000000000000000)
// CHECK-NEXT:   ('st_size', 0x0000000000000000)
// CHECK-NEXT:  ),

// CHECK:      # Symbol 6
// CHECK-NEXT: (('st_name', 0x0000000e) # 'bar2'
// CHECK-NEXT:  ('st_bind', 0x2)
// CHECK-NEXT:  ('st_type', 0x0)
// CHECK-NEXT:  ('st_other', 0x00)
// CHECK-NEXT:  ('st_shndx', 0x0004)
// CHECK-NEXT:  ('st_value', 0x0000000000000005)
// CHECK-NEXT:  ('st_size', 0x0000000000000000)
// CHECK-NEXT: ),