Skip to content

Unsupported calling convention on i686-pc-windows-msvc #541

Closed
@tmccrmck

Description

@tmccrmck

I was investigating how easy it would be to create bindings for Windows 32-bit with different calling conventions and so I ran the example in the ./bindgen-integration directory.

System

> rustup show
Default host: x86_64-pc-windows-msvc

installed toolchains
--------------------

stable-i686-pc-windows-msvc
stable-x86_64-pc-windows-msvc (default)
nightly-i686-pc-windows-msvc
nightly-x86_64-pc-windows-msvc

active toolchain
----------------

stable-i686-pc-windows-msvc (directory override for 'C:\Repos\rust-bindgen\bindgen-integration')
rustc 1.15.1 (021bd294c 2017-02-08)


> clang -v
clang version 3.9.1 (branches/release_39)
Target: i686-pc-windows-msvc

Input C/C++ Header

#pragma once

class Test {
  int m_int;
  double m_double;
public:
  static const char* name();
  Test(int foo);
  Test(double foo);

  static const int COUNTDOWN[];
  static const int* COUNTDOWN_PTR;
  static const int* countdown();
};

namespace testing {

typedef Test TypeAlias;

} // namespace testing

typedef testing::TypeAlias TypeAlias;

Bindgen Invokation

let bindings = Builder::default()
        .no_unstable_rust()
        .enable_cxx_namespaces()
        .raw_line("pub use self::root::*;")
        .header("cpp/Test.h")
        .clang_arg("-x")
        .clang_arg("c++")
        .clang_arg("-std=c++11")
        .generate()
        .expect("Unable to generate bindings");

Actual Results

error: failed to run custom build command for `bindgen-integration v0.1.0 (file:///C:/Repos/rust-bindgen/bindgen-integration)`
process didn't exit successfully: `C:\Repos\rust-bindgen\bindgen-integration\target\debug\build\bindgen-integration-a1a8c12a2facefae\build-script-build` (exit code: 101)
--- stdout
TARGET = Some("i686-pc-windows-msvc")
OPT_LEVEL = Some("0")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXX_i686-pc-windows-msvc = None
CXX_i686_pc_windows_msvc = None
HOST_CXX = None
CXX = None
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXXFLAGS_i686-pc-windows-msvc = None
CXXFLAGS_i686_pc_windows_msvc = None
HOST_CXXFLAGS = None
CXXFLAGS = None
PROFILE = Some("debug")
running: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64_x86\\cl.exe" "/nologo" "/MD" "/Z7" "/FoC:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\
\bindgen-integration-89b7af89d851f38d\\out\\cpp\\Test.o" "/c" "cpp/Test.cc"
ExitStatus(ExitStatus(0))
TARGET = Some("i686-pc-windows-msvc")
running: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64_x86\\lib.exe" "/OUT:C:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\\bindgen-integratio
n-89b7af89d851f38d\\out\\libtest.a" "/nologo" "C:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\\bindgen-integration-89b7af89d851f38d\\out\\cpp\\Test.o"
ExitStatus(ExitStatus(0))
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXX_i686-pc-windows-msvc = None
CXX_i686_pc_windows_msvc = None
HOST_CXX = None
CXX = None
cargo:rustc-link-search=native=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\
cargo:rustc-link-lib=static=test
cargo:rustc-link-search=native=C:\Repos\rust-bindgen\bindgen-integration\target\debug\build\bindgen-integration-89b7af89d851f38d\out
TARGET = Some("i686-pc-windows-msvc")
cpp/Test.h:1:9: warning: #pragma once in main file [-Wpragma-once-outside-header], err: false

--- stderr
thread 'main' panicked at 'unsupported calling convention: 4', C:\Repos\rust-bindgen\src\ir\function.rs:103
note: Run with `RUST_BACKTRACE=1` for a backtrace.

Steps to reproduce

  1. Install clang 3.9.1 for Windows 32-bit
  2. > git clone https://github.com/servo/rust-bindgen.git
  3. > cd rust-bindgen\bindgen-integration
  4. > rustup override set stable-i686-pc-windows-msvc
  5. > cargo build

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions