https://sourceware.org/bugzilla/show_bug.cgi?id=20796

            Bug ID: 20796
           Summary: m68k binutils produce R_68K_NONE relocations in
                    .rela.plt. Causes glibc to fail to load binaries.
           Product: binutils
           Version: 2.28 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: slyfox at inbox dot ru
  Target Milestone: ---

How to reproduce. We will need to build a shared library and an executable.

  //Executable source:
  // a.c
  #include <stdio.h>

  int main(void) {
    printf ("hello!\n");
    return 0;
  }

  //Library source:
  // b.c
  void buggy_symbol (void)
  {
    return;
  }

Building:

Compiling...
$ m68k-unknown-linux-gnu-gcc -c a.c -o a.o
$ m68k-unknown-linux-gnu-gcc -shared -fPIC b.c -o libb.so
Linking...
$ m68k-unknown-linux-gnu-gcc -L. -Wl,--gc-sections '-Wl,-rpath=$ORIGIN' -u
buggy_symbol a.o -o bug -lb
Running...
$ ./bug
./bug: error while loading shared libraries: unexpected PLT reloc type 0x00
$ LD_BIND_NOW=1 ./bug
hello!

$ readelf -a bug | egrep 'R_68K_NONE|Relocation section'
Relocation section '.rela.dyn' at offset 0x38c contains 3 entries:
00000000  00000000 R_68K_NONE                   0
00000000  00000000 R_68K_NONE                   0
Relocation section '.rela.plt' at offset 0x3b0 contains 5 entries:
00000000  00000000 R_68K_NONE                   0

The sample is a distilled failure of GHC build failure.
GHC adds '-u buggy_symbol' when links both libraries and executables but
executables don't require it.

Workarounds so far. Any of there does work:
- add -Wl,-z,now
- drop -Wl,--gc-sections
- drop -u buggy_symbol

Binutils version: 2.27.51.20161105

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to