Bug 867878
Summary: | s390 build fails with Error: Unrecognized opcode: `srak' | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Martin Stransky <stransky> | ||||
Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||
Status: | CLOSED ERRATA | QA Contact: | qe-baseos-tools-bugs | ||||
Severity: | urgent | Docs Contact: | |||||
Priority: | urgent | ||||||
Version: | 6.3 | CC: | mcermak, mnewsome, mpolacek | ||||
Target Milestone: | rc | Keywords: | Regression | ||||
Target Release: | --- | ||||||
Hardware: | s390x | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | gcc-4.4.7-3.el6 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2013-02-21 10:26:59 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Martin Stransky
2012-10-18 13:34:49 UTC
s390x failure: Build log: http://download.devel.redhat.com/brewroot/work/tasks/1827/4991827/build.log Root log: http://download.devel.redhat.com/brewroot/work/tasks/1827/4991827/root.log gcc command: c++ -o hb-ot-shape-fallback.o -c -I../../../dist/stl_wrappers -I../../../dist/system_wrappers -include /builddir/build/BUILD/xulrunner-17.0/mozilla-beta/config/gcc_hidden.h -DMOZ_GLUE_IN_PROGRAM -DMOZILLA_INTERNAL_API -D_IMPL_NS_COM -DEXPORT_XPT_API -DEXPORT_XPTC_API -D_IMPL_NS_GFX -D_IMPL_NS_WIDGET -DIMPL_XREAPI -DIMPL_NS_NET -DIMPL_THEBES -DSTATIC_EXPORTABLE_JS_API -DPACKAGE_VERSION="\"moz\"" -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\"" -DHAVE_OT=1 -DHB_NO_MT -I/builddir/build/BUILD/xulrunner-17.0/mozilla-beta/gfx/harfbuzz/src -I/builddir/build/BUILD/xulrunner-17.0/mozilla-beta/gfx/harfbuzz/src -I. -I../../../dist/include -I/builddir/build/BUILD/xulrunner-17.0/mozilla-beta/objdir/dist/include/nspr -I/builddir/build/BUILD/xulrunner-17.0/mozilla-beta/objdir/dist/include/nss -fPIC -pedantic -Wall -Wpointer-arith -Woverloaded-virtual -Werror=return-type -Wtype-limits -Wempty-body -Wno-ctor-dtor-privacy -Wno-overlength-strings -Wno-invalid-offsetof -Wno-variadic-macros -Wcast-align -Wno-long-long -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fno-exceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -march=z9-109 -mtune=z10 -fpermissive -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -g -Os -freorder-blocks -fomit-frame-pointer -DMOZILLA_CLIENT -include ../../../mozilla-config.h -MD -MF .deps/hb-ot-shape-fallback.o.pp -UDEBUG /builddir/build/BUILD/xulrunner-17.0/mozilla-beta/gfx/harfbuzz/src/hb-ot-shape-fallback.cc {standard input}: Assembler messages: {standard input}:134: Error: Unrecognized opcode: `srak' packages: gcc s390x 4.4.6-4.el6 binutils s390x 2.20.51.0.2-5.34.el6 Note: build fine on stable systems with: gcc-4.4.4-13.el6.s390x binutils-2.20.51.0.2-5.11.el6.s390x http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01716.html committed as http://gcc.gnu.org/viewcvs?view=revision&revision=183759 needs to be backported. Is there any workaround for that? It blocks upcoming Firefox update. Regression from RHEL 6.0 caused by #633375. As workaround I guess static inline void position_cluster (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer, unsigned int start, unsigned int end) { +#ifdef __s390__ + hb_unicode_general_category_t category; +#endif if (end - start < 2) return; /* Find the base glyph */ for (unsigned int i = start; i < end; i++) if (is_a_ligature (buffer->info[i]) || +#ifdef __s390__ + ((category = _hb_glyph_info_get_general_category (&buffer->info[i])) + != HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK + && category != HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK + && category != HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) +#else !(FLAG (_hb_glyph_info_get_general_category (&buffer->info[i])) & (FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) | FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | - FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)))) + FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK))) +#endif ) { position_around_base (plan, font, buffer, i, end); break; } } (completely untested) might do the trick, that way there will be no right shift with shift count which is bitwise and. Or store result of _hb_glyph_info_get_general_category into a temporary and do __asm ("" : "+r" (category)); on it before doing the FLAG test to prevent gcc from optimizing it. So basically change the: !(FLAG (_hb_glyph_info_get_general_category (&buffer->info[i])) & line to: !(FLAG (({ hb_unicode_general_category_t category = _hb_glyph_info_get_general_category (&buffer->info[i]); __asm ("" : "+g" (category)); category; })) & Short testcase: int bar (char); void foo (char *x, unsigned int y) { unsigned int i; for (i = 0; i < y; i++) if (bar (x[i]) || ((1 << (x[i] & 0x7f)) & 0x2314)) break; } gcc -c -O2 -march=z9-109 test.c should assemble without errors with gcc-4.4.7-3.el6, should fail with gcc-4.4.7-2.el6. With -march=z196 it should succeed with both. The workaround works, thanks! Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-0420.html |