diff mbox

[committed,pa] Don't generate sibcall to public functions on TARGET_ELF32

Message ID EAAF70C4-1F09-4D0F-A500-EFAD52D2DA1C@bell.net
State New
Headers show

Commit Message

John David Anglin Sept. 19, 2015, 6:45 p.m. UTC
The attached change fixes a compilation error building the Debian mupdf package:

cc -g -O2 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -DJBIG_NO_MEMENTO
 -Wall -pipe -O2 -DNDEBUG -fomit-frame-pointer  -Iinclude -Igenerated -I/usr/inc
lude/freetype2    -DSHARE_JPEG -I/usr/include/openjpeg-2.1 -DHAVE_OPENSSL   -Ith
irdparty/mujs -o build/release/pdf/pdf-fontfile.o -c source/pdf/pdf-fontfile.c
{standard input}: Assembler messages:
{standard input}:552: Error: Field out of range [-262144..262143] (-6108748).
{standard input}:575: Error: Field out of range [-262144..262143] (-6108792).

The out of range field is caused by attempting to do a sibcall to a public function.

Tested on hppa-unknown-linux-gnu.  Committed to trunk, gcc-5 and gcc-4.9.

Dave
--
John David Anglin	dave.anglin@bell.net
2015-09-19  John David Anglin  <danglin@gcc.gnu.org>

	* config/pa/pa.c (pa_function_ok_for_sibcall): Remove special treatment
	of TARGET_ELF32.
diff mbox

Patch

Index: config/pa/pa.c
===================================================================
--- config/pa/pa.c	(revision 227923)
+++ config/pa/pa.c	(working copy)
@@ -8510,14 +8510,6 @@ 
   if (TARGET_PORTABLE_RUNTIME)
     return false;
 
-  /* Sibcalls are ok for TARGET_ELF32 as along as the linker is used in
-     single subspace mode and the call is not indirect.  As far as I know,
-     there is no operating system support for the multiple subspace mode.
-     It might be possible to support indirect calls if we didn't use
-     $$dyncall (see the indirect sequence generated in pa_output_call).  */
-  if (TARGET_ELF32)
-    return (decl != NULL_TREE);
-
   /* Sibcalls are not ok because the arg pointer register is not a fixed
      register.  This prevents the sibcall optimization from occurring.  In
      addition, there are problems with stub placement using GNU ld.  This