This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/16459] New: [3.3/3.4/3.5 Regression] ld: libbackend.a(expr.o)(.text+0x40c2c): cannot handle R_PARISC_PCREL17F for $$dyncall
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Jul 2004 19:57:06 -0000
- Subject: [Bug target/16459] New: [3.3/3.4/3.5 Regression] ld: libbackend.a(expr.o)(.text+0x40c2c): cannot handle R_PARISC_PCREL17F for $$dyncall
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
stage1/xgcc -Bstage1/ -B/home/dave/opt/gnu/gcc/gcc-3.5.0/hppa-linux/bin/ -g -O
2 -mpa-risc-2-0 -fprofile-generate -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-
prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -W
old-style-definition -Werror -fno-common -DHAVE_CONFIG_H -o cc1 \
c-parse.o c-lang.o stub-objc.o attribs.o c-errors.o c-lex.o c-pragma.o c
-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-sem
antics.o c-incpath.o cppdefault.o c-ppoutput.o c-cppbuiltin.o prefix.o c-objc-co
mmon.o c-dump.o c-pch.o c-gimplify.o tree-mudflap.o c-pretty-print.o main.o tre
e-browser.o libbackend.a ../libcpp/libcpp.a ../libcpp/libcpp.a ../libiberty/libi
berty.a ../libbanshee/points-to/libandersen.a ../libbanshee/engine/libbansheee
ngine.a ../libbanshee/libcompat/libbansheecompat.a
/home/dave/opt/gnu/bin/ld: libbackend.a(expr.o)(.text+0x40c2c): cannot reach 000
006ff_$$dyncall+0, recompile with -ffunction-sections
/home/dave/opt/gnu/bin/ld: libbackend.a(expr.o)(.text+0x40c2c): cannot handle R_
PARISC_PCREL17F for $$dyncall
/home/dave/opt/gnu/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [cc1] Error 1
make[2]: Leaving directory `/home/dave/gcc-3.5/objdir/gcc'
This is a PA 2.0 problem. I forgot to change the pc-relative branch used
to call $$dyncall in an indirect call:
40c2c: eb e0 00 00 b,l 40c34 <try_casesi+0xd4>,r31
40c30: 08 1f 02 42 copy r31,rp
PA 2.0 has long pc-relative branches (22 bits versus 17 bits for
PA 1.x) but only when %rp (%r2) is used as the link register.
%rp and %r31 need to be interchanged to get the long branch version.
The regression was introduced when I changed the length attribute.
It is used to select the type of branch to use to call $$dyncall.
Will fix shortly.
--
Summary: [3.3/3.4/3.5 Regression] ld:
libbackend.a(expr.o)(.text+0x40c2c): cannot handle
R_PARISC_PCREL17F for $$dyncall
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: target
AssignedTo: danglin at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: hppa-unknown-linux-gnu
GCC host triplet: hppa-unknown-linux-gnu
GCC target triplet: hppa-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16459