https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91602

            Bug ID: 91602
           Summary: GCC fails to build for riscv in a combined tree due to
                    misconfigured leb128 support
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: build, easyhack
          Severity: normal
          Priority: P3
         Component: bootstrap
          Assignee: unassigned at gcc dot gnu.org
          Reporter: belyshev at depni dot sinp.msu.ru
  Target Milestone: ---
            Target: riscv*-*-*

gcc_GAS_CHECK_FEATURE enables leb128 support unconditionally for recent enough
gas when using combined tree.  As riscv* does not support leb128, it causes
build to fail during libgcc compilation with: "Error: non-constant .uleb128 is
not supported".

A hack to configure.ac like this is needed:

--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2798,6 +2798,15 @@ AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)

 gcc_AC_INITFINI_ARRAY

+# riscv* allows only constant expressions in leb128 pseudos, see comment in
+# gas/config/tc-riscv.c (s_riscv_leb128).
+# ??? when using combined tree, gcc_GAS_CHECK_FEATURE unconditionally checks
+# only version number without trying test input.
+case $target in
+  riscv*)
+    gcc_cv_as_leb128=no
+  ;;
+esac
 # Check if we have .[us]leb128, and support symbol arithmetic with it.
 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
   [elf,2,11,0],,


(or a better fix reworking gcc_GAS_CHECK_FEATURE and its users.)
This problem was also referenced in bug 87690#c0

Reply via email to