diff options
| author | bors <bors@rust-lang.org> | 2013-08-09 02:53:08 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-09 02:53:08 -0700 |
| commit | 2fe2e59c67842b37de212bf63466b6280c2bf498 (patch) | |
| tree | a733a0515e6ce42ae375b484f0a4534c71dfcbcc /src/rt/rust_stack.cpp | |
| parent | 094e4260f8b0a1d1cddf235373d2588cefd167b9 (diff) | |
| parent | 0b47b4ccc9a714731112cc49633fc829cf46c95e (diff) | |
| download | rust-2fe2e59c67842b37de212bf63466b6280c2bf498.tar.gz rust-2fe2e59c67842b37de212bf63466b6280c2bf498.zip | |
auto merge of #8361 : alexcrichton/rust/fix-node-hashes-in-crates, r=thestinger
When running rusti 32-bit tests from a 64-bit host, these errors came up frequently. My best idea as to what was happening is: 1. First, if you hash the same `int` value on 32-bit and 64-bit, you will get two different hashes. 2. In a cross-compile situation, let's say x86_64 is building an i686 library, all of the hashes will be 64-bit hashes. 3. Then let's say you use the i686 libraries and then attempt to link against the same i686 libraries, because you're calculating hashes with a 32-bit int instead of a 64-bit one, you'll have different hashes and you won't be able to find items in the metadata (the items were generated with a 64-bit int). This patch changes the items to always be hashed as an `i64` to preserve the hash value across architectures. Here's a nice before/after for this patch of the state of rusti tests ``` host target before after 64 64 yes yes 64 32 no no (llvm assertion) 32 64 no yes 32 32 no no (llvm assertion) ``` Basically one case started working, but currently when the target is 32-bit LLVM is having a lot of problems generating code. That's another separate issue though.
Diffstat (limited to 'src/rt/rust_stack.cpp')
0 files changed, 0 insertions, 0 deletions
