https://sourceware.org/bugzilla/show_bug.cgi?id=22394
--- Comment #1 from John David Anglin <danglin at gcc dot gnu.org> ---
Hi Alan,
Although your example is not technically supported, I think it should
work on linux because it doesn't use the PIC register and because of the
flat address space.
First, calls to functions in shared libraries are not supported using the
-mfast-indirect-calls gcc option:
@item -mfast-indirect-calls
@opindex mfast-indirect-calls
Generate code that assumes calls never cross space boundaries. This
allows GCC to emit code that performs faster indirect calls.
This option does not work in the presence of shared libraries or nested
functions.
What works is:
$ gcc -o funcp funcp.c funcpdef.c -mfast-indirect-calls
$ ./funcp
$
Issues are the space register used for the call and the PIC register.
Looking at your example, it seems to me that R_PARISC_DIR32 relocations
are not handled correctly when they refer to a function. This is the
assembly code:
.LEVEL 1.1
.globl fp
.section .data.rel,"aw",@progbits
.align 4
.type fp, @object
.size fp, 4
fp:
.word foo
At runtime, fp is NULL causing the segmentation fault. So, I agree
with your assessment.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils