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

Index: gcc/config/sparc/sparc.md
--- gcc/config/sparc/sparc.md.orig
+++ gcc/config/sparc/sparc.md
@@ -1713,7 +1713,11 @@
 			      UNSPEC_MOVE_PIC)))]
   "flag_pic"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "xor\t%1, %%gdop_lox10(%a2), %0";
+#else
+  return "or\t%1, %%lo(%a2), %0";
+#endif
 })
 
 (define_insn "movsi_high_pic"
@@ -1721,7 +1725,11 @@
         (high:SI (unspec:SI [(match_operand 1 "" "")] UNSPEC_MOVE_PIC)))]
   "flag_pic && check_pic (1)"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "sethi\t%%gdop_hix22(%a1), %0";
+#else
+  return "sethi\t%%hi(%a1), %0";
+#endif
 })
 
 (define_insn "movsi_pic_gotdata_op"
@@ -1732,7 +1740,11 @@
 		   UNSPEC_MOVE_GOTDATA))]
   "flag_pic && check_pic (1)"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "ld\t[%1 + %2], %0, %%gdop(%a3)";
+#else
+  return "ld\t[%1 + %2], %0";
+#endif
 }
   [(set_attr "type" "load")
    (set_attr "subtype" "regular")])
@@ -1922,7 +1934,11 @@
 			      UNSPEC_MOVE_PIC)))]
   "TARGET_ARCH64 && flag_pic"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "xor\t%1, %%gdop_lox10(%a2), %0";
+#else
+  return "or\t%1, %%lo(%a2), %0";
+#endif
 })
 
 (define_insn "movdi_high_pic"
@@ -1930,7 +1946,11 @@
         (high:DI (unspec:DI [(match_operand 1 "" "")] UNSPEC_MOVE_PIC)))]
   "TARGET_ARCH64 && flag_pic && check_pic (1)"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "sethi\t%%gdop_hix22(%a1), %0";
+#else
+  return "sethi\t%%hi(%a1), %0";
+#endif
 })
 
 (define_insn "movdi_pic_gotdata_op"
@@ -1941,7 +1961,11 @@
 		   UNSPEC_MOVE_GOTDATA))]
   "TARGET_ARCH64 && flag_pic && check_pic (1)"
 {
+#ifdef HAVE_AS_SPARC_GOTDATA_OP
   return "ldx\t[%1 + %2], %0, %%gdop(%a3)";
+#else
+  return "ldx\t[%1 + %2], %0";
+#endif
 }
   [(set_attr "type" "load")
    (set_attr "subtype" "regular")])
@@ -6836,6 +6860,9 @@
     {
       rtx tmp, tmp2;
       tmp = gen_rtx_LABEL_REF (Pmode, operands[1]);
+#ifdef SPARC_CASE_VECTOR_IN_RODATA
+      LABEL_REF_NONLOCAL_P (tmp) = 1;
+#endif
       tmp2 = operands[0];
       if (CASE_VECTOR_MODE != Pmode)
         tmp2 = gen_rtx_SIGN_EXTEND (Pmode, tmp2);
