LLVM Bugzilla is read-only and represents the historical archive of all LLVM issues filled before November 26, 2021. Use github to submit LLVM bugs

Bug 20640 - RuntimeDyld test failures on powerpc-darwin8
Summary: RuntimeDyld test failures on powerpc-darwin8
Status: NEW
Alias: None
Product: libraries
Classification: Unclassified
Component: Generic Execution Engine Support (show other bugs)
Version: trunk
Hardware: Macintosh MacOS X
: P normal
Assignee: Lang Hames
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-08-12 14:57 PDT by David Fang
Modified: 2014-11-14 15:30 PST (History)
1 user (show)

See Also:
Fixed By Commit(s):


Attachments
Patch to add extra debug logging to RuntimeDyldChecker. (2.35 KB, patch)
2014-08-19 17:56 PDT, Lang Hames
Details
Patch to add extra debug logging to RuntimeDyldChecker v2. (2.35 KB, patch)
2014-08-19 18:40 PDT, Lang Hames
Details
Patch to add extra debug logging to RuntimeDyldChecker v3. (2.36 KB, patch)
2014-08-19 18:44 PDT, Lang Hames
Details

Note You need to log in before you can comment on or make changes to this bug.
Description David Fang 2014-08-12 14:57:29 PDT
FAIL: LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s (6222 of 11280)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=armv7s-apple-ios7.0.0 -relocation-model=pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
--
Exit Code: 1

Command Output (stderr):
--
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #424 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed

--

********************
UNSUPPORTED: LLVM :: ExecutionEngine/fma3-jit.ll (6223 of 11280)
FAIL: LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s (6224 of 11280)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=x86_64-apple-macosx10.9 -relocation-model=pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o
--
Exit Code: 1

Command Output (stderr):
--
Expression '*{8}(stub_addr(foo.o, __text, y)) = y' is false: 0x30000000000000 != 0x3000
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed

--

********************

r213572: good
r214445: bad
r215366: bad

You mentioned in IRC that you suspect a matter of endian-ness.  I'll be happy to test any patches for you.
Comment 1 Lang Hames 2014-08-19 16:11:40 PDT
Hi David,

I've committed r215938, which is intended to fix endianness handling in RuntimeDyldMachO. This may address some of the issues you've been seeing.

I would not expect the endianness fix to impact the issues that you're seeing in the ARM test - I think there may be something else going on there. I recently ran in to a failure with very similar symptoms on one of my systems and the culprit turned out to be a crufty 'foo.o' object file from an earlier compile that had not been deleted. It might be worth manually clearing out /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/* to see if that fixes your issue.

- Lang.
Comment 2 David Fang 2014-08-19 17:27:57 PDT
Hi Lang, I cleaned out that Output dir, but still see failures, but with more diagnostics in one case:


% bin/llvm-lit -v test/ExecutionEngine/RuntimeDyld
second level name optional in hw.optional.fma is invalid
-- Testing: 3 tests, 2 threads --
UNSUPPORTED: LLVM :: ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s (1 of 3)
FAIL: LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s (2 of 3)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=armv7s-apple-ios7.0.0 -relocation-model=pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
--
Exit Code: 1

Command Output (stderr):
--
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed

--

********************
FAIL: LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s (3 of 3)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=x86_64-apple-macosx10.9 -relocation-model=pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o
--
Exit Code: 1

Command Output (stderr):
--
Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
Expression 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed

--

********************
Testing Time: 8.29s
********************
Failing Tests (2):
    LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
    LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s

  Unsupported Tests  : 1
  Unexpected Failures: 2
Comment 3 Lang Hames 2014-08-19 17:56:29 PDT
Created attachment 12919 [details]
Patch to add extra debug logging to RuntimeDyldChecker.

Hi David,

This patch will enable extra debug logging from RuntimeDyldChecker which will hopefully help us track down the source of this bug. Could you please:

(1) Apply this patch to your tree.
(2) Copy the failing tests into a scratch directory.
(3) Manually create the objects using llvm-mc with the options specified in the tests.
(4) Manually run the llvm-rtdyld lines with the options specified in the tests.

Once you've verified that that's failing (hopefully in the same way that you're seeing in the regression runs, could you then:

(5) Re-run the llvm-rtdyld commands and add the '-debug' option, and attach the resulting debug output to this bug report?

Cheers,
Lang.
Comment 4 David Fang 2014-08-19 18:23:10 PDT
Here's the requested output for the ARM test case:

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0xed000 DataSize: 24 StubBufSize: 40 Allocate: 64
        Offset: 0x0 flags: 0 SID: 0     Type: 4 Name: insn1
        Offset: 0x8 flags: 0 SID: 0     Type: 4 Name: nextPC
        Offset: 0x4 flags: 0 SID: 0     Type: 4 Name: insn2
        Offset: 0xc flags: 0 SID: 0     Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x14 flags: 2 SID: 0    Type: 4 Name: foo
        Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0xee000 DataSize: 8
Allocating common symbol baz address 0xee000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed00c FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Resolving relocations Section #0        0x1000
Resolving relocations Section #1        0x2000
resolveRelocation Section: 0 LocalAddress: 0xed01c FinalAddress: 0x0 Value: 0x0 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 240: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 200: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 120: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed


---------------------------------
and for the X86 test case:

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x40035e0 new addr: 0xed000 DataSize: 40 StubBufSize: 24 Allocate: 64
        Offset: 0x10 flags: 0 SID: 0    Type: 4 Name: insn1
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: insn2
        Offset: 0x1b flags: 0 SID: 0    Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: foo
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
emitSection SectionID: 1 Name: __data obj addr: 0x4003608 new addr: 0xee000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 2 SID: 1     Type: 4 Name: x
        Type: 0 Name: y
emitCommonSection SectionID: 2 new addr: 0xef000 DataSize: 8
Allocating common symbol y address 0xef000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed01e FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
Registering stubs for file 'foo.o', section '__text'
  Symbol '0' location - SID:0, Offset: 40
Resolving relocations Section #0        0x1000
resolveRelocation Section: 0 LocalAddress: 0xed011 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 2 Size: 4
Resolving relocations Section #1        0x2000
resolveRelocation Section: 0 LocalAddress: 0xed017 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
Resolving relocations Section #2        0x3000
resolveRelocation Section: 0 LocalAddress: 0xed028 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 0 MachoType: 0 Size: 8
RuntimeDyldChecker: Checking 'decode_operand(insn1, 0) = foo - next_pc(insn1)'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
RuntimeDyldChecker: 'decode_operand(insn1, 0) = foo - next_pc(insn1)' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 4) = x - next_pc(insn2)'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
RuntimeDyldChecker: 'decode_operand(insn2, 4) = x - next_pc(insn2)' FAILED.
RuntimeDyldChecker: Checking '*{8}(stub_addr(foo.o, __text, y)) = y'...
RuntimeDyldChecker: '*{8}(stub_addr(foo.o, __text, y)) = y' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13Expression 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
RuntimeDyldChecker: 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed


