https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65886

            Bug ID: 65886
           Summary: [5/6 Regression] External reference in PIE to DSO
                    created with -Wl,-Bsymbolic
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com

Copy relocation in PIE is incompatible with DSO created with -Wl,-Bsymbolic:

[hjl@gnu-tools-1 copyreloc-2]$ cat x.c 
extern int a;
extern int *a_p (void);

extern void bar (void);
extern void *bar_p (void);

int main()
{
  if (bar_p () != &bar)
    __builtin_abort();

  if (a_p () != &a)
    __builtin_abort();

  bar ();
  if (a != 30)
    __builtin_abort();
  return 0;
}
[hjl@gnu-tools-1 copyreloc-2]$ cat bar.c
int a;

void
bar ()
{
  a = 30;
}

void *
bar_p ()
{
  return &bar;
}

int *
a_p ()
{
  return &a;
}
[hjl@gnu-tools-1 copyreloc-2]$ make
/export/build/gnu/gcc-5/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-5/build-x86_64-linux/gcc/ -g -O2 -fPIE   -c -o x.o x.c
/export/build/gnu/gcc-5/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-5/build-x86_64-linux/gcc/ -g -O2 -fPIC   -c -o bar.o
bar.c
/export/build/gnu/gcc-5/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-5/build-x86_64-linux/gcc/ -Wl,-Bsymbolic -shared -o
libbar.so bar.o
/export/build/gnu/gcc-5/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-5/build-x86_64-linux/gcc/ -pie -o x x.o libbar.so
-Wl,-rpath,.
./x
Makefile:13: recipe for target 'all' failed
make: *** [all] Aborted (core dumped)
[hjl@gnu-tools-1 copyreloc-2]$

Reply via email to