diff -Nru pocl-1.2/debian/changelog pocl-1.2/debian/changelog --- pocl-1.2/debian/changelog 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/changelog 2019-02-04 23:39:59.000000000 +0000 @@ -1,3 +1,25 @@ +pocl (1.2-5) unstable; urgency=medium + + * Disable dh_dwz which fails on 32-bit platforms, see #918903. + + -- Andreas Beckmann Tue, 05 Feb 2019 00:39:59 +0100 + +pocl (1.2-4) unstable; urgency=medium + + * Cherry-pick upstream "Fix kernel debug data emission". (Closes: #919824) + * Switch to debhelper-compat (= 12). + * Upload to unstable. + + -- Andreas Beckmann Mon, 04 Feb 2019 16:08:38 +0100 + +pocl (1.2-3) experimental; urgency=medium + + * kernel/test_printf: Add more tests. + * Perform compile test to select -march or -mcpu for clang. + * Upload to experimental. + + -- Andreas Beckmann Mon, 21 Jan 2019 01:34:24 +0100 + pocl (1.2-2) unstable; urgency=medium * Update symbols files. diff -Nru pocl-1.2/debian/control pocl-1.2/debian/control --- pocl-1.2/debian/control 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/control 2019-02-04 23:39:59.000000000 +0000 @@ -5,7 +5,7 @@ Uploaders: Vincent Danjean , Andreas Beckmann , Build-Depends: - debhelper-compat (= 11), + debhelper-compat (= 12), pkg-config, libhwloc-dev, libltdl-dev, diff -Nru pocl-1.2/debian/patches/0002-Fix-kernel-debug-data-emission.patch pocl-1.2/debian/patches/0002-Fix-kernel-debug-data-emission.patch --- pocl-1.2/debian/patches/0002-Fix-kernel-debug-data-emission.patch 1970-01-01 00:00:00.000000000 +0000 +++ pocl-1.2/debian/patches/0002-Fix-kernel-debug-data-emission.patch 2019-02-04 23:39:59.000000000 +0000 @@ -0,0 +1,109 @@ +From 9eac2cf03cedd74a70828adac17d6d9f7059abe9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pekka=20J=C3=A4=C3=A4skel=C3=A4inen?= + +Date: Thu, 4 Oct 2018 17:20:51 +0300 +Subject: [PATCH] Fix kernel debug data emission + +It is now (again) generated with the OpenCL standard build option -g. +--- + CHANGES | 11 ++++++----- + doc/sphinx/source/env_variables.rst | 6 ++++++ + lib/CL/pocl_build.c | 9 +++++++-- + lib/CL/pocl_llvm_build.cc | 6 ------ + lib/llvmopencl/Workgroup.cc | 2 ++ + lib/llvmopencl/linker.cpp | 27 ++++++++++++++------------- + 6 files changed, 35 insertions(+), 26 deletions(-) + +diff --git a/lib/CL/pocl_build.c b/lib/CL/pocl_build.c +index 8252e4aa..5c0e348f 100644 +--- a/lib/CL/pocl_build.c ++++ b/lib/CL/pocl_build.c +@@ -273,7 +277,8 @@ process_options (const char *options, char *modded_options, char *link_options, + else if (memcmp (token, "-g", 2) == 0) + { + #ifndef LLVM_OLDER_THAN_3_8 +- token = "-debug-info-kind=line-tables-only"; ++ token = "-dwarf-column-info -debug-info-kind=limited " \ ++ "-dwarf-version=4 -debugger-tuning=gdb"; + #endif + } + else if (memcmp (token, "-D", 2) == 0 || memcmp (token, "-I", 2) == 0) +diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc +index 830dab8f..5cd081d5 100644 +--- a/lib/CL/pocl_llvm_build.cc ++++ b/lib/CL/pocl_llvm_build.cc +@@ -546,9 +546,6 @@ int pocl_llvm_build_program(cl_program program, + + #ifdef LLVM_OLDER_THAN_3_9 + (*mod)->setPICLevel(PICLevel::Large); +-#else +- (*mod)->setPICLevel(PICLevel::BigPIC); +- (*mod)->setPIELevel(PIELevel::Large); + #endif + + +@@ -644,9 +641,6 @@ int pocl_llvm_link_program(cl_program program, unsigned device_i, + linked_module->setDataLayout(libmodule->getDataLayout()); + #ifdef LLVM_OLDER_THAN_3_9 + linked_module->setPICLevel(PICLevel::Large); +-#else +- linked_module->setPICLevel(PICLevel::BigPIC); +- linked_module->setPIELevel(PIELevel::Large); + #endif + + #else +diff --git a/lib/llvmopencl/Workgroup.cc b/lib/llvmopencl/Workgroup.cc +index 6115dd8c..331e8faa 100644 +--- a/lib/llvmopencl/Workgroup.cc ++++ b/lib/llvmopencl/Workgroup.cc +@@ -722,6 +722,8 @@ static Function *createWrapper(Module &M, Function *F, + replacePrintfCalls(pb, pbp, pbc, true, poclPrintf, M, L, printfCache); + } + ++ L->setSubprogram(F->getSubprogram()); ++ + return L; + } + +diff --git a/lib/llvmopencl/linker.cpp b/lib/llvmopencl/linker.cpp +index 5fd0bae3..d33b7863 100644 +--- a/lib/llvmopencl/linker.cpp ++++ b/lib/llvmopencl/linker.cpp +@@ -343,20 +343,21 @@ static void shared_copy(llvm::Module *program, const llvm::Module *lib, + llvm::Module::const_named_metadata_iterator mi,me; + for (mi=lib->named_metadata_begin(), me=lib->named_metadata_end(); + mi != me; mi++) { +- const NamedMDNode &NMD=*mi; +- /* This causes problems, because multiple wchar_size */ +- if (NMD.getName() == StringRef("llvm.module.flags")) +- continue; +- /* This causes problems with NVidia, +- * and is regenerated by pocl-ptx-gen anyway */ +- if (NMD.getName() == StringRef("nvvm.annotations")) +- continue; +- DB_PRINT(" %s:\n", NMD.getName().data()); +- NamedMDNode *NewNMD=program->getOrInsertNamedMetadata(NMD.getName()); +- for (unsigned i=0, e=NMD.getNumOperands(); i != e; ++i) +- NewNMD->addOperand(MapMetadata(NMD.getOperand(i), vvm)); ++ const NamedMDNode &NMD = *mi; ++ // This causes problems with NVidia, and is regenerated by pocl-ptx-gen ++ // anyway. ++ if (NMD.getName() == StringRef("nvvm.annotations")) ++ continue; ++ DB_PRINT(" %s:\n", NMD.getName().data()); ++ if (NamedMDNode *Old = program->getNamedMetadata(NMD.getName())) { ++ // Let's not overwrite existing metadata such as llvm.module.flags and ++ // opencl.ocl.version. ++ continue; ++ } ++ NamedMDNode *NewNMD = program->getOrInsertNamedMetadata(NMD.getName()); ++ for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i) ++ NewNMD->addOperand(MapMetadata(NMD.getOperand(i), vvm)); + } +- + } + + int link(llvm::Module *program, const llvm::Module *lib, std::string &log) { +-- +2.11.0 + diff -Nru pocl-1.2/debian/patches/armhf.patch pocl-1.2/debian/patches/armhf.patch --- pocl-1.2/debian/patches/armhf.patch 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/patches/armhf.patch 2019-02-04 23:39:59.000000000 +0000 @@ -13,14 +13,3 @@ if(DEFINED WITH_LLVM_CONFIG AND WITH_LLVM_CONFIG) # search for preferred version if(IS_ABSOLUTE "${WITH_LLVM_CONFIG}") -@@ -703,7 +706,9 @@ set_cache_var(LLVM_LINK_TEST "LLVM link - #################################################################### - #X86 has -march and -mcpu reversed, for clang - --if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(powerpc|armv7|aarch64)") -+if(CMAKE_LIBRARY_ARCHITECTURE MATCHES "gnueabi") -+ set(CLANG_MARCH_FLAG "-mcpu=") -+elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(powerpc|armv7|aarch64)") - set(CLANG_MARCH_FLAG "-mcpu=") - else() - set(CLANG_MARCH_FLAG "-march=") diff -Nru pocl-1.2/debian/patches/custom_try_compile_clang_silent.patch pocl-1.2/debian/patches/custom_try_compile_clang_silent.patch --- pocl-1.2/debian/patches/custom_try_compile_clang_silent.patch 1970-01-01 00:00:00.000000000 +0000 +++ pocl-1.2/debian/patches/custom_try_compile_clang_silent.patch 2019-02-04 23:39:59.000000000 +0000 @@ -0,0 +1,32 @@ +From 86559dfcbac37a90b4e73c4b89c4ba211cf3e377 Mon Sep 17 00:00:00 2001 +From: Andreas Beckmann +Date: Wed, 16 Jan 2019 21:24:12 +0000 +Subject: [PATCH 1/2] add custom_try_compile_clang_silent macro + +--- + cmake/LLVM.cmake | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/cmake/LLVM.cmake ++++ b/cmake/LLVM.cmake +@@ -360,6 +360,11 @@ macro(custom_try_compile_clang SOURCE1 S + custom_try_compile_c_cxx("${CLANG}" "c" "${SOURCE1}" "${SOURCE2}" ${RES_VAR} "-c" ${ARGN}) + endmacro() + ++# clang++ try-compile macro ++macro(custom_try_compile_clang_silent SOURCE1 SOURCE2 RES_VAR) ++ custom_try_compile_c_cxx_silent("${CLANG}" "c" "${SOURCE1}" "${SOURCE2}" ${RES_VAR} "-c" ${ARGN}) ++endmacro() ++ + # clang++ try-link macro + macro(custom_try_link_clang SOURCE1 SOURCE2 RES_VAR) + set(RANDOM_FILENAME "${CMAKE_BINARY_DIR}/compile_test_${RNDNAME}.${SUFFIX}") +@@ -768,7 +773,7 @@ endif() + if(NOT DEFINED ${CL_DISABLE_HALF}) + set(CL_DISABLE_HALF 0) + message(STATUS "Checking fp16 support") +- custom_try_compile_c_cxx_silent("${CLANG}" "c" "__fp16 callfp16(__fp16 a) { return a * (__fp16)1.8; };" "__fp16 x=callfp16((__fp16)argc);" RESV -c ${CLANG_TARGET_OPTION}${LLC_TRIPLE} ${CLANG_MARCH_FLAG}${LLC_HOST_CPU}) ++ custom_try_compile_clang_silent("__fp16 callfp16(__fp16 a) { return a * (__fp16)1.8; };" "__fp16 x=callfp16((__fp16)argc);" RESV ${CLANG_TARGET_OPTION}${LLC_TRIPLE} ${CLANG_MARCH_FLAG}${LLC_HOST_CPU}) + if(RESV) + set(CL_DISABLE_HALF 1) + endif() diff -Nru pocl-1.2/debian/patches/find-clang-march-mcpu-flag.patch pocl-1.2/debian/patches/find-clang-march-mcpu-flag.patch --- pocl-1.2/debian/patches/find-clang-march-mcpu-flag.patch 1970-01-01 00:00:00.000000000 +0000 +++ pocl-1.2/debian/patches/find-clang-march-mcpu-flag.patch 2019-02-04 23:39:59.000000000 +0000 @@ -0,0 +1,54 @@ +From 13eadfc3b66cda5c523a669dcb2914a591002403 Mon Sep 17 00:00:00 2001 +From: Andreas Beckmann +Date: Wed, 16 Jan 2019 21:37:17 +0000 +Subject: [PATCH 2/2] perform compile test to select -march or -mcpu for clang + +--- + cmake/LLVM.cmake | 29 ++++++++++++++++++++--------- + 1 file changed, 20 insertions(+), 9 deletions(-) + +--- a/cmake/LLVM.cmake ++++ b/cmake/LLVM.cmake +@@ -503,15 +503,6 @@ if(NOT DEFINED LINK_WITH_CLANG) + endif() + + #################################################################### +-#X86 has -march and -mcpu reversed, for clang +- +-if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(powerpc|armv7|aarch64)") +- set(CLANG_MARCH_FLAG "-mcpu=") +-else() +- set(CLANG_MARCH_FLAG "-march=") +-endif() +- +-#################################################################### + + macro(CHECK_ALIGNOF TYPE TYPEDEF OUT_VAR) + +@@ -716,6 +707,26 @@ endif() + + + #################################################################### ++# Some architectures have -march and -mcpu reversed ++ ++if(NOT DEFINED ${CLANG_MARCH_FLAG}) ++ message(STATUS "Checking clang -march vs. -mcpu flag") ++ custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -march=${LLC_HOST_CPU}) ++ if(NOT RES) ++ set(CLANG_MARCH_FLAG "-march=") ++ else() ++ custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -mcpu=${LLC_HOST_CPU}) ++ if(NOT RES) ++ set(CLANG_MARCH_FLAG "-mcpu=") ++ else() ++ message(FATAL_ERROR "Could not determine whether to use -march or -mcpu with clang") ++ endif() ++ endif() ++ ++ set(CLANG_MARCH_FLAG ${CLANG_MARCH_FLAG} CACHE INTERNAL "Clang option used to specify the target cpu") ++endif() ++ ++#################################################################### + + # This tests that we can actually link to the llvm libraries. + # Mostly to catch issues like #295 - cannot find -ledit diff -Nru pocl-1.2/debian/patches/generic-cpu.patch pocl-1.2/debian/patches/generic-cpu.patch --- pocl-1.2/debian/patches/generic-cpu.patch 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/patches/generic-cpu.patch 2019-02-04 23:39:59.000000000 +0000 @@ -17,7 +17,7 @@ set(CLANG_FLAGS ${HOST_CLANG_FLAGS} ${CLANG_CPUFLAGS} --- a/lib/CL/devices/basic/basic.c +++ b/lib/CL/devices/basic/basic.c -@@ -333,6 +333,9 @@ pocl_basic_init_device_infos(unsigned j, +@@ -350,6 +350,9 @@ pocl_init_cpu_device_infos (cl_device_id if(dev->llvm_cpu && (!strcmp(dev->llvm_cpu, "(unknown)"))) dev->llvm_cpu = OCL_KERNEL_TARGET_CPU; @@ -29,7 +29,7 @@ dev->llvm_target_triplet = ""; --- a/lib/CL/pocl_llvm_build.cc +++ b/lib/CL/pocl_llvm_build.cc -@@ -838,7 +838,7 @@ kernel_library +@@ -846,7 +846,7 @@ kernel_library kernellib += getX86KernelLibName(); else #endif @@ -38,3 +38,33 @@ } kernellib += ".bc"; +--- a/cmake/LLVM.cmake ++++ b/cmake/LLVM.cmake +@@ -711,17 +711,25 @@ endif() + + if(NOT DEFINED ${CLANG_MARCH_FLAG}) + message(STATUS "Checking clang -march vs. -mcpu flag") +- custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -march=${LLC_HOST_CPU}) ++ if(LLC_HOST_CPU STREQUAL "GENERIC" AND NOT KERNELLIB_HOST_CPU_VARIANTS STREQUAL "distro") ++ set(CLANG_MARCH_FLAG "-None=") ++ else() ++ set(LLC_HOST_CPU_TEST "${LLC_HOST_CPU}") ++ if(LLC_HOST_CPU STREQUAL "GENERIC") ++ set(LLC_HOST_CPU_TEST "${LLC_HOST_CPU_AUTO}") ++ endif() ++ custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -march=${LLC_HOST_CPU_TEST}) + if(NOT RES) + set(CLANG_MARCH_FLAG "-march=") + else() +- custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -mcpu=${LLC_HOST_CPU}) ++ custom_try_compile_clang_silent("" "return 0;" RES ${CLANG_TARGET_OPTION}${LLC_TRIPLE} -mcpu=${LLC_HOST_CPU_TEST}) + if(NOT RES) + set(CLANG_MARCH_FLAG "-mcpu=") + else() + message(FATAL_ERROR "Could not determine whether to use -march or -mcpu with clang") + endif() + endif() ++ endif() + + set(CLANG_MARCH_FLAG ${CLANG_MARCH_FLAG} CACHE INTERNAL "Clang option used to specify the target cpu") + endif() diff -Nru pocl-1.2/debian/patches/more-printf-tests.patch pocl-1.2/debian/patches/more-printf-tests.patch --- pocl-1.2/debian/patches/more-printf-tests.patch 1970-01-01 00:00:00.000000000 +0000 +++ pocl-1.2/debian/patches/more-printf-tests.patch 2019-02-04 23:39:59.000000000 +0000 @@ -0,0 +1,28 @@ +Author: Andreas Beckmann +Description: add more printf tests + +--- a/tests/kernel/test_printf.cl ++++ b/tests/kernel/test_printf.cl +@@ -179,4 +179,9 @@ kernel void test_printf() + printf("|%s|%4s|%-4s|%4s|%.4s|\n", "aa", "bb", "cc", "dddddddddd", "eeeeee"); + printf("|%p|%12p|%-12p|\n", (void*)0x2349aacc, (void*)0xdeaddeed, (void*)0x92820384); + ++ printf ("\nPARAMETER PASSING\n\n"); ++ ++ printf("%c %#v2hhx %#v2hhx %c\n", '*', (char2)(0xFA, 0xFB), (char2)(0xFC, 0xFD), '.'); ++ printf("%c %#v2hx %#v2hx %c\n", '*', (short2)(0x1234, 0x8765), (short2)(0xBEEF, 0xF00D), '.'); ++ printf("%c %#v2hlx %#v2hlx %c\n", '*', (int2)(0x12345678, 0x87654321), (int2)(0x2468ACE0, 0xFDB97531), '.'); + } +--- a/tests/kernel/test_printf_expout.txt ++++ b/tests/kernel/test_printf_expout.txt +@@ -151,4 +151,10 @@ VECTORS + |a| b|c | + |aa| bb|cc |dddddddddd|eeee| + |0x2349aacc| 0xdeaddeed|0x92820384 | ++ ++PARAMETER PASSING ++ ++* 0xfa,0xfb 0xfc,0xfd . ++* 0x1234,0x8765 0xbeef,0xf00d . ++* 0x12345678,0x87654321 0x2468ace0,0xfdb97531 . + OK diff -Nru pocl-1.2/debian/patches/series pocl-1.2/debian/patches/series --- pocl-1.2/debian/patches/series 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/patches/series 2019-02-04 23:39:59.000000000 +0000 @@ -1,4 +1,8 @@ 0001-Fix-linker-flags-for-Apple.patch +0002-Fix-kernel-debug-data-emission.patch +more-printf-tests.patch +custom_try_compile_clang_silent.patch +find-clang-march-mcpu-flag.patch generic-cpu.patch distro.patch no-compiler-rt.patch diff -Nru pocl-1.2/debian/patches/sphinx.patch pocl-1.2/debian/patches/sphinx.patch --- pocl-1.2/debian/patches/sphinx.patch 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/patches/sphinx.patch 2019-02-04 23:39:59.000000000 +0000 @@ -1,6 +1,6 @@ Author: Andreas Beckmann Description: drop unused deprecated module 'sphinx.ext.pngmath' -Bug-Debian: #918828 +Bug-Debian: https://bugs.debian.org/918828 --- a/doc/sphinx/source/conf.py +++ b/doc/sphinx/source/conf.py diff -Nru pocl-1.2/debian/rules pocl-1.2/debian/rules --- pocl-1.2/debian/rules 2019-01-15 15:55:49.000000000 +0000 +++ pocl-1.2/debian/rules 2019-02-04 23:39:59.000000000 +0000 @@ -114,6 +114,9 @@ override_dh_makeshlibs: run_dh_makeshlibs delayed_check_dh_auto_test_result +# fails on 32-bit: #918903 +override_dh_dwz: + override_dh_gencontrol: dh_gencontrol -- \ -V'LLVM:Version=$(LLVM_VERSION)' \