Skip to content

Build break of calling convention __cdecl since appending of 'Interop' test folder #5318

@leemgs

Description

@leemgs

Even though __cdecl is accepted but typically ignored on ARM and x64 processors by the compiler, the cross build for Linux/ARM is broken (while doing the build time) by the [-Werror,-Wignored-attributes] policy of the compiler. This issue was suddenly generated since appending of 'Interop' test folder. Mr. @tijoytom, Could you explain us why we have to keep the __cdecl calling convention?.

/cc @jkotas , @benpye , @tijoytom

Build environment:

  • Build PC: Intel i5 CPU (quad core) , MEM 8GiB
  • Build OS: Ubuntu 14.04 X86 64bit
  • Memory: DDR3 8GiB
  • Commit number: 586ce53 (Fri Mar 11 18:57:50 2016)
  • Build command:
    u14.04$> cd ./coreclr
    u14.04$> time ROOTFS_DIR=/work/dotnet/rootfs-coreclr/arm ./build.sh arm debug verbose cross

Build Break:

                      . . . .  UPPER OMISSIOn . . . . . 
/usr/bin/clang++-3.5  -fPIC  -Wall -Wno-null-conversion -std=c++11 -g -O0   -target arm-linux-gnueabihf -B /work/dotnet/rootfs-coreclr/arm/usr/lib/gcc/arm-linux-gnueabihf -L/work/dotnet/rootfs-coreclr/arm/lib/arm-linux-gnueabihf --sysroot=/work/dotnet/rootfs-coreclr/arm  -target arm-linux-gnueabihf -B /work/dotnet/rootfs-coreclr/arm/usr/lib/gcc/arm-linux-gnueabihf -L/work/dotnet/rootfs-coreclr/arm/lib/arm-linux-gnueabihf --sysroot=/work/dotnet/rootfs-coreclr/arm -target arm-linux-gnueabihf -B /work/dotnet/rootfs-coreclr/arm/usr/lib/gcc/arm-linux-gnueabihf -L/work/dotnet/rootfs-coreclr/arm/lib/arm-linux-gnueabihf --sysroot=/work/dotnet/rootfs-coreclr/arm -shared -Wl,-soname,libRefCharArrayNative.so -o libRefCharArrayNative.so CMakeFiles/RefCharArrayNative.dir/RefCharArrayNative.cpp.o  
/work/dotnet/arm32/coreclr/tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp:111:27: error: 
      calling convention '__cdecl' ignored for this target
      [-Werror,-Wignored-attributes]
extern "C" DLL_EXPORT int __cdecl Writeline(char * pFormat, int i, char ...
                          ^
/work/dotnet/arm32/coreclr/tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp:127:28: error: 
      calling convention '__cdecl' ignored for this target
      [-Werror,-Wignored-attributes]
extern "C" DLL_EXPORT BOOL __cdecl RPinvoke_DelMarshal_InOut(Test_DelMar...
                           ^
/work/dotnet/arm32/coreclr/tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp:146:17: error: 
      calling convention '__cdecl' ignored for this target
      [-Werror,-Wignored-attributes]
typedef LPCSTR (__cdecl * Test_DelMarshalPointer_Out)(/*[out]*/ LPSTR * s);
                ^
3 errors generated.
make[2]: *** [tests/src/Interop/StringMarshalling/LPSTR/CMakeFiles/LPSTRTestNative.dir/LPSTRTestNative.cpp.o] 오류 1
make[2]: Leaving directory `/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug'
make[1]: *** [tests/src/Interop/StringMarshalling/LPSTR/CMakeFiles/LPSTRTestNative.dir/all] 오류 2
make[1]: /usr/bin/cmake -E cmake_progress_report /work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles 
*** 끝나지 않은 작업을 기다리고 있습니다....
/work/dotnet/arm32/coreclr/tests/src/Interop/StringMarshalling/LPTSTR/LPTSTRTestNative.cpp:129:17: error: 
      calling convention '__cdecl' ignored for this target
      [-Werror,-Wignored-attributes]
typedef LPTSTR (__cdecl * Test_Del_MarshalStrB_Out)(/*[out]*/ LPTSTR * s);
                ^
1 error generated.

/work/dotnet/arm32/coreclr/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/exceptionsxs.cpp:74:5: error: calling convention '__cdecl' ignored for this target [-Werror,-Wignored-attributes]
int __cdecl main(int argc, char *argv[])
    ^
1 error generated.
[ 89%] make[2]: *** [src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeFiles/paltest_pal_sxs_test1.dir/exceptionsxs.cpp.o] 오류 1
make[2]: Leaving directory `/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug'
make[1]: *** [src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeFiles/paltest_pal_sxs_test1.dir/all] 오류 2
make[1]: *** 끝나지 않은 작업을 기다리고 있습니다....
Dependee "/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/src/ilasm/CMakeFiles/ilasm.dir/DependInfo.cmake" is newer than depender "/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/src/ilasm/CMakeFiles/ilasm.dir/depend.internal".
Dependee "/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/src/ilasm/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/src/ilasm/CMakeFiles/ilasm.dir/depend.internal".
Scanning dependencies of target ilasm
make[2]: Leaving directory `/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug'
make[2]: Leaving directory `/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug'
make -f src/jit/dll/CMakeFiles/ClrJit.dir/build.make src/jit/dll/CMakeFiles/ClrJit.dir/build
make -f src/dlls/dbgshim/CMakeFiles/dbgshim.dir/build.make src/dlls/dbgshim/CMakeFiles/dbgshim.dir/build
make[2]: Entering directory `/work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug'
/usr/bin/cmake -E cmake_progress_report /work/dotnet/arm32/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles

git blame:

invain@DB400:/work/dotnet/arm32/coreclr$ git blame -L 110,113  tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 110) 
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 111) extern "C" DLL_EXPORT int __cdecl Writeline(char * pFormat, int i, char c, double d, short s, unsigned u)
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 112) {
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 113)       int sum = i;
invain@DB400:/work/dotnet/arm32/coreclr$ git blame -L 121,126  tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 121)       sum += (int)u;
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 122)       return sum;
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 123) }
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 124) 
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 125) 
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 126) typedef LPCTSTR (__stdcall * Test_DelMarshal_InOut)(/*[in]*/ LPCSTR s);
invain@DB400:/work/dotnet/arm32/coreclr$ 
invain@DB400:/work/dotnet/arm32/coreclr$ 
invain@DB400:/work/dotnet/arm32/coreclr$ 
invain@DB400:/work/dotnet/arm32/coreclr$ 
invain@DB400:/work/dotnet/arm32/coreclr$ git blame -L 142,147  tests/src/Interop/StringMarshalling/LPSTR/LPSTRTestNative.cpp
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 142) 
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 143)     return TRUE;
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 144) }
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 145) 
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 146) typedef LPCSTR (__cdecl * Test_DelMarshalPointer_Out)(/*[out]*/ LPSTR * s);
282b9fce (tijoytom 2016-03-03 21:14:14 +0000 147) extern "C" DLL_EXPORT BOOL WINAPI RPinvoke_DelMarshalPointer_Out(Test_DelMarshalPointer_Out d)
invain@DB400:/work/dotnet/arm32/coreclr$ 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions