Compiler projects using llvm
// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs - | FileCheck %s

        .data
        .long undef
        .long (undef + 4)

        .globl local_a_ext
local_a_ext:
        .long local_a_ext

local_a:
        .long 0
local_a_elt:
        .long 0
local_b:
        .long local_b - local_c + 245
        .long 0
local_c:
        .long 0


        .long local_a_elt + 1
        .long local_a_elt + 10
        .short local_a_elt + 20
        .byte local_a_elt + 89

        .const

        .long
bar:
        .long local_a_elt - bar + 33

L0:
        .long L0
        .long L1

        .text
_f0:
L1:
        jmp	0x7abecafe
        jmp L0
        jmp L1
        ret

        .objc_class_name_A=0
	.globl .objc_class_name_A

        .text
        .globl _f1
        .weak_definition _f1
_f1:
        .data
        .long _f1
        .long _f1 + 4

// CHECK:     Relocations [
// CHECK-NEXT:  Section __text {
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x6
// CHECK-NEXT:      PCRel: 1
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Section: __const
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x1
// CHECK-NEXT:      PCRel: 1
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Section: - (0)
// CHECK-NEXT:    }
// CHECK-NEXT:  }
// CHECK-NEXT:  Section __data {
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x2F
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Symbol: _f1
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x2B
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Symbol: _f1
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x2A
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 0
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Value: 0x1D
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x28
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 1
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Value: 0x1D
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x24
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Value: 0x1D
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x20
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Value: 0x1D
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x14
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_LOCAL_SECTDIFF (4)
// CHECK-NEXT:      Value: 0x21
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x0
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_PAIR (1)
// CHECK-NEXT:      Value: 0x29
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x8
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Section: __data
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x4
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Symbol: undef
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x0
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Symbol: undef
// CHECK-NEXT:    }
// CHECK-NEXT:  }
// CHECK-NEXT:  Section __const {
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x8
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Section: __text
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x4
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT:      Section: __const
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x0
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_LOCAL_SECTDIFF (4)
// CHECK-NEXT:      Value: 0x1D
// CHECK-NEXT:    }
// CHECK-NEXT:    Relocation {
// CHECK-NEXT:      Offset: 0x0
// CHECK-NEXT:      PCRel: 0
// CHECK-NEXT:      Length: 2
// CHECK-NEXT:      Type: GENERIC_RELOC_PAIR (1)
// CHECK-NEXT:      Value: 0x40
// CHECK-NEXT:    }
// CHECK-NEXT:  }
// CHECK-NEXT:]