about summary refs log tree commit diff
path: root/src/rustllvm/ExecutionEngineWrapper.cpp
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2015-03-06 08:58:02 +0530
committerManish Goregaokar <manishsmail@gmail.com>2015-03-06 08:58:02 +0530
commite80fc10af19b1c9c4507187ab1c059b445d8f057 (patch)
tree8a9cfbb4f4595610f08d3bc2f3248697dfc44ab9 /src/rustllvm/ExecutionEngineWrapper.cpp
parentb0746ff19b3bc204215f04bbb5756159f9bc5c92 (diff)
parent3f4181a6e5c41a8d9d8ee434e6b75e7bef315998 (diff)
downloadrust-e80fc10af19b1c9c4507187ab1c059b445d8f057.tar.gz
rust-e80fc10af19b1c9c4507187ab1c059b445d8f057.zip
Rollup merge of #22862 - vhbit:broken-open, r=alexcrichton
 According to Apple's [arm64 calling convention](https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html#//apple_ref/doc/uid/TP40013702-SW1) varargs always are passed
through stack. Since `open` is actually a vararg function on Darwin,
it means that older declaration caused permissions to be taken from
stack, while passed through register => it set file permissions
to garbage and it was simply impossible to read/delete files after they
were created.

They way this commit handles it is to preserve compatibility with
existing code - it simply creates a shim unsafe function so all existing
callers continue work as nothing happened.
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions