lkml.org 
[lkml]   [2018]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.16 092/279] RISC-V: build vdso-dummy.o with -no-pie
    Date
    4.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Aurelien Jarno <aurelien@aurel32.net>

    [ Upstream commit 85602bea297fc4e5223adbf7006dcce9aa694f17 ]

    Debian toolcahin defaults to PIE, and I guess that will also be the case
    of most distributions. This causes the following build failure:

    AS arch/riscv/kernel/vdso/getcpu.o
    AS arch/riscv/kernel/vdso/flush_icache.o
    VDSOLD arch/riscv/kernel/vdso/vdso.so.dbg
    OBJCOPY arch/riscv/kernel/vdso/vdso.so
    AS arch/riscv/kernel/vdso/vdso.o
    VDSOLD arch/riscv/kernel/vdso/vdso-dummy.o
    LD arch/riscv/kernel/vdso/vdso-syms.o
    riscv64-linux-gnu-ld: attempted static link of dynamic object `arch/riscv/kernel/vdso/vdso-dummy.o'
    make[2]: *** [arch/riscv/kernel/vdso/Makefile:43: arch/riscv/kernel/vdso/vdso-syms.o] Error 1
    make[1]: *** [scripts/Makefile.build:575: arch/riscv/kernel/vdso] Error 2
    make: *** [Makefile:1018: arch/riscv/kernel] Error 2

    While the root Makefile correctly passes "-fno-PIE" to build individual
    object files, the RISC-V kernel also builds vdso-dummy.o as an
    executable, which is therefore linked as PIE. Fix that by updating this
    specific link rule to also include "-no-pie".

    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/riscv/kernel/vdso/Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/riscv/kernel/vdso/Makefile
    +++ b/arch/riscv/kernel/vdso/Makefile
    @@ -52,7 +52,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
    # Add -lgcc so rv32 gets static muldi3 and lshrdi3 definitions.
    # Make sure only to export the intended __vdso_xxx symbol offsets.
    quiet_cmd_vdsold = VDSOLD $@
    - cmd_vdsold = $(CC) $(KCFLAGS) -nostdlib $(SYSCFLAGS_$(@F)) \
    + cmd_vdsold = $(CC) $(KCFLAGS) $(call cc-option, -no-pie) -nostdlib $(SYSCFLAGS_$(@F)) \
    -Wl,-T,$(filter-out FORCE,$^) -o $@.tmp -lgcc && \
    $(CROSS_COMPILE)objcopy \
    $(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@

    \
     
     \ /
      Last update: 2018-06-18 12:00    [W:2.079 / U:0.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site