Your message dated Wed, 28 Jun 2017 13:07:48 +0200
with message-id <194d943b-ca9f-cd55-2de7-a39bc0d4d...@debian.org>
and subject line Re: [gcc-6] gcc-6 can't compile mixed-bitness code
has caused the Debian Bug report #861085,
regarding [gcc-6] gcc-6 can't compile mixed-bitness code
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
861085: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861085
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: gcc-6
Version: 6.3.0-14
Severity: normal

Dear maintainer,

in attached file you can see the code from CRIU project. gcc-6 fails to compile 
it,
while gcc-4.9 has no such problem.

$ gcc-6   call32.S 
/usr/bin/ld: /tmp/cczRnuRR.o: relocation R_X86_64_32S against `.text' can not 
be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status

(The code is borrowed from Linux kernel and it also can be found at
<linux kernel>/tools/testing/selftests/x86/thunks.S file).

Regards,
Kirill


--- System information. ---
Architecture: 
Kernel:       Linux 4.11.0-rc7+

Debian Release: 9.0
  500 unstable        ftp.ru.debian.org 
  500 testing         ftp.ru.debian.org 
  500 stable-updates  ftp.ru.debian.org 
  500 stable          security.debian.org 
  500 stable          repo.skype.com 
  500 stable          ftp.ru.debian.org 
    1 experimental    ftp.ru.debian.org 

--- Package information. ---
Depends              (Version) | Installed
==============================-+-==============
cpp-6             (= 6.3.0-14) | 6.3.0-14
gcc-6-base        (= 6.3.0-14) | 
libcc1-0         (>= 6.3.0-14) | 
binutils             (>= 2.28) | 
libgcc-6-dev      (= 6.3.0-14) | 
libc6                (>= 2.14) | 
libgcc1             (>= 1:3.0) | 
libgmp10         (>= 2:5.0.1~) | 
libisl15             (>= 0.15) | 
libmpc3                        | 
libmpfr4            (>= 3.1.3) | 
libstdc++6              (>= 5) | 
zlib1g            (>= 1:1.1.4) | 


Recommends       (Version) | Installed
==========================-+-============
libc6-dev      (>= 2.13-5) | 2.24-10


Suggests                   (Version) | Installed
====================================-+-================
gcc-6-multilib                       | 6.3.0-14
gcc-6-doc               (>= 6.3.0-1) | 
gcc-6-locales           (>= 6.3.0-1) | 
libgcc1-dbg          (>= 1:6.3.0-14) | 
libgomp1-dbg           (>= 6.3.0-14) | 
libitm1-dbg            (>= 6.3.0-14) | 
libatomic1-dbg         (>= 6.3.0-14) | 
libasan3-dbg           (>= 6.3.0-14) | 
liblsan0-dbg           (>= 6.3.0-14) | 
libtsan0-dbg           (>= 6.3.0-14) | 
libubsan0-dbg          (>= 6.3.0-14) | 
libcilkrts5-dbg        (>= 6.3.0-14) | 
libmpx2-dbg            (>= 6.3.0-14) | 
libquadmath0-dbg       (>= 6.3.0-14) | 
/*
 * call32.S - assembly helpers for mixed-bitness code
 * From kernel selftests originally: tools/testing/selftests/x86/thunks.S
 * Copyright (c) 2015 Andrew Lutomirski
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * These are little helpers that make it easier to switch bitness on
 * the fly.
 */

#define __ALIGN         .align 4, 0x90
#define __ALIGN_STR     ".align 4, 0x90"

#define GLOBAL(name)            \
        .globl name;            \
        name:

#define ENTRY(name)             \
        .globl name;            \
        .type name, @function;  \
        __ALIGN;                \
        name:

#define END(sym)                \
        .size sym, . - sym

#define __USER32_CS     0x23
#define __USER_CS       0x33

        .text

/*
 * @rdi: Stack to use
 * @esi: Pointer to function for calling
 */
ENTRY(call32_from_64)
        /* Callee-saving registers due to ABI */
        pushq %rbx
        pushq %rbp
        pushq %r12
        pushq %r13
        pushq %r14
        pushq %r15
        pushfq

        /* Switch stacks */
        sub $8, %rdi
        mov %rsp,(%rdi)
        mov %rdi,%rsp

        /* Switch into compatibility mode */
        pushq $__USER32_CS
        pushq $1f
        lretq

1:
        .code32
        /* Run function and switch back */
        call *%esi
        jmp $__USER_CS,$1f
        .code64

1:
        /* Restore the stack */
        mov (%rsp),%rsp
        add $8, %rdi

        /* Restore registers */
        popfq
        popq %r15
        popq %r14
        popq %r13
        popq %r12
        popq %rbp
        popq %rbx
        ret
END(call32_from_64)

ENTRY(main)
        nop
END(main)

--- End Message ---
--- Begin Message ---
closing as invalid. I think this has nothing to do with mixed bitness. The
debian gcc defaults to pie by default. Turning off pie should work for you.

--- End Message ---

Reply via email to