diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 688f0ede846f11da4149e61193cfe6ed58abd437..b1ded0db54834094ee8ae4f49be4665761906bb0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,11 @@
-2010-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+2010-09-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR java/44095
+	* config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch
+	is specified and the suffix of the file isn't ".c".
+	* config/sparc/linux64.h (ASM_SPEC): Likewise.
+
+2010-09-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* doc/contrib.texi (Contributors): Allow URL to wrap in PDF
 	output.
diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
index 530a6ae7065dae4bb0957ddcf07ffaff596e3133..1272d2aba7d4c7891384bf1a4c1305d5c19dbe9f 100644
--- a/gcc/config/sparc/linux.h
+++ b/gcc/config/sparc/linux.h
@@ -107,7 +107,8 @@ along with GCC; see the file COPYING3.  If not see
 %{Ym,*} \
 %{Wa,*:%*} \
 -s \
-%{fpic|fPIC|fpie|fPIE|findirect-dispatch:-K PIC} \
+%{fpic|fPIC|fpie|fPIE:-K PIC} \
+%{!.c:%{findirect-dispatch:-K PIC}} \
 %(asm_cpu) %(asm_relax)"
 
 #undef ASM_OUTPUT_ALIGNED_LOCAL
diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
index 369c13c8e3cb7c58f7897f7aa595319371b323da..d8a242758dd420d13979e2a082dbedde77e01cf5 100644
--- a/gcc/config/sparc/linux64.h
+++ b/gcc/config/sparc/linux64.h
@@ -236,7 +236,8 @@ along with GCC; see the file COPYING3.  If not see
 %{Ym,*} \
 %{Wa,*:%*} \
 -s \
-%{fpic|fPIC|fpie|fPIE|findirect-dispatch:-K PIC} \
+%{fpic|fPIC|fpie|fPIE:-K PIC} \
+%{!.c:%{findirect-dispatch:-K PIC}} \
 %{mlittle-endian:-EL} \
 %(asm_cpu) %(asm_arch) %(asm_relax)"