about summary refs log tree commit diff
path: root/src/rt/rust_stack.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-08-09 02:53:08 -0700
committerbors <bors@rust-lang.org>2013-08-09 02:53:08 -0700
commit2fe2e59c67842b37de212bf63466b6280c2bf498 (patch)
treea733a0515e6ce42ae375b484f0a4534c71dfcbcc /src/rt/rust_stack.cpp
parent094e4260f8b0a1d1cddf235373d2588cefd167b9 (diff)
parent0b47b4ccc9a714731112cc49633fc829cf46c95e (diff)
downloadrust-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