Does this help?
Comment 5 Lang Hames 2014-08-19 18:40:37 PDT
Created attachment 12920 [details]
Patch to add extra debug logging to RuntimeDyldChecker v2.

Previous debug-output patch had a think-o in it. That has been fixed in this version.
Comment 6 Lang Hames 2014-08-19 18:44:24 PDT
Created attachment 12921 [details]
Patch to add extra debug logging to RuntimeDyldChecker v3.

And this version of the patch tidies up the output a little better (by including a previously missing newline).
Comment 7 David Fang 2014-08-19 18:53:19 PDT
-debug output again for ARM case:

/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0xed000 DataSize: 24 StubBufSize: 40 Allocate: 64
        Offset: 0x0 flags: 0 SID: 0     Type: 4 Name: insn1
        Offset: 0x8 flags: 0 SID: 0     Type: 4 Name: nextPC
        Offset: 0x4 flags: 0 SID: 0     Type: 4 Name: insn2
        Offset: 0xc flags: 0 SID: 0     Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x14 flags: 2 SID: 0    Type: 4 Name: foo
        Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0xee000 DataSize: 8
Allocating common symbol baz address 0xee000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed00c FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Resolving relocations Section #0        0x1000
Resolving relocations Section #1        0x2000
resolveRelocation Section: 0 LocalAddress: 0xed01c FinalAddress: 0x0 Value: 0x0 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed



and for X86 case:
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x40035e0 new addr: 0xed000 DataSize: 40 StubBufSize: 24 Allocate: 64
        Offset: 0x10 flags: 0 SID: 0    Type: 4 Name: insn1
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: insn2
        Offset: 0x1b flags: 0 SID: 0    Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: foo
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
emitSection SectionID: 1 Name: __data obj addr: 0x4003608 new addr: 0xee000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 2 SID: 1     Type: 4 Name: x
        Type: 0 Name: y
emitCommonSection SectionID: 2 new addr: 0xef000 DataSize: 8
Allocating common symbol y address 0xef000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed01e FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
Registering stubs for file 'foo.o', section '__text'
  Symbol 'y' location - SID:0, Offset: 40
Resolving relocations Section #0        0x1000
resolveRelocation Section: 0 LocalAddress: 0xed011 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 2 Size: 4
Resolving relocations Section #1        0x2000
resolveRelocation Section: 0 LocalAddress: 0xed017 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
Resolving relocations Section #2        0x3000
resolveRelocation Section: 0 LocalAddress: 0xed028 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 0 MachoType: 0 Size: 8
RuntimeDyldChecker: Checking 'decode_operand(insn1, 0) = foo - next_pc(insn1)'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
RuntimeDyldChecker: 'decode_operand(insn1, 0) = foo - next_pc(insn1)' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 4) = x - next_pc(insn2)'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
RuntimeDyldChecker: 'decode_operand(insn2, 4) = x - next_pc(insn2)' FAILED.
RuntimeDyldChecker: Checking '*{8}(stub_addr(foo.o, __text, y)) = y'...
RuntimeDyldChecker: '*{8}(stub_addr(foo.o, __text, y)) = y' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Expression 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
RuntimeDyldChecker: 'decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed
Comment 8 Lang Hames 2014-08-25 12:35:14 PDT
Oh - something is going very wrong with the addresses that relocations are being applied to:

Resolving relocations Section #0        0x1000
resolveRelocation Section: 0 LocalAddress: 0xed011 FinalAddress: 0x0 Value: 0x0 Addend: 
0 isPCRel: 1 MachoType: 2 Size: 4
Resolving relocations Section #1        0x2000
resolveRelocation Section: 0 LocalAddress: 0xed017 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
Resolving relocations Section #2        0x3000
resolveRelocation Section: 0 LocalAddress: 0xed028 FinalAddress: 0x0 Value: 0x0

It looks like all the relocations are being written out to the null pointer. I don't know how that's not just crashing?
Comment 9 David Fang 2014-08-26 12:53:07 PDT
Here are the same two tests, and their -debug dump (stdout):

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0xed000 DataSize: 24 StubBufSize: 40 Allocate: 64
        Offset: 0x0 flags: 0 SID: 0     Type: 4 Name: insn1
        Offset: 0x8 flags: 0 SID: 0     Type: 4 Name: nextPC
        Offset: 0x4 flags: 0 SID: 0     Type: 4 Name: insn2
        Offset: 0xc flags: 0 SID: 0     Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x14 flags: 2 SID: 0    Type: 4 Name: foo
        Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0xee000 DataSize: 8
Allocating common symbol baz address 0xee000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed00c FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x00000000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x00000000: 1e ff 2f e1 1e ff 2f e1
----- Contents of section __text after relocations -----
0x00000000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x00000000: 1e ff 2f e1 1e ff 2f e1
Resolving relocations Section #1        0x0
----- Contents of section <common symbols> before relocations -----
0x00000000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed01c FinalAddress: 0x0 Value: 0x0 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x00000000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed

----------------------------------------------------------------------------------

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x40035f0 new addr: 0xed000 DataSize: 40 StubBufSize: 24 Allocate: 64
        Offset: 0x10 flags: 0 SID: 0    Type: 4 Name: insn1
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: insn2
        Offset: 0x1b flags: 0 SID: 0    Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: foo
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
emitSection SectionID: 1 Name: __data obj addr: 0x4003618 new addr: 0xee000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 2 SID: 1     Type: 4 Name: x
        Type: 0 Name: y
emitCommonSection SectionID: 2 new addr: 0xef000 DataSize: 8
Allocating common symbol y address 0xef000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed01e FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
Registering stubs for file 'test_x86-64.o', section '__text'
  Symbol 'y' location - SID:0, Offset: 40
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x00000000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x00000000: e8 00 00 00 00 8b 05 00 00 00 00 48 8b 05 00 00
0x00000000: 00 00 b8 00 00 00 00 c3
resolveRelocation Section: 0 LocalAddress: 0xed011 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 2 Size: 4
----- Contents of section __text after relocations -----
0x00000000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x00000000: e8 ff ff ff ff 8b 05 00 00 00 00 48 8b 05 00 00
0x00000000: 00 00 b8 00 00 00 00 c3
Resolving relocations Section #1        0x0
----- Contents of section __data before relocations -----
0x00000000: 05 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed017 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
----- Contents of section __data after relocations -----
0x00000000: 05 00 00 00
Resolving relocations Section #2        0x0
----- Contents of section <common symbols> before relocations -----
0x00000000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed028 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 0 MachoType: 0 Size: 8
----- Contents of section <common symbols> after relocations -----
0x00000000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 0) = foo - next_pc(insn1)'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
RuntimeDyldChecker: 'decode_operand(insn1, 0) = foo - next_pc(insn1)' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 4) = x - next_pc(insn2)'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
RuntimeDyldChecker: 'decode_operand(insn2, 4) = x - next_pc(insn2)' FAILED.
RuntimeDyldChecker: Checking '*{8}(stub_addr(test_x86-64.o, __text, y)) = y'...
RuntimeDyldChecker: '*{8}(stub_addr(test_x86-64.o, __text, y)) = y' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Expression 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
RuntimeDyldChecker: 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed

----------------------------------------------------------------------------------

And I see a new test fail (without -debug):

%  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_i386.o
Expression 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb' is false: 0x0 != 0x1ffb
Expression 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)' is false: 0xb000000 != 0xfed
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s' failed
RTDyld reported an error applying relocations:
  Unexpected SECTDIFF relocation addend.
Comment 10 Lang Hames 2014-08-27 12:54:24 PDT
Hi David,

The i386 test case is new - that's why this appears as a new failure.

Looking at the section dumps from last time is a huge help: I can see that the relocations have been applied, they just have the wrong value. I suspect the relocation addend extraction logic - it had not been made endian-aware. I believe I've fixed this in r216567.

Could you see whether this patch improves things?

Thanks for all the support in debugging this one!

- Lang.
Comment 11 David Fang 2014-08-27 18:23:34 PDT
I cherry picked that, and re-ran with -debug, I don't think it looks any better, addresses are still 0x0.

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0xed000 DataSize: 24 StubBufSize: 40 Allocate: 64
        Offset: 0x0 flags: 0 SID: 0     Type: 4 Name: insn1
        Offset: 0x8 flags: 0 SID: 0     Type: 4 Name: nextPC
        Offset: 0x4 flags: 0 SID: 0     Type: 4 Name: insn2
        Offset: 0xc flags: 0 SID: 0     Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x14 flags: 2 SID: 0    Type: 4 Name: foo
        Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0xee000 DataSize: 8
Allocating common symbol baz address 0xee000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed00c FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x00000000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x00000000: 1e ff 2f e1 1e ff 2f e1
----- Contents of section __text after relocations -----
0x00000000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x00000000: 1e ff 2f e1 1e ff 2f e1
Resolving relocations Section #1        0x0
----- Contents of section <common symbols> before relocations -----
0x00000000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed01c FinalAddress: 0x0 Value: 0x0 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x00000000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed

---------------------------------------------------

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x40035f0 new addr: 0xed000 DataSize: 40 StubBufSize: 24 Allocate: 64
        Offset: 0x10 flags: 0 SID: 0    Type: 4 Name: insn1
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: insn2
        Offset: 0x1b flags: 0 SID: 0    Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: foo
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
emitSection SectionID: 1 Name: __data obj addr: 0x4003618 new addr: 0xee000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 2 SID: 1     Type: 4 Name: x
        Type: 0 Name: y
emitCommonSection SectionID: 2 new addr: 0xef000 DataSize: 8
Allocating common symbol y address 0xef000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xed01e FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
Registering stubs for file 'test_x86-64.o', section '__text'
  Symbol 'y' location - SID:0, Offset: 40
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x00000000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x00000000: e8 00 00 00 00 8b 05 00 00 00 00 48 8b 05 00 00
0x00000000: 00 00 b8 00 00 00 00 c3
resolveRelocation Section: 0 LocalAddress: 0xed011 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 2 Size: 4
----- Contents of section __text after relocations -----
0x00000000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x00000000: e8 ff ff ff ff 8b 05 00 00 00 00 48 8b 05 00 00
0x00000000: 00 00 b8 00 00 00 00 c3
Resolving relocations Section #1        0x0
----- Contents of section __data before relocations -----
0x00000000: 05 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed017 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
----- Contents of section __data after relocations -----
0x00000000: 05 00 00 00
Resolving relocations Section #2        0x0
----- Contents of section <common symbols> before relocations -----
0x00000000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xed028 FinalAddress: 0x0 Value: 0x0 Addend: 0 isPCRel: 0 MachoType: 0 Size: 8
----- Contents of section <common symbols> after relocations -----
0x00000000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 0) = foo - next_pc(insn1)'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
RuntimeDyldChecker: 'decode_operand(insn1, 0) = foo - next_pc(insn1)' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 4) = x - next_pc(insn2)'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
RuntimeDyldChecker: 'decode_operand(insn2, 4) = x - next_pc(insn2)' FAILED.
RuntimeDyldChecker: Checking '*{8}(stub_addr(test_x86-64.o, __text, y)) = y'...
RuntimeDyldChecker: '*{8}(stub_addr(test_x86-64.o, __text, y)) = y' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Expression 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
RuntimeDyldChecker: 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed

------------------------------------------------

Were there any other related patches besides the one you mentioned?  I could always reset and re-merge instead of cherry-pick.
Comment 12 Lang Hames 2014-08-27 23:26:15 PDT
Hi David,

Looks like I was too slack with the format specifiers on some of the debugging output. I've fixed that in r216648.

- Lang.
Comment 13 David Fang 2014-09-03 12:48:03 PDT
-debug output again for the 3 failing test cases:

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_i386.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_i386.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x400364c new addr: 0x83000 DataSize: 30 StubBufSize: 0 Allocate: 30
        Offset: 0x5 flags: 0 SID: 0     Type: 4 Name: tmp0$pb
        Offset: 0x6 flags: 0 SID: 0     Type: 4 Name: inst1
emitSection SectionID: 1 Name: __pointers obj addr: 0x400366f new addr: 0x7fd000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 0 SID: 1     Type: 4 Name: x$non_lazy_ptr
        Offset: 0xe flags: 0 SID: 0     Type: 4 Name: inst2
emitSection SectionID: 2 Name: __jump_table obj addr: 0x400366a new addr: 0x7fe000 DataSize: 5 StubBufSize: 0 Allocate: 5
        Offset: 0x0 flags: 0 SID: 2     Type: 4 Name: bling$stub
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: inst3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
emitSection SectionID: 3 Name: __common obj addr: 0x4003480 new addr: 0x7ff000 DataSize: 8 StubBufSize: 0 Allocate: 8
        Offset: 0x0 flags: 2 SID: 3     Type: 4 Name: y
        Type: 0 Name: bling
        Type: 0 Name: x
emitCommonSection SectionID: 4 new addr: 0x3e96000 DataSize: 16
Allocating common symbol bling address 0x3e96000
Allocating common symbol x address 0x3e96004
Parse relocations:
        SectionID: 0
