[llvm-testresults] buildbot failure in llvm on clang-x86_64-linux

Jeffrey Yasskin jyasskin at google.com
Thu Nov 12 09:23:57 PST 2009


Oh, I forgot the secret to reproducing the problem: mmap has to return
addresses above 4GB so they're >2GB away from the normal code segment.

On Thu, Nov 12, 2009 at 9:21 AM, Jeffrey Yasskin <jyasskin at google.com> wrote:
> Oh, yuck. :( This area's totally broken. Your patch makes perfect
> sense, but it breaks a series of accidents that were making this work.
>
> The basic idea is that, on x86-64, calls more than 2GB away need to
> use a movabs+call instead of a simple call instruction. The current
> code generator always generates simple calls, so far calls have to go
> through a stub. The lazy JIT also generates stubs, and previous
> generations of JIT maintainers got confused between these two purposes
> for stubs. Thus we have code that looks like it's handling lazy
> compilation, which is actually protecting against far calls. Here, you
> removed a lazy-compilation stub for an external function more than 2GB
> away from the call site, and the pc-relative call broke, because the
> lazy-compilation stub was being used as a far-call stub.
>
> I'm almost done with a patch to make the code generator use far calls
> in all cases, which will fix this:
> http://codereview.appspot.com/154066. After that's in, your patch
> should be safe.
>
> Would you mind rolling back your change until I can get the far-call patch in?
>
> On Thu, Nov 12, 2009 at 12:54 AM, Eric Christopher <echristo at apple.com> wrote:
>> Hi Jeffrey,
>>
>> I can't duplicate this on any of the darwin machines, could you take a look at what's going on and my last patch please? A failure mode would help :)
>>
>> -eric
>>
>>>
>>> Can't duplicate it more at the moment, I'll look more after dinner:
>>>
>>> [ghostwheel:ExecutionEngine/JIT/Debug] echristo% ./JITTests
>>> [==========] Running 15 tests from 4 test cases.
>>> [----------] Global test environment set-up.
>>> [----------] 3 tests from JITEventListenerTest
>>> [ RUN      ] JITEventListenerTest.Simple
>>> [       OK ] JITEventListenerTest.Simple
>>> [ RUN      ] JITEventListenerTest.MultipleListenersDontInterfere
>>> [       OK ] JITEventListenerTest.MultipleListenersDontInterfere
>>> [ RUN      ] JITEventListenerTest.MatchesMachineCodeInfo
>>> [       OK ] JITEventListenerTest.MatchesMachineCodeInfo
>>> [----------] 6 tests from JITMemoryManagerTest
>>> [ RUN      ] JITMemoryManagerTest.NoAllocations
>>> [       OK ] JITMemoryManagerTest.NoAllocations
>>> [ RUN      ] JITMemoryManagerTest.TestCodeAllocation
>>> [       OK ] JITMemoryManagerTest.TestCodeAllocation
>>> [ RUN      ] JITMemoryManagerTest.TestSmallGlobalInts
>>> [       OK ] JITMemoryManagerTest.TestSmallGlobalInts
>>> [ RUN      ] JITMemoryManagerTest.TestLargeGlobalArray
>>> [       OK ] JITMemoryManagerTest.TestLargeGlobalArray
>>> [ RUN      ] JITMemoryManagerTest.TestManyGlobals
>>> [       OK ] JITMemoryManagerTest.TestManyGlobals
>>> [ RUN      ] JITMemoryManagerTest.TestManyStubs
>>> [       OK ] JITMemoryManagerTest.TestManyStubs
>>> [----------] 1 test from JIT
>>> [ RUN      ] JIT.GlobalInFunction
>>> [       OK ] JIT.GlobalInFunction
>>> [----------] 5 tests from JITTest
>>> [ RUN      ] JITTest.FarCallToKnownFunction
>>> [       OK ] JITTest.FarCallToKnownFunction
>>> [ RUN      ] JITTest.NonLazyCompilationStillNeedsStubs
>>> [       OK ] JITTest.NonLazyCompilationStillNeedsStubs
>>> [ RUN      ] JITTest.NonLazyLeaksNoStubs
>>> [       OK ] JITTest.NonLazyLeaksNoStubs
>>> [ RUN      ] JITTest.ModuleDeletion
>>> [       OK ] JITTest.ModuleDeletion
>>> [ RUN      ] JITTest.NoStubs
>>> [       OK ] JITTest.NoStubs
>>> [----------] Global test environment tear-down
>>> [==========] 15 tests from 4 test cases ran.
>>> [  PASSED  ] 15 tests.
>>> [ghostwheel:ExecutionEngine/JIT/Debug] echristo% file ./JITTests
>>> ./JITTests: Mach-O 64-bit executable x86_64
>>>
>>
>>
>




More information about the llvm-testresults mailing list