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")])