Found SECTDIFF: AddrA: 35, AddrB: 5, Addend: 2161727821137838080, SectionA ID: 1, SectionAOffset: 0, SectionB ID: 0, SectionBOffset: 5
Registering stubs for file 'test_i386.o', section '__text'
Populating __pointers, Section ID 1, 1 entries, 4 bytes each:
  x: index 9, PT offset: 0
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x0000000000001000: e8 00 00 00 00 58 8b 80 1e 00 00 00 8b 18 e8 0b
0x0000000000001010: 00 00 00 01 d8 8b 0d 2c 00 00 00 01 c8 c3
resolveRelocation Section: 0 LocalAddress: 0x83008 FinalAddress: 0x0000000000001008 Value: 0x0000000000001000 Addend: -5 isPCRel: 0 MachoType: 4 Size: 4
resolveRelocation Section: 0 LocalAddress: 0x83001 FinalAddress: 0x0000000000001001 Value: 0x0000000000001000 Addend: 5 isPCRel: 1 MachoType: 0 Size: 4
----- Contents of section __text after relocations -----
0x0000000000001000: e8 00 00 00 00 58 8b 80 00 00 00 00 8b 18 e8 0b
0x0000000000001010: 00 00 00 01 d8 8b 0d 2c 00 00 00 01 c8 c3
Resolving relocations Section #1        0x0
----- Contents of section __pointers before relocations -----
0x0000000000003000: 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0x83008 FinalAddress: 0x0000000000001008 Value: 0x0000000000003000 Addend: -5 isPCRel: 0 MachoType: 4 Size: 4
----- Contents of section __pointers after relocations -----
0x0000000000003000: 00 00 00 00
Resolving relocations Section #2        0x0
----- Contents of section __jump_table before relocations -----
0x0000000000002000: e9 f4 f4 f4 f4
resolveRelocation Section: 0 LocalAddress: 0x8300f FinalAddress: 0x000000000000100f Value: 0x0000000000002000 Addend: 47244640245 isPCRel: 1 MachoType: 0 Size: 4
----- Contents of section __jump_table after relocations -----
0x0000000000002000: e9 f4 f4 f4 f4
Resolving relocations Section #3        0x0
----- Contents of section __common before relocations -----
0x0000000000004000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0x83017 FinalAddress: 0x0000000000001017 Value: 0x0000000000004000 Addend: 3170534137668829144 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section __common after relocations -----
0x0000000000004000: 00 00 00 00 00 00 00 00
Resolving relocations Section #4        0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000005000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
resolveRelocation Section: 2 LocalAddress: 0x7fe001 FinalAddress: 0x0000000000002001 Value: 0x0000000000005000 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
resolveRelocation Section: 1 LocalAddress: 0x7fd000 FinalAddress: 0x0000000000003000 Value: 0x0000000000005000 Addend: 4 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x0000000000005000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb'...
Reading section starting at symbol 'inst1' - SID: 0, Offset: 6, Size: 24
Expression 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb' is false: 0x0 != 0x1ffb
RuntimeDyldChecker: 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)'...
Reading section starting at symbol 'inst2' - SID: 0, Offset: 14, Size: 16
Reading section starting at symbol 'inst2' - SID: 0, Offset: 14, Size: 16
Expression 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)' is false: 0xb != 0xfed
RuntimeDyldChecker: 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s' failed
RTDyld reported an error applying relocations:
  Unexpected SECTDIFF relocation addend.

----------------------------------------
% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0x83000 DataSize: 24 StubBufSize: 40 Allocate: 64
        Offset: 0x0 flags: 0 SID: 0     Type: 4 Name: insn1
        Offset: 0x8 flags: 0 SID: 0     Type: 4 Name: nextPC
        Offset: 0x4 flags: 0 SID: 0     Type: 4 Name: insn2
        Offset: 0xc flags: 0 SID: 0     Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x14 flags: 2 SID: 0    Type: 4 Name: foo
        Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0x7fd000 DataSize: 8
Allocating common symbol baz address 0x7fd000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0x8300c FinalAddress: 0x000000000008300c Value: 0x0000000000083018 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x0000000000001000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x0000000000001010: 1e ff 2f e1 1e ff 2f e1
----- Contents of section __text after relocations -----
0x0000000000001000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x0000000000001010: 1e ff 2f e1 1e ff 2f e1
Resolving relocations Section #1        0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000002000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0x8301c FinalAddress: 0x000000000000101c Value: 0x0000000000002000 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x0000000000002000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': File 'foo.o' not found. No stubs registered.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed

--------------------------------------------
% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=x86_64-apple-macosx10.9 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_x86-64.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x40035f0 new addr: 0x83000 DataSize: 40 StubBufSize: 24 Allocate: 64
        Offset: 0x10 flags: 0 SID: 0    Type: 4 Name: insn1
        Offset: 0x15 flags: 0 SID: 0    Type: 4 Name: insn2
        Offset: 0x1b flags: 0 SID: 0    Type: 4 Name: insn3
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: foo
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
emitSection SectionID: 1 Name: __data obj addr: 0x4003618 new addr: 0x7fd000 DataSize: 4 StubBufSize: 0 Allocate: 4
        Offset: 0x0 flags: 2 SID: 1     Type: 4 Name: x
        Type: 0 Name: y
emitCommonSection SectionID: 2 new addr: 0x7fe000 DataSize: 8
Allocating common symbol y address 0x7fe000
Parse relocations:
        SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0x8301e FinalAddress: 0x000000000008301e Value: 0x0000000000083028 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
Registering stubs for file 'test_x86-64.o', section '__text'
  Symbol 'y' location - SID:0, Offset: 40
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x0000000000001000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x0000000000001010: e8 00 00 00 00 8b 05 00 00 00 00 48 8b 05 00 00
0x0000000000001020: 00 00 b8 00 00 00 00 c3
resolveRelocation Section: 0 LocalAddress: 0x83011 FinalAddress: 0x0000000000001011 Value: 0x0000000000001000 Addend: 0 isPCRel: 1 MachoType: 2 Size: 4
----- Contents of section __text after relocations -----
0x0000000000001000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x0000000000001010: e8 ff ff ff ff 8b 05 00 00 00 00 48 8b 05 00 00
0x0000000000001020: 00 00 b8 00 00 00 00 c3
Resolving relocations Section #1        0x0
----- Contents of section __data before relocations -----
0x0000000000002000: 05 00 00 00
resolveRelocation Section: 0 LocalAddress: 0x83017 FinalAddress: 0x0000000000001017 Value: 0x0000000000002000 Addend: 0 isPCRel: 1 MachoType: 1 Size: 4
----- Contents of section __data after relocations -----
0x0000000000002000: 05 00 00 00
Resolving relocations Section #2        0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000003000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0x83028 FinalAddress: 0x0000000000001028 Value: 0x0000000000003000 Addend: 0 isPCRel: 0 MachoType: 0 Size: 8
----- Contents of section <common symbols> after relocations -----
0x0000000000003000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 0) = foo - next_pc(insn1)'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Reading section starting at symbol 'insn1' - SID: 0, Offset: 16, Size: 24
Expression 'decode_operand(insn1, 0) = foo - next_pc(insn1)' is false: 0xffffffffffffffff != 0xffffffffffffffeb
RuntimeDyldChecker: 'decode_operand(insn1, 0) = foo - next_pc(insn1)' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 4) = x - next_pc(insn2)'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Reading section starting at symbol 'insn2' - SID: 0, Offset: 21, Size: 19
Expression 'decode_operand(insn2, 4) = x - next_pc(insn2)' is false: 0x0 != 0xfe5
RuntimeDyldChecker: 'decode_operand(insn2, 4) = x - next_pc(insn2)' FAILED.
RuntimeDyldChecker: Checking '*{8}(stub_addr(test_x86-64.o, __text, y)) = y'...
RuntimeDyldChecker: '*{8}(stub_addr(test_x86-64.o, __text, y)) = y' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Reading section starting at symbol 'insn3' - SID: 0, Offset: 27, Size: 13
Expression 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' is false: 0x0 != 0x6
RuntimeDyldChecker: 'decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s' failed
Comment 14 Lang Hames 2014-09-06 21:07:52 PDT
I've just looked at the x86 case. The latest debugging output is a huge help there: The checking infrastructure all looks good, but the relocation value is being applied incorrectly. I tracked that to a bug in RuntimeDyldImpl::writeBytesUnaligned, which I've fixed in r217325.

David - could you let me know if that helps?
Comment 15 David Fang 2014-09-09 22:21:37 PDT
New -debug dumps:

% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_i386.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/test_i386.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x400364c new addr: 0xff000 DataSize: 30 StubBufSize: 0 Allocate: 30
	Offset: 0x5 flags: 0 SID: 0	Type: 4 Name: tmp0$pb
	Offset: 0x6 flags: 0 SID: 0	Type: 4 Name: inst1
emitSection SectionID: 1 Name: __pointers obj addr: 0x400366f new addr: 0x287000 DataSize: 4 StubBufSize: 0 Allocate: 4
	Offset: 0x0 flags: 0 SID: 1	Type: 4 Name: x$non_lazy_ptr
	Offset: 0xe flags: 0 SID: 0	Type: 4 Name: inst2
emitSection SectionID: 2 Name: __jump_table obj addr: 0x400366a new addr: 0x7f8000 DataSize: 5 StubBufSize: 0 Allocate: 5
	Offset: 0x0 flags: 0 SID: 2	Type: 4 Name: bling$stub
	Offset: 0x15 flags: 0 SID: 0	Type: 4 Name: inst3
	Offset: 0x0 flags: 2 SID: 0	Type: 4 Name: bar
emitSection SectionID: 3 Name: __common obj addr: 0x4003480 new addr: 0x7f9000 DataSize: 8 StubBufSize: 0 Allocate: 8
	Offset: 0x0 flags: 2 SID: 3	Type: 4 Name: y
	Type: 0 Name: bling
	Type: 0 Name: x
emitCommonSection SectionID: 4 new addr: 0x7fa000 DataSize: 16
Allocating common symbol bling address 0x7fa000
Allocating common symbol x address 0x7fa004
Parse relocations:
	SectionID: 0
Found SECTDIFF: AddrA: 35, AddrB: 5, Addend: 2161727821137838080, SectionA ID: 1, SectionAOffset: 0, SectionB ID: 0, SectionBOffset: 5
Registering stubs for file 'test_i386.o', section '__text'
	SectionID: 2
Registering stubs for file 'test_i386.o', section '__jump_table'
	SectionID: 1
Registering stubs for file 'test_i386.o', section '__pointers'
	SectionID: 3
Registering stubs for file 'test_i386.o', section '__common'
Populating __pointers, Section ID 1, 1 entries, 4 bytes each:
  x: index 9, PT offset: 0
Reassigning address for section 0 (__text): 0x0000000000000000 -> 0x0000000000000000
Reassigning address for section 2 (__jump_table): 0x0000000000000000 -> 0x0000000000000000
Reassigning address for section 1 (__pointers): 0x0000000000000000 -> 0x0000000000000000
Reassigning address for section 3 (__common): 0x0000000000000000 -> 0x0000000000000000
Reassigning address for section 4 (<common symbols>): 0x0000000000000000 -> 0x0000000000000000
Resolving relocations Section #0	0x0
----- Contents of section __text before relocations -----
0x0000000000001000: e8 00 00 00 00 58 8b 80 1e 00 00 00 8b 18 e8 0b
0x0000000000001010: 00 00 00 01 d8 8b 0d 2c 00 00 00 01 c8 c3
resolveRelocation Section: 0 LocalAddress: 0xff008 FinalAddress: 0x0000000000001008 Value: 0x0000000000001000 Addend: -5 isPCRel: 0 MachoType: 4 Size: 4
resolveRelocation Section: 0 LocalAddress: 0xff001 FinalAddress: 0x0000000000001001 Value: 0x0000000000001000 Addend: 5 isPCRel: 1 MachoType: 0 Size: 4
----- Contents of section __text after relocations -----
0x0000000000001000: e8 00 00 00 00 58 8b 80 fb 1f 00 00 8b 18 e8 0b
0x0000000000001010: 00 00 00 01 d8 8b 0d 2c 00 00 00 01 c8 c3
Resolving relocations Section #1	0x0
----- Contents of section __pointers before relocations -----
0x0000000000003000: 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xff008 FinalAddress: 0x0000000000001008 Value: 0x0000000000003000 Addend: -5 isPCRel: 0 MachoType: 4 Size: 4
----- Contents of section __pointers after relocations -----
0x0000000000003000: 00 00 00 00
Resolving relocations Section #2	0x0
----- Contents of section __jump_table before relocations -----
0x0000000000002000: e9 f4 f4 f4 f4
resolveRelocation Section: 0 LocalAddress: 0xff00f FinalAddress: 0x000000000000100f Value: 0x0000000000002000 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
----- Contents of section __jump_table after relocations -----
0x0000000000002000: e9 f4 f4 f4 f4
Resolving relocations Section #3	0x0
----- Contents of section __common before relocations -----
0x0000000000004000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xff017 FinalAddress: 0x0000000000001017 Value: 0x0000000000004000 Addend: 3170534137668829144 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section __common after relocations -----
0x0000000000004000: 00 00 00 00 00 00 00 00
Resolving relocations Section #4	0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000005000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
resolveRelocation Section: 2 LocalAddress: 0x7f8001 FinalAddress: 0x0000000000002001 Value: 0x0000000000005000 Addend: 0 isPCRel: 1 MachoType: 0 Size: 4
resolveRelocation Section: 1 LocalAddress: 0x287000 FinalAddress: 0x0000000000003000 Value: 0x0000000000005000 Addend: 4 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x0000000000005000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb'...
Reading section starting at symbol 'inst1' - SID: 0, Offset: 6, Size: 24
RuntimeDyldChecker: 'decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb' passed.
RuntimeDyldChecker: Checking 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)'...
Reading section starting at symbol 'inst2' - SID: 0, Offset: 14, Size: 16
Reading section starting at symbol 'inst2' - SID: 0, Offset: 14, Size: 16
RuntimeDyldChecker: 'decode_operand(inst2, 0) = bling$stub - next_pc(inst2)' passed.
RTDyld reported an error applying relocations:
  Unexpected SECTDIFF relocation addend.


-------------------------------------------------------


% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4003570 new addr: 0xff000 DataSize: 24 StubBufSize: 40 Allocate: 64
	Offset: 0x0 flags: 0 SID: 0	Type: 4 Name: insn1
	Offset: 0x8 flags: 0 SID: 0	Type: 4 Name: nextPC
	Offset: 0x4 flags: 0 SID: 0	Type: 4 Name: insn2
	Offset: 0xc flags: 0 SID: 0	Type: 4 Name: insn3
	Offset: 0x0 flags: 2 SID: 0	Type: 4 Name: bar
	Offset: 0x14 flags: 2 SID: 0	Type: 4 Name: foo
	Type: 0 Name: baz
emitCommonSection SectionID: 1 new addr: 0x287000 DataSize: 8
Allocating common symbol baz address 0x287000
Parse relocations:
	SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xff00c FinalAddress: 0x00000000000ff00c Value: 0x00000000000ff018 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Registering stubs for file 'foo.o', section '__text'
Reassigning address for section 0 (__text): 0x0000000000000000 -> 0x0000000000000000
Reassigning address for section 1 (<common symbols>): 0x0000000000000000 -> 0x0000000000000000
Resolving relocations Section #0	0x0
----- Contents of section __text before relocations -----
0x0000000000001000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x0000000000001010: 1e ff 2f e1 1e ff 2f e1
----- Contents of section __text after relocations -----
0x0000000000001000: 04 00 00 e3 00 00 40 e3 00 00 8f e0 fb 00 00 01
0x0000000000001010: 1e ff 2f e1 1e ff 2f e1
Resolving relocations Section #1	0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000002000: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xff01c FinalAddress: 0x000000000000101c Value: 0x0000000000002000 Addend: -64 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x0000000000002000: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo-(nextPC+8))[15:0]' passed.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 1
3114: OPC_FilterValue(0, 32): FAIL: continuing at 3150
3150: OPC_FilterValue(1, 31): PASS: continuing at 3154
3154: OPC_ExtractField(20, 1): 0
3157: OPC_FilterValue(0, 8): PASS: continuing at 3161
3161: OPC_CheckPredicate(10): PASS
3165: OPC_Decode: opcode 216, using decoder 49
----- DECODE SUCCESSFUL -----
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo-(nextPC+8))[31:16]' passed.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': Symbol 'baz' not found.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': Symbol 'baz' not found.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 1
17: OPC_FilterValue(0, 336): FAIL: continuing at 357
357: OPC_FilterValue(1, 7301): PASS: continuing at 361
361: OPC_ExtractField(22, 2): 0
364: OPC_FilterValue(0, 422): PASS: continuing at 368
368: OPC_ExtractField(20, 1): 0
371: OPC_FilterValue(0, 349): PASS: continuing at 375
375: OPC_ExtractField(5, 1): 1
378: OPC_FilterValue(0, 276): FAIL: continuing at 658
658: OPC_FilterValue(1, 801): PASS: continuing at 662
662: OPC_ExtractField(6, 2): 3
665: OPC_FilterValue(1, 19): FAIL: continuing at 688
688: OPC_FilterValue(2, 14): FAIL: continuing at 706
706: OPC_FilterValue(3, 753): PASS: continuing at 710
710: OPC_CheckPredicate(3): PASS
714: OPC_CheckField(4, 1, 0, 743): FieldValue = 1, ExpectedValue = 0: FAIL
1463: OPC_ExtractField(4, 4): 15
1466: OPC_FilterValue(11, 27): FAIL: continuing at 1497
1497: OPC_FilterValue(13, 27): FAIL: continuing at 1528
1528: OPC_FilterValue(15, 6130): PASS: continuing at 1532
1532: OPC_ExtractField(20, 1): 0
1535: OPC_FilterValue(0, 8): PASS: continuing at 1539
1539: OPC_CheckPredicate(3): PASS
1543: OPC_Decode: opcode 426, using decoder 7
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #426 STRD <MCOperand Reg:66> <MCOperand Reg:67> <MCOperand Reg:66> <MCOperand Reg:77> <MCOperand Imm:256> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed


-----------------------------------------------


% /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o
Stack dump:
0.	Program arguments: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o 
Segmentation fault


------------------------------------------------
Comment 16 Lang Hames 2014-09-09 22:30:06 PDT
So the good news is that it looks like X86-64 is now passing. Unfortunately i386 and ARM are still failing. I'll look at i386 next.
Comment 17 David Fang 2014-10-28 15:57:13 PDT
Here's what today's failure on the x86_64 test looks like:


FAIL: LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s (3 of 5)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=armv7s-apple-ios7.0.0 -relocation-model=pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o
--
Exit Code: 1

Command Output (stderr):
--
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=armv7s-apple-ios7.0.0 -verify -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/ARM/Output/foo.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4802db4 new addr: 0xe9000 DataSize: 24 StubBufSize: 48 Allocate: 72
	Offset: 0x0 flags: 0 SID: 0	Type: 4 Name: insn1
emitSection SectionID: 1 Name: __nl_symbol_ptr obj addr: 0x4802dcc new addr: 0xea000 DataSize: 4 StubBufSize: 0 Allocate: 4
	Offset: 0x0 flags: 0 SID: 1	Type: 4 Name: foo$non_lazy_ptr
	Offset: 0x8 flags: 0 SID: 0	Type: 4 Name: nextPC
	Offset: 0x4 flags: 0 SID: 0	Type: 4 Name: insn2
	Offset: 0xc flags: 0 SID: 0	Type: 4 Name: insn3
	Offset: 0x10 flags: 0 SID: 0	Type: 4 Name: insn4
	Offset: 0x0 flags: 2 SID: 0	Type: 4 Name: bar
	Type: 0 Name: aaa
	Type: 0 Name: baz
	Type: 0 Name: foo
emitCommonSection SectionID: 2 new addr: 0xeb000 DataSize: 24
Allocating common symbol aaa address 0xeb000
Allocating common symbol baz address 0xeb004
Allocating common symbol foo address 0xeb008
Parse relocations:
	SectionID: 0
resolveRelocation Section: 0 LocalAddress: 0xe9010 FinalAddress: 0x00000000000e9010 Value: 0x00000000000e9018 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
resolveRelocation Section: 0 LocalAddress: 0xe900c FinalAddress: 0x00000000000e900c Value: 0x00000000000e9020 Addend: 0 isPCRel: 1 MachoType: 5 Size: 4
Found SECTDIFF: AddrA: 24, AddrB: 8, Addend: 4294967288, SectionA ID: 1, SectionAOffset: 0, SectionB ID: 0, SectionBOffset: 8
Found SECTDIFF: AddrA: 24, AddrB: 8, Addend: 4294967280, SectionA ID: 1, SectionAOffset: 0, SectionB ID: 0, SectionBOffset: 8
Registering stubs for file 'foo.o', section '__text'
	SectionID: 1
Registering stubs for file 'foo.o', section '__nl_symbol_ptr'
Populating pointer table section __nl_symbol_ptr, Section ID 1, 1 entries, 4 bytes each:
  foo: index 9, PT offset: 0
Reassigning address for section 0 (__text): 0x00000000000e9000 -> 0x0000000000001000
Reassigning address for section 1 (__nl_symbol_ptr): 0x00000000000ea000 -> 0x0000000000002000
Reassigning address for section 2 (<common symbols>): 0x00000000000eb000 -> 0x0000000000003000
Resolving relocations Section #0	0x0
----- Contents of section __text before relocations -----
0x0000000000001000: 08 00 00 e3 00 00 40 e3 00 10 80 e0 fb 00 00 03
0x0000000000001010: fa 00 00 00 1e ff 2f e1
resolveRelocation Section: 0 LocalAddress: 0xe901c FinalAddress: 0x000000000000101c Value: 0x0000000000001000 Addend: -60 isPCRel: 0 MachoType: 0 Size: 4
resolveRelocation Section: 0 LocalAddress: 0xe9004 FinalAddress: 0x0000000000001004 Value: 0x0000000000001000 Addend: 4294967280 isPCRel: 0 MachoType: 9 Size: 2
resolveRelocation Section: 0 LocalAddress: 0xe9000 FinalAddress: 0x0000000000001000 Value: 0x0000000000001000 Addend: 4294967272 isPCRel: 0 MachoType: 9 Size: 1
----- Contents of section __text after relocations -----
0x0000000000001000: 08 00 0f e8 00 00 40 00 00 10 80 e0 fb 00 00 03
0x0000000000001010: fa 00 00 00 1e ff 2f e1
Resolving relocations Section #1	0x0
----- Contents of section __nl_symbol_ptr before relocations -----
0x0000000000002000: 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xe9004 FinalAddress: 0x0000000000001004 Value: 0x0000000000002000 Addend: 4294967280 isPCRel: 0 MachoType: 9 Size: 2
resolveRelocation Section: 0 LocalAddress: 0xe9000 FinalAddress: 0x0000000000001000 Value: 0x0000000000002000 Addend: 4294967272 isPCRel: 0 MachoType: 9 Size: 1
----- Contents of section __nl_symbol_ptr after relocations -----
0x0000000000002000: 00 00 00 00
Resolving relocations Section #2	0x0
----- Contents of section <common symbols> before relocations -----
0x0000000000003000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0000000000003010: 00 00 00 00 00 00 00 00
resolveRelocation Section: 0 LocalAddress: 0xe9024 FinalAddress: 0x0000000000001024 Value: 0x0000000000003000 Addend: -60 isPCRel: 0 MachoType: 0 Size: 4
resolveRelocation Section: 1 LocalAddress: 0xea000 FinalAddress: 0x0000000000002000 Value: 0x0000000000003000 Addend: 8 isPCRel: 0 MachoType: 0 Size: 4
----- Contents of section <common symbols> after relocations -----
0x0000000000003000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0000000000003010: 00 00 00 00 00 00 00 00
RuntimeDyldChecker: Checking 'decode_operand(insn1, 1) = (foo$non_lazy_ptr-(nextPC+8))[15:0]'...
Reading section starting at symbol 'insn1' - SID: 0, Offset: 0, Size: 24
0: OPC_ExtractField(25, 3): 4
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): FAIL: continuing at 3434
3434: OPC_FilterValue(2, 416): FAIL: continuing at 3854
3854: OPC_FilterValue(3, 2348): FAIL: continuing at 6206
6206: OPC_FilterValue(4, 731): PASS: continuing at 6210
6210: OPC_ExtractField(20, 5): 0
6213: OPC_FilterValue(0, 8): PASS: continuing at 6217
6217: OPC_CheckPredicate(0): PASS
6221: OPC_Decode: opcode 407, using decoder 80
----- DECODE SUCCESSFUL -----
Expression 'decode_operand(insn1, 1) = (foo$non_lazy_ptr-(nextPC+8))[15:0]' is false: 0xe != 0xff0
RuntimeDyldChecker: 'decode_operand(insn1, 1) = (foo$non_lazy_ptr-(nextPC+8))[15:0]' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn2, 2) = (foo$non_lazy_ptr-(nextPC+8))[31:16]'...
Reading section starting at symbol 'insn2' - SID: 0, Offset: 4, Size: 20
0: OPC_ExtractField(25, 3): 0
3: OPC_FilterValue(0, 3020): PASS: continuing at 7
7: OPC_ExtractField(21, 1): 0
10: OPC_FilterValue(0, 1545): PASS: continuing at 14
14: OPC_ExtractField(24, 1): 0
17: OPC_FilterValue(0, 336): PASS: continuing at 21
21: OPC_ExtractField(4, 1): 0
24: OPC_FilterValue(0, 103): PASS: continuing at 28
28: OPC_ExtractField(22, 2): 1
31: OPC_FilterValue(0, 20): FAIL: continuing at 55
55: OPC_FilterValue(1, 22): PASS: continuing at 59
59: OPC_CheckPredicate(0): PASS
63: OPC_CheckField(5, 1, 0, 4): FieldValue = 0, ExpectedValue = 0: PASS
69: OPC_Decode: opcode 456, using decoder 0
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn2, 2) = (foo$non_lazy_ptr-(nextPC+8))[31:16]': Operand '2' of instruction 'insn2' is not an immediate.
Instruction is:
  <MCInst #456 SUBrr <MCOperand Reg:66> <MCOperand Reg:66> <MCOperand Reg:66> <MCOperand Imm:0> <MCOperand Reg:3> <MCOperand Reg:0>>
RuntimeDyldChecker: 'decode_operand(insn2, 2) = (foo$non_lazy_ptr-(nextPC+8))[31:16]' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004': Stub for symbol 'baz' not found. If 'baz' is an internal symbol this may indicate that the stub target offset is being computed incorrectly.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz)) = 0xe51ff004' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz': Stub for symbol 'baz' not found. If 'baz' is an internal symbol this may indicate that the stub target offset is being computed incorrectly.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, baz) + 4) = baz' FAILED.
RuntimeDyldChecker: Checking 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)'...
Reading section starting at symbol 'insn3' - SID: 0, Offset: 12, Size: 12
0: OPC_ExtractField(25, 3): 1
3: OPC_FilterValue(0, 3020): FAIL: continuing at 3027
3027: OPC_FilterValue(1, 403): PASS: continuing at 3031
3031: OPC_ExtractField(21, 1): 0
3034: OPC_FilterValue(0, 170): PASS: continuing at 3038
3038: OPC_ExtractField(24, 1): 1
3041: OPC_FilterValue(0, 62): FAIL: continuing at 3107
3107: OPC_FilterValue(1, 4551): PASS: continuing at 3111
3111: OPC_ExtractField(22, 2): 0
3114: OPC_FilterValue(0, 32): PASS: continuing at 3118
3118: OPC_ExtractField(20, 1): 0
3121: OPC_FilterValue(0, 8): PASS: continuing at 3125
3125: OPC_CheckPredicate(10): PASS
3129: OPC_Decode: opcode 221, using decoder 49
----- DECODE SUCCESSFUL -----
Error evaluating expression 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)': Operand '0' of instruction 'insn3' is not an immediate.
Instruction is:
  <MCInst #221 MOVi16 <MCOperand Reg:66> <MCOperand Imm:251> <MCOperand Imm:0> <MCOperand Reg:3>>
RuntimeDyldChecker: 'decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)' FAILED.
RuntimeDyldChecker: Checking '*{4}(stub_addr(foo.o, __text, bar) + 4) = bar'...
Error evaluating expression '*{4}(stub_addr(foo.o, __text, bar) + 4) = bar': Stub for symbol 'bar' not found. If 'bar' is an internal symbol this may indicate that the stub target offset is being computed incorrectly.

RuntimeDyldChecker: '*{4}(stub_addr(foo.o, __text, bar) + 4) = bar' FAILED.
RuntimeDyldChecker: Checking '*{4}foo$non_lazy_ptr = foo'...
RuntimeDyldChecker: '*{4}foo$non_lazy_ptr = foo' passed.
/Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld: error: some checks in '/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s' failed


Doesn't look like it's working yet.
Comment 18 David Fang 2014-10-28 15:58:18 PDT
er, I meant ARM
Comment 19 David Fang 2014-11-14 15:30:40 PST
Still on powerpc-darwin8, built with clang-3.4.2:
Just tested a recent merge from trunk, and the ARM test case now works (yay!), just one problem remains (crash):

FAIL: LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s (6486 of 11816)
******************** TEST 'LLVM :: ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s' FAILED ********************
Script:
--
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-mc -triple=i386-apple-macosx10.4 -relocation-model=dynamic-no-pic -filetype=obj -o /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o /Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s
gtimeout 1m  /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o
--
Exit Code: 139

Command Output (stderr):
--
Stack dump:
0.      Program arguments: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o 



With -debug on the above test case, I see:
Args: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o 
Parse symbols:
emitSection SectionID: 0 Name: __text obj addr: 0x4802dc4 new addr: 0x3e000 DataSize: 25 StubBufSize: 0 Allocate: 25
        Offset: 0x0 flags: 2 SID: 0     Type: 4 Name: bar
        Offset: 0x10 flags: 2 SID: 0    Type: 4 Name: main
Parse relocations:
        SectionID: 0
Registering stubs for file 'MachO_i386_eh_frame.o', section '__text'
emitSection SectionID: 1 Name: __eh_frame obj addr: 0x4802de0 new addr: 0x3f000 DataSize: 52 StubBufSize: 0 Allocate: 52
        SectionID: 1
Registering stubs for file 'MachO_i386_eh_frame.o', section '__eh_frame'
Reassigning address for section 0 (__text): 0x000000000003e000 -> 0x0000000000002000
Reassigning address for section 1 (__eh_frame): 0x000000000003f000 -> 0x0000000000001000
Resolving relocations Section #0        0x0
----- Contents of section __text before relocations -----
0x0000000000002000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x0000000000002010: 55 89 e5 5d e9 e7 ff ff ff
resolveRelocation Section: 0 LocalAddress: 0x3e015 FinalAddress: 0x0000000000002015 Value: 0x0000000000002000 Addend: 4294967296 isPCRel: 1 MachoType: 0 Size: 4
----- Contents of section __text after relocations -----
0x0000000000002000: c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
0x0000000000002010: 55 89 e5 5d e9 e7 ff ff ff
Resolving relocations Section #1        0x0
----- Contents of section __eh_frame before relocations -----
0x0000000000001000: 14 00 00 00 00 00 00 00 03 7a 52 00 01 7c 08 01
0x0000000000001010: 10 0c 05 04 88 01 00 00 18 00 00 00 1c 00 00 00
0x0000000000001020: d4 ff ff ff 09 00 00 00 00 41 0e 08 84 02 42 0d
0x0000000000001030: 04 00 00 00
----- Contents of section __eh_frame after relocations -----
0x0000000000001000: 14 00 00 00 00 00 00 00 03 7a 52 00 01 7c 08 01
0x0000000000001010: 10 0c 05 04 88 01 00 00 18 00 00 00 1c 00 00 00
0x0000000000001020: d4 ff ff ff 09 00 00 00 00 41 0e 08 84 02 42 0d
0x0000000000001030: 04 00 00 00
Processing FDE: Delta for text: 4294963172, Delta for EH: 0
Processing FDE: Delta for text: 4294963172, Delta for EH: 0
Stack dump:
0.      Program arguments: /Users/fang/local/src/LLVM-svn/clang34-stage1-build/./bin/llvm-rtdyld -debug -triple=i386-apple-macosx10.4 -verify -map-section MachO_i386_eh_frame.o,__text=0x2000 -check=/Volumes/Isolde/sources/LLVM-svn/llvm.git/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s /Volumes/Isolde/builds/LLVM/clang34-stage1-build/test/ExecutionEngine/RuntimeDyld/X86/Output/MachO_i386_eh_frame.o 


GDB shows:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x1403f004
0x019bfb54 in _ZN4llvmL10processFDEEPKcb ()
(gdb) where
#0  0x019bfb54 in _ZN4llvmL10processFDEEPKcb ()
#1  0x019bfb00 in llvm::RTDyldMemoryManager::registerEHFrames ()
#2  0x01c038bc in llvm::RuntimeDyldMachOCRTPBase<llvm::RuntimeDyldMachOI386>::registerEHFrames ()
#3  0x01b5aea8 in llvm::RuntimeDyld::registerEHFrames ()
#4  0x0000d3e4 in _ZL13linkAndVerifyv ()
#5  0x0000a45c in main ()