Dear Maintainer, See this log: https://buildd.debian.org/status/fetch.php?pkg=firefox&arch=amd64&ver=59.0.2-1&stamp=1522122310&raw=1 blhc reports these errors: CPPFLAGS missing (-D_FORTIFY_SOURCE=2): /usr/bin/gcc -std=gnu99 -o x86_64.o -c -DNDEBUG=1 -DTRIMMED=1 -I/<<PKGBUILDDIR>>/build/unix/elfhack/inject -I/<<PKGBUILDDIR>>/build-browser/build/unix/elfhack/inject -I/<<PKGBUILDDIR>>/build-browser/dist/include -I/usr/include/nspr -I/usr/include/nss -fPIC -include /<<PKGBUILDDIR>>/build-browser/mozilla-config.h -DMOZILLA_CLIENT -O2 -fno-stack-protector -MD -MP -MF .deps/x86_64.o.pp /<<PKGBUILDDIR>>/build-browser/build/unix/elfhack/inject/x86_64.c CPPFLAGS missing (-D_FORTIFY_SOURCE=2): /usr/bin/gcc -std=gnu99 -o xptcinvoke_asm_x86_64_unix.o -DNDEBUG=1 -DTRIMMED=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -g -fPIC -Wa,--noexecstack -include /<<PKGBUILDDIR>>/build-browser/mozilla-config.h -DMOZILLA_CLIENT -g -I/<<PKGBUILDDIR>>/xpcom/reflect/xptcall -I/<<PKGBUILDDIR>>/xpcom/reflect/xptinfo -c /<<PKGBUILDDIR>>/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_x86_64_unix.S CPPFLAGS missing (-D_FORTIFY_SOURCE=2): /usr/bin/gcc -std=gnu99 -o SkJumper_generated.o -DNDEBUG=1 -DTRIMMED=1 -DSKIA_IMPLEMENTATION=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -g -fPIC -Wa,--noexecstack -include /<<PKGBUILDDIR>>/build-browser/mozilla-config.h -DMOZILLA_CLIENT -g -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/c -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/config -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/core -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/effects -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/gpu -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/pathops -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/ports -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/private -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/utils -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/utils/mac -I/<<PKGBUILDDIR>>/gfx/skia/skia/include/views -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/core -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/gpu -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/gpu/effects -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/gpu/gl -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/gpu/glsl -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/image -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/lazy -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/opts -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/sfnt -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/sksl -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/utils -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/utils/mac -I/<<PKGBUILDDIR>>/gfx/skia/skia/src/utils/win -c /<<PKGBUILDDIR>>/gfx/skia/skia/src/jumper/SkJumper_generated.S Sure, -F_FORTIFY_SOURCE=2 *is* missing on those command lines, but it's also, afaik, irrelevant when compiling assembly files (.S), even if they are preprocessed.
Hey Mike, True, fortify source will very likely not be used by assembly files so this looks like a false positive. However blhc doesn't treat fortify source specially and tracks the use of all CPPFLAGS. As .S files are preprocessed it expects all CPPFLAGS to be present. So this report from blhc is valid (even though it might be confusing). Adding CPPFLAGS is the correct fix for this issue. Regards Simon
Hello, I ran into this same problem while trying to package XMRig, which uses CMake, so I don't know how to just make it use CPPFLAGS for Assembly. CPPFLAGS missing (-D_FORTIFY_SOURCE=2): /usr/bin/cc -DCL_TARGET_OPENCL_VERSION=200 -DCL_USE_DEPRECATED_OPENCL_1_2_APIS -DHAVE_BUILTIN_CLEAR_CACHE -DHAVE_ROTR -DHAVE_SYSLOG_H -DRAPIDJSON_SSE2 -DUNICODE -DXMRIG_64_BIT -DXMRIG_ALGO_ARGON2 -DXMRIG_ALGO_CN_FEMTO -DXMRIG_ALGO_CN_HEAVY -DXMRIG_ALGO_CN_LITE -DXMRIG_ALGO_CN_PICO -DXMRIG_ALGO_GHOSTRIDER -DXMRIG_ALGO_KAWPOW -DXMRIG_ALGO_RANDOMX -DXMRIG_FEATURE_ADL -DXMRIG_FEATURE_API -DXMRIG_FEATURE_ASM -DXMRIG_FEATURE_BENCHMARK -DXMRIG_FEATURE_CUDA -DXMRIG_FEATURE_DMI -DXMRIG_FEATURE_ENV -DXMRIG_FEATURE_HTTP -DXMRIG_FEATURE_HWLOC -DXMRIG_FEATURE_MSR -DXMRIG_FEATURE_NVML -DXMRIG_FEATURE_OPENCL -DXMRIG_FEATURE_SSE4_1 -DXMRIG_FEATURE_TLS -DXMRIG_FIX_RYZEN -DXMRIG_JSON_SINGLE_LINE_ARRAY -DXMRIG_MINER_PROJECT -DXMRIG_OS_LINUX -DXMRIG_OS_UNIX -DXMRIG_STRICT_OPENCL_CACHE -DXMRIG_VAES -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -I/usr/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/src/3rdparty -o CMakeFiles/xmrig-asm.dir/src/crypto/cn/asm/cn_main_loop.S.o -c /<<PKGBUILDDIR>>/src/crypto/cn/asm/cn_main_loop.S CPPFLAGS missing (-D_FORTIFY_SOURCE=2): /usr/bin/cc -DCL_TARGET_OPENCL_VERSION=200 -DCL_USE_DEPRECATED_OPENCL_1_2_APIS -DHAVE_BUILTIN_CLEAR_CACHE -DHAVE_ROTR -DHAVE_SYSLOG_H -DRAPIDJSON_SSE2 -DUNICODE -DXMRIG_64_BIT -DXMRIG_ALGO_ARGON2 -DXMRIG_ALGO_CN_FEMTO -DXMRIG_ALGO_CN_HEAVY -DXMRIG_ALGO_CN_LITE -DXMRIG_ALGO_CN_PICO -DXMRIG_ALGO_GHOSTRIDER -DXMRIG_ALGO_KAWPOW -DXMRIG_ALGO_RANDOMX -DXMRIG_FEATURE_ADL -DXMRIG_FEATURE_API -DXMRIG_FEATURE_ASM -DXMRIG_FEATURE_BENCHMARK -DXMRIG_FEATURE_CUDA -DXMRIG_FEATURE_DMI -DXMRIG_FEATURE_ENV -DXMRIG_FEATURE_HTTP -DXMRIG_FEATURE_HWLOC -DXMRIG_FEATURE_MSR -DXMRIG_FEATURE_NVML -DXMRIG_FEATURE_OPENCL -DXMRIG_FEATURE_SSE4_1 -DXMRIG_FEATURE_TLS -DXMRIG_FIX_RYZEN -DXMRIG_JSON_SINGLE_LINE_ARRAY -DXMRIG_MINER_PROJECT -DXMRIG_OS_LINUX -DXMRIG_OS_UNIX -DXMRIG_STRICT_OPENCL_CACHE -DXMRIG_VAES -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -I/usr/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/src/3rdparty -o CMakeFiles/xmrig-asm.dir/src/crypto/cn/asm/CryptonightR_template.S.o -c /<<PKGBUILDDIR>>/src/crypto/cn/asm/CryptonightR_template.S I attempted to make blhc ignore this by echoing "blhc: ignore-line-regexp: \.S", but it didn't work. I also tried to run blhc with the actual --ignore-line flag, but it was still picking up those lines. I even did a simplified "--ignore-line asm", but it still doesn't work. Just in case, I tried again with "/asm/". This is all valid Perl regex, but it seems like blhc just isn't working at all here. Am I doing something wrong? Regards -- Ben Westover
Hi Ben, to quote the man-page: Something like --ignore-line '/usr/bin/cc.*\S+\.S' should work. Best, Simon
Hello Simon, Yes, that worked well. Thanks for the hint about the anchoring; I did read the man page, but it seems I missed that part. There is a new problem, however. I was testing --ignore-line so I could eventually put the resulting regex in debian/rules as per this part of the man page: @echo "blhc: ignore-line-regexp: '/usr/bin/cc.*\S+\.S'" and also confirmed that it was echoed in the build log, but blhc is still triggered by those lines even though the regex is identical to one that worked with --ignore-line. What am I doing wrong this time? Thanks, -- Ben Westover
It turns out that the debian/rules line works if I remove the start and end characters (in this case the quotes). This should either be changed so that --ignore-line and the debian/rules string use the same format, or it should be documented.
Could you provide me with both failing and working debian/rules and the corresponding build logs? Best, Simon