Package: gcc-6 Version: 6.3.0-18 Severity: normal Tags: upstream Dear Maintainer,
When using the linker symbols, the values of the adresses of the symbols are incorrectly decoded. The problem occurs with the linker scripts but also with the following small code and minimalist compiler options: The test code: #include <stdio.h> extern unsigned char liloo; extern unsigned char lilootab[]; static void * spa = & liloo; static void * sta = lilootab; int main() { void * pa = & liloo; void * ta = lilootab; printf("%p %p %p %p\n", spa, sta, pa, ta); return 0; } The compilation with gcc-6: gcc-6 -g -c testld.c gcc-6 -fuse-ld=bfd -Wl,--defsym=liloo=0x1000000 -Wl,--defsym=lilootab=0x2000000 testld.o -o testld-6 The incorrect execution: ./testld-6 0x55bf6cc0c000 0x55bf6dc0c000 0x55bf6cc0c000 0x55bf6dc0c000 The symbol table is still correct according to objdump: $ objdump -t testld-6 | grep liloo 0000000002000000 g *ABS* 0000000000000000 lilootab 0000000001000000 g *ABS* 0000000000000000 liloo The compilation with gcc-5 gcc-5 -g -c testld.c gcc-5 -fuse-ld=bfd -Wl,--defsym=liloo=0x1000000 -Wl,--defsym=lilootab=0x2000000 testld.o -o testld-5 The correct execution: ./testld-5 0x1000000 0x2000000 0x1000000 0x2000000 Using linker: no change using gold instead of bfd Using other compilers: The bug occurs with gcc-6 (6.3.0-18) and gcc-7 (7.1.0-6) in experimental Correct execution occurs with with gold and bfd: gcc-4.8,4.9,5.0 and clang 3.6,3.7,3.8,3.9,4.0,5.0 -- System Information: Debian Release: 9.0 APT prefers unstable APT policy: (990, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.11.0-trunk-amd64 (SMP w/8 CPU cores) Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8), LANGUAGE=fr_FR.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages gcc-6 depends on: ii binutils 2.28-5 ii cpp-6 6.3.0-18 ii gcc-6-base 6.3.0-18 ii libc6 2.24-11 ii libcc1-0 7.1.0-6 ii libgcc-6-dev 6.3.0-18 ii libgcc1 1:7.1.0-6 ii libgmp10 2:6.1.2+dfsg-1 ii libisl15 0.18-1 ii libmpc3 1.0.3-1+b2 ii libmpfr4 3.1.5-1 ii libstdc++6 6.3.0-18 ii zlib1g 1:1.2.8.dfsg-5 Versions of packages gcc-6 recommends: ii libc6-dev 2.24-11 Versions of packages gcc-6 suggests: ii gcc-6-doc 6.3.0-1 pn gcc-6-locales <none> pn gcc-6-multilib <none> pn libasan3-dbg <none> pn libatomic1-dbg <none> pn libcilkrts5-dbg <none> pn libgcc1-dbg <none> pn libgomp1-dbg <none> pn libitm1-dbg <none> pn liblsan0-dbg <none> pn libmpx2-dbg <none> pn libquadmath0-dbg <none> pn libtsan0-dbg <none> pn libubsan0-dbg <none> -- no debconf information