https://sourceware.org/bugzilla/show_bug.cgi?id=28192
Bug ID: 28192
Summary: powerpc64le: gold generates wrong address with a
relocation of symbol+offset@got@pcrel
Product: binutils
Version: 2.36.1
Status: NEW
Severity: normal
Priority: P2
Component: gold
Assignee: ccoutant at gmail dot com
Reporter: tuliom at ascii dot art.br
CC: ian at airs dot com
Target Milestone: ---
I can reproduce this issue with the following:
$ cat test.c
/* Build with: gcc -shared -fuse-ld=gold -mcpu=power10 test.c -o libtest.so*/
#include <stdio.h>
int
foo (int a, int b)
{
return a + b;
}
int
bar ()
{
void *p;
asm volatile ("pld %0,foo+16@got@pcrel" : "=r" (p));
printf ("foo() is at address %p\n", &foo);
printf ("foo()+16 is at address %p\n", p);
return 0;
}
$ cat main.c
/* Build with: gcc main.c -o main -L. -ltest
Run with: LD_LIBRARY_PATH=$(pwd) ./main */
extern int bar();
int
main ()
{
return bar();
}
Then we get:
$ LD_LIBRARY_PATH=$(pwd) ./main
foo() is at address 0x7ffff7f40780
foo()+16 is at address 0x7ffff7f40780
We get the expected output when ld.bfd is used to link libtest.so:
$ LD_LIBRARY_PATH=$(pwd) ./main
foo() is at address 0x7ffff7f40740
foo()+16 is at address 0x7ffff7f40750
--
You are receiving this mail because:
You are on the CC list for the bug.