This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]