ClangToTiOS red due to "out of range pc-relative fixup" in brotli thumb code |
||
Issue descriptionIt appears that upstream LLVM added some extra fixup validation in r278659, and this is now triggering on the iOS bot: FAILED: obj/third_party/brotli/brotli/huffman.o ... fatal error: error in backend: out of range pc-relative fixup value FAILED: obj/third_party/brotli/brotli/decode.o ... fatal error: error in backend: out of range pc-relative fixup value Probably this code was being miscompiled before and we've only discovered it now. Fixing this in LLVM will probably be hard. I don't think we can revert the validation if it is correct, and we should instead work around the problem in Chromium, probably by applying noinline in a few places.
,
Aug 15 2016
Attaching the preprocessed source. cc1 invocation: "/work/llvm/build.release/bin/clang-3.9" "-cc1" "-triple" "thumbv7-apple-ios9.0.0" "-emit-obj" "-disable-free" "-main-file-name" "huffman.c" "-mrelocation-model" "pic" "-pic-level" "2" "-mthread-model" "posix" "-mdisable-fp-elim" "-relaxed-aliasing" "-masm-verbose" "-target-cpu" "cortex-a8" "-target-feature" "+soft-float-abi" "-target-abi" "apcs-gnu" "-mfloat-abi" "soft" "-target-linker-version" "242" "-dwarf-column-info" "-debug-info-kind=standalone" "-dwarf-version=2" "-debugger-tuning=lldb" "-coverage-file" "/work/chromium/src/out/Release/obj/third_party/brotli/brotli/huffman.o" "-resource-dir" "/work/llvm/build.release/bin/../lib/clang/4.0.0" "-dependency-file" "obj/third_party/brotli/brotli/huffman.o.d" "-MT" "obj/third_party/brotli/brotli/huffman.o" "-isysroot" "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk" "-D" "V8_DEPRECATION_WARNINGS" "-D" "NO_TCMALLOC" "-D" "DISABLE_NACL" "-D" "CHROMIUM_BUILD" "-D" "FIELDTRIAL_TESTING_ENABLED" "-D" "CR_CLANG_REVISION=274360" "-D" "CR_XCODE_VERSION=0632" "-D" "_DEBUG" "-D" "DYNAMIC_ANNOTATIONS_ENABLED=1" "-D" "WTF_USE_DYNAMIC_ANNOTATIONS=1" "-I" "../../third_party/brotli/dec" "-I" "../.." "-I" "gen" "-O2" "-Wheader-hygiene" "-Wstring-conversion" "-Werror" "-Wall" "-Wno-unused-variable" "-Wno-missing-field-initializers" "-Wno-unused-parameter" "-Wno-c++11-narrowing" "-Wno-covered-switch-default" "-Wno-deprecated-register" "-Wno-unneeded-internal-declaration" "-Wno-inconsistent-missing-override" "-Wno-shift-negative-value" "-Wno-undefined-var-template" "-Wno-nonportable-include-path" "-Wno-address-of-packed-member" "-std=c99" "-fdebug-compilation-dir" "/work/chromium/src/out/Release" "-ferror-limit" "19" "-fmessage-length" "274" "-fvisibility" "hidden" "-stack-protector" "1" "-stack-protector-buffer-size" "4" "-fallow-half-arguments-and-returns" "-fblocks" "-fobjc-runtime=ios-9.0.0" "-fencode-extended-block-signature" "-fsjlj-exceptions" "-fmax-type-align=16" "-fdiagnostics-show-option" "-fcolor-diagnostics" "-vectorize-loops" "-vectorize-slp" "-o" "obj/third_party/brotli/brotli/huffman.o" "-x" "c" "../../third_party/brotli/dec/huffman.c"
,
Aug 15 2016
Thanks, got a repro.
,
Aug 15 2016
The validation had the wrong bounds, so it was reverted in r278711. I think it'll land again, but I doubt it will fire once it's using the correct bounds. |
||
►
Sign in to add a comment |
||
Comment 1 by r...@chromium.org
, Aug 15 2016