{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/14194","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/14194/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/14194/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/14194/events","html_url":"https://github.com/JuliaLang/julia/pull/14194","id":119482149,"number":14194,"title":"ARM ABI","user":{"login":"maleadt","id":383068,"avatar_url":"https://avatars.githubusercontent.com/u/383068?v=3","gravatar_id":"","url":"https://api.github.com/users/maleadt","html_url":"https://github.com/maleadt","followers_url":"https://api.github.com/users/maleadt/followers","following_url":"https://api.github.com/users/maleadt/following{/other_user}","gists_url":"https://api.github.com/users/maleadt/gists{/gist_id}","starred_url":"https://api.github.com/users/maleadt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maleadt/subscriptions","organizations_url":"https://api.github.com/users/maleadt/orgs","repos_url":"https://api.github.com/users/maleadt/repos","events_url":"https://api.github.com/users/maleadt/events{/privacy}","received_events_url":"https://api.github.com/users/maleadt/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JuliaLang/julia/labels/arm","name":"arm","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-11-30T12:23:51Z","updated_at":"2015-12-29T19:36:40Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/14194","html_url":"https://github.com/JuliaLang/julia/pull/14194","diff_url":"https://github.com/JuliaLang/julia/pull/14194.diff","patch_url":"https://github.com/JuliaLang/julia/pull/14194.patch"},"body":"Hi all,\r\n\r\nI wanted to run Julia on my Raspberry Pi 2, so I have taken a stab at implementing an ARM ABI interface for Julia. This fixes the following issues: #13508, #12355, #12347, #12343, and partially fixes #12344 (the `parallel` test suite doesn't pass yet, but the segfaults are fixed).\r\n\r\nAlthough I'm happy with how most of Julia now works on my ARM-based computer, I don't think that implementing ABI's in this ad-hoc fashion is really future-proof. I'm sure there's missing features (not caught by the current test suite), and I'm not entirely convinced by the current ABI interface (`needPassByRef`, `use_sret`, `preferred_llvm_type` etc). Maybe we should look into using [llvm-abi](https://github.com/scross99/llvm-abi) ([announcement thread](http://thread.gmane.org/gmane.comp.compilers.clang.devel/43502/)), a library for generating ABI-compliant LLVM IR?\r\n\r\nSome questions/uncertainties:\r\n\r\n* I've added checks on EABI (AAPCS) and VFP procedure calling, currently `#error`ing out if not found. I'm not sure if this is appropriate, but the ABI currently relies on this.\r\n* I'm currently casting heterogeneous aggregates to integer arrays for alignment purposes, because this is what Clang does. On x86 however, Clang uses the `align` attribute. I don't think this is easy to add without messing with `ccall`, but it might be a neater way of aligning aggregates."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/167861411","html_url":"https://github.com/JuliaLang/julia/pull/14194#issuecomment-167861411","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/14194","id":167861411,"user":{"login":"JeffBezanson","id":744556,"avatar_url":"https://avatars.githubusercontent.com/u/744556?v=3","gravatar_id":"","url":"https://api.github.com/users/JeffBezanson","html_url":"https://github.com/JeffBezanson","followers_url":"https://api.github.com/users/JeffBezanson/followers","following_url":"https://api.github.com/users/JeffBezanson/following{/other_user}","gists_url":"https://api.github.com/users/JeffBezanson/gists{/gist_id}","starred_url":"https://api.github.com/users/JeffBezanson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeffBezanson/subscriptions","organizations_url":"https://api.github.com/users/JeffBezanson/orgs","repos_url":"https://api.github.com/users/JeffBezanson/repos","events_url":"https://api.github.com/users/JeffBezanson/events{/privacy}","received_events_url":"https://api.github.com/users/JeffBezanson/received_events","type":"User","site_admin":false},"created_at":"2015-12-29T19:36:40Z","updated_at":"2015-12-29T19:36:40Z","body":"+1 This is an awesome piece of work. Would be great to bring it to conclusion."}}