https://sourceware.org/bugzilla/show_bug.cgi?id=19938
cctsai57 <cctsai57 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |cctsai57 at gmail dot com

--- Comment #26 from cctsai57 <cctsai57 at gmail dot com> ---
Hi,

This fix makes gcc's libstdc++ testsuite many fails for the ARM target.
I try to simplify them by the following flow:

# Two source files. The first is simplified from gcc source:
# libstdc++-v3/src/shared/hashtable-aux.cc:
$ cat -n hashtable-aux.cc 
     1  extern const unsigned long __prime_list[] = 
     2  {
     3      2ul, 3ul, 5ul, 7ul, 11ul, 13ul, 17ul, 19ul, 23ul, 29ul, 31ul,
     4      37ul, 41ul, 43ul, 47ul, 53ul, 59ul, 61ul, 67ul, 71ul, 73ul
     5  };

$ cat -n b.cc 
     1  #include <iostream>
     2  
     3  extern const unsigned long __prime_list[];
     4  
     5  int main()
     6  {
     7    std::cout << "__prime_list[]\n";
     8    for (int i = 0; i < 20; ++i)
     9      std::cout << __prime_list[i] << ", ";
    10    std::cout << "\n";
    11  
    12    return 0;
    13  }

$ arm-linux-gnueabihf-g++ -shared -fpic hashtable-aux.cc -o hashtable-aux.so
$ arm-linux-gnueabihf-g++ b.cc ./hashtable-aux.so

# Run under the QEMU
$ export QEMU_LD_PREFIX=$(arm-linux-gnueabihf-g++ -print-sysroot)
$ qemu-arm ./a.out
__prime_list[]
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

The items in the __prime_list[] are all wrong zero!  I guess that the problem
is the lost R_ARM_COPY for __prime_list.

See a.out ELF:

$ arm-linux-gnueabihf-readelf --relocs a.out
Relocation section '.rel.dyn' at offset 0x668 contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00020d0c  00001615 R_ARM_GLOB_DAT    00000000   __gmon_start__
00020d70  00000d14 R_ARM_COPY        00020d70   _ZSt4cout@GLIBCXX_3.4


Befor this fix, the old a.out ELF is:

$ arm-linux-gnueabihf-readelf --relocs a.out
Relocation section '.rel.dyn' at offset 0x668 contains 3 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00020d14  00001615 R_ARM_GLOB_DAT    00000000   __gmon_start__
00020d20  00000a14 R_ARM_COPY        00020d20   __prime_list
00020d78  00000d14 R_ARM_COPY        00020d78   _ZSt4cout@GLIBCXX_3.4


The tool's version:
  gcc: 6.1.1
  binutils: 2.26.51 (master branch)
  glibc: 2.23

-- 
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