[clang] 6a4fbf1 - [test] Add test for cross compiling on Linux

Fangrui Song via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 21 15:37:43 PDT 2021


Author: Fangrui Song
Date: 2021-03-21T15:37:35-07:00
New Revision: 6a4fbf14ef1027be79703c0ca415eaedd4e1c7c7

URL: https://github.com/llvm/llvm-project/commit/6a4fbf14ef1027be79703c0ca415eaedd4e1c7c7
DIFF: https://github.com/llvm/llvm-project/commit/6a4fbf14ef1027be79703c0ca415eaedd4e1c7c7.diff

LOG: [test] Add test for cross compiling on Linux

Added: 
    clang/test/Driver/Inputs/debian_multiarch_tree/lib/aarch64-linux-gnu/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/lib/i386-linux-gnu/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/lib/x86_64-linux-gnu/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/lib32/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/lib64/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/aarch64-linux-gnu/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/backward/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crt1.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crti.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crtn.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/backward/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/32/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/aarch64-linux-gnu/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbegin.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbeginT.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtend.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/32/crtbegin.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crt1.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crti.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crtn.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crt1.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crti.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crtn.o
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib32/.keep
    clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib64/.keep
    clang/test/Driver/linux-cross.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/lib/aarch64-linux-gnu/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/lib/aarch64-linux-gnu/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/lib/i386-linux-gnu/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/lib/i386-linux-gnu/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/lib/x86_64-linux-gnu/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/lib/x86_64-linux-gnu/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/lib32/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/lib32/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/lib64/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/lib64/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/aarch64-linux-gnu/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/aarch64-linux-gnu/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/backward/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/include/c++/10/backward/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crt1.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crt1.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crti.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crti.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crtn.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/aarch64-linux-gnu/lib/crtn.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/backward/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/c++/10/backward/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/32/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/include/x86_64-linux-gnu/c++/10/32/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/aarch64-linux-gnu/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/aarch64-linux-gnu/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbegin.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbegin.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbeginT.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbeginT.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtend.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc-cross/aarch64-linux-gnu/10/crtend.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/32/crtbegin.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/32/crtbegin.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crt1.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crt1.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crti.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crti.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crtn.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/i386-linux-gnu/crtn.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crt1.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crt1.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crti.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crti.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crtn.o b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib/x86_64-linux-gnu/crtn.o
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib32/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib32/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib64/.keep b/clang/test/Driver/Inputs/debian_multiarch_tree/usr/lib64/.keep
new file mode 100644
index 000000000000..e69de29bb2d1

diff  --git a/clang/test/Driver/linux-cross.cpp b/clang/test/Driver/linux-cross.cpp
new file mode 100644
index 000000000000..fa07d615f4fc
--- /dev/null
+++ b/clang/test/Driver/linux-cross.cpp
@@ -0,0 +1,70 @@
+// UNSUPPORTED: system-windows
+
+/// Test native x86-64 in the tree.
+// RUN: %clang -### %s --target=x86_64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \
+// RUN:   --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64
+// DEBIAN_X86_64:      "-internal-isystem"
+// DEBIAN_X86_64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10"
+// DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10"
+// DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward"
+// DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include"
+// DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include"
+// DEBIAN_X86_64:      "-L
+// DEBIAN_X86_64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10"
+/// Debian patches MULTILIB_OSDIRNAMES (../lib64 -> ../lib), so gcc uses 'lib' instead of 'lib64'.
+/// This 
diff erence does not matter in practice.
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib64"
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib/x86_64-linux-gnu"
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64"
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64"
+/// /usr/x86_64-linux-gnu does not exist, so there is no /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/lib.
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../.."
+/// -ccc-install-dir is not within sysroot. No bin/../lib.
+/// $sysroot/lib and $sysroot/usr/lib. Fallback when GCC installation is unavailable.
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib"
+// DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib"
+
+/// Test -m32.
+// RUN: %clang -### %s --target=x86_64-linux-gnu -m32 --sysroot=%S/Inputs/debian_multiarch_tree \
+// RUN:   --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64_M32
+// DEBIAN_X86_64_M32:      "-internal-isystem"
+// DEBIAN_X86_64_M32-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10/32"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include"
+// DEBIAN_X86_64_M32:      "-L
+// DEBIAN_X86_64_M32-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/32"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib32"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib/i386-linux-gnu"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib32"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib32"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../.."
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib"
+// DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib"
+
+/// Test a cross compiler.
+// RUN: %clang -### %s --target=aarch64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \
+// RUN:   --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_AARCH64
+// DEBIAN_AARCH64:      "-internal-isystem"
+// DEBIAN_AARCH64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10"
+// DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10/aarch64-linux-gnu"
+// DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10/backward"
+// DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include"
+// DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include"
+// DEBIAN_AARCH64:      "-L
+// DEBIAN_AARCH64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10"
+/// Debian patches MULTILIB_OSDIRNAMES (../lib64 -> ../lib), so aarch64-linux-gnu-gcc uses 'lib' instead of 'lib64'.
+/// This 
diff erence does not matter in practice.
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../lib64"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib/aarch64-linux-gnu"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/aarch64-linux-gnu"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/lib"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../.."
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib"
+// DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib"


        


More information about the cfe-commits mailing list