# git rev-parse -q --verify a61674bdfc7c2bf909c4010699607b62b69b7bec^{commit} a61674bdfc7c2bf909c4010699607b62b69b7bec already have revision, skipping fetch # git checkout -q -f -B kisskb a61674bdfc7c2bf909c4010699607b62b69b7bec # git clean -qxdf # git log -1 commit a61674bdfc7c2bf909c4010699607b62b69b7bec Author: Ulrich Weigand Date: Tue Jan 12 23:14:23 2016 +1100 powerpc/module: Handle R_PPC64_ENTRY relocations GCC 6 will include changes to generated code with -mcmodel=large, which is used to build kernel modules on powerpc64le. This was necessary because the large model is supposed to allow arbitrary sizes and locations of the code and data sections, but the ELFv2 global entry point prolog still made the unconditional assumption that the TOC associated with any particular function can be found within 2 GB of the function entry point: func: addis r2,r12,(.TOC.-func)@ha addi r2,r2,(.TOC.-func)@l .localentry func, .-func To remove this assumption, GCC will now generate instead this global entry point prolog sequence when using -mcmodel=large: .quad .TOC.-func func: .reloc ., R_PPC64_ENTRY ld r2, -8(r12) add r2, r2, r12 .localentry func, .-func The new .reloc triggers an optimization in the linker that will replace this new prolog with the original code (see above) if the linker determines that the distance between .TOC. and func is in range after all. Since this new relocation is now present in module object files, the kernel module loader is required to handle them too. This patch adds support for the new relocation and implements the same optimization done by the GNU linker. Cc: stable@vger.kernel.org Signed-off-by: Ulrich Weigand Signed-off-by: Michael Ellerman # < /opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 a61674bdfc7c2bf909c4010699607b62b69b7bec # < make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- allnoconfig # make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- make[1]: Entering directory '/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release GEN ./Makefile WRAP arch/powerpc/include/generated/asm/clkdev.h WRAP arch/powerpc/include/generated/asm/div64.h WRAP arch/powerpc/include/generated/asm/irq_regs.h WRAP arch/powerpc/include/generated/asm/irq_work.h WRAP arch/powerpc/include/generated/asm/local64.h WRAP arch/powerpc/include/generated/asm/mcs_spinlock.h UPD include/config/kernel.release WRAP arch/powerpc/include/generated/asm/preempt.h WRAP arch/powerpc/include/generated/asm/rwsem.h WRAP arch/powerpc/include/generated/asm/vtime.h CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h Using /home/kisskb/slave/src as source for kernel CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h HOSTCC scripts/dtc/dtc.o HOSTCC scripts/dtc/flattree.o CC scripts/mod/empty.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/mod/mk_elfconfig HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/livetree.o CC scripts/mod/devicetable-offsets.s HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/util.o SHIPPED scripts/dtc/dtc-lexer.lex.c SHIPPED scripts/dtc/dtc-parser.tab.c SHIPPED scripts/dtc/dtc-parser.tab.h HOSTCC scripts/dtc/dtc-lexer.lex.o HOSTCC scripts/dtc/dtc-parser.tab.o GEN scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/dtc/dtc HOSTLD scripts/mod/modpost CHK include/generated/timeconst.h CC kernel/bounds.s UPD include/generated/timeconst.h CHK include/generated/bounds.h UPD include/generated/bounds.h CC arch/powerpc/kernel/asm-offsets.s CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh LD usr/built-in.o LD arch/powerpc/sysdev/built-in.o CC init/main.o CHK include/generated/compile.h CC init/do_mounts.o CC init/noinitramfs.o CC init/init_task.o LD arch/powerpc/platforms/built-in.o AS arch/powerpc/lib/string.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/mm/fault.o AS arch/powerpc/lib/crtsavres.o CC arch/powerpc/mm/mem.o CC arch/powerpc/lib/ppc_ksyms.o CC arch/powerpc/mm/pgtable.o CC arch/powerpc/lib/code-patching.o LD arch/powerpc/math-emu/built-in.o CC arch/powerpc/mm/mmap.o AS arch/powerpc/lib/div64.o CC arch/powerpc/lib/feature-fixups.o CC arch/powerpc/mm/pgtable_32.o AS arch/powerpc/lib/checksum_32.o AS arch/powerpc/lib/copy_32.o CC arch/powerpc/mm/init_32.o CC arch/powerpc/mm/tlb_hash32.o LD arch/powerpc/crypto/built-in.o AS arch/powerpc/mm/hash_low_32.o CC arch/powerpc/kernel/ptrace.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/mm/mmu_context_hash32.o CC arch/powerpc/mm/ppc_mmu_32.o CC arch/powerpc/kernel/align.o UPD include/generated/compile.h CC arch/powerpc/kernel/cputable.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/kernel/signal_32.o CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/process.o CC init/version.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/idle.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/time.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/dma.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/io.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/traps.o LD arch/powerpc/net/built-in.o AS arch/powerpc/kernel/misc_32.o CC arch/powerpc/kernel/of_platform.o AS arch/powerpc/kernel/idle_6xx.o CC arch/powerpc/kernel/prom_parse.o AS arch/powerpc/kernel/l2cr_6xx.o AS arch/powerpc/kernel/entry_32.o AS arch/powerpc/kernel/cpu_setup_6xx.o CC arch/powerpc/kernel/setup_32.o CC arch/powerpc/kernel/pci_32.o CC arch/powerpc/kernel/pci-common.o LD arch/powerpc/lib/built-in.o LD certs/built-in.o CC arch/powerpc/kernel/iomap.o CC arch/powerpc/kernel/pci_of_scan.o VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o AS arch/powerpc/kernel/head_32.o LDS arch/powerpc/kernel/vdso32/vdso32.lds CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh VDSO32A arch/powerpc/kernel/vdso32/datapage.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o AS arch/powerpc/kernel/fpu.o LDS arch/powerpc/kernel/vmlinux.lds VDSO32A arch/powerpc/kernel/vdso32/note.o AS arch/powerpc/kernel/systbl.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg LD ipc/built-in.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so CC security/commoncap.o AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o CC security/min_addr.o LD crypto/built-in.o LD block/built-in.o LD arch/powerpc/mm/built-in.o LD arch/powerpc/kernel/vdso32/built-in.o CC kernel/panic.o CC kernel/cpu.o CC kernel/fork.o CC kernel/exec_domain.o CC kernel/softirq.o CC kernel/sysctl_binary.o CC kernel/resource.o CC kernel/exit.o CC kernel/capability.o CC kernel/sysctl.o CC kernel/kmod.o CC kernel/signal.o CC kernel/task_work.o CC kernel/workqueue.o CC kernel/pid.o CC kernel/sys.o CC kernel/ptrace.o LD sound/built-in.o CC kernel/user.o CC kernel/extable.o CC kernel/kthread.o CC kernel/params.o CC fs/open.o CC mm/filemap.o CC fs/read_write.o CC kernel/sys_ni.o CC fs/super.o CC fs/file_table.o LD firmware/built-in.o CC fs/char_dev.o CC mm/mempool.o LD net/built-in.o CC fs/stat.o CC mm/oom_kill.o CC fs/exec.o CC kernel/nsproxy.o CC kernel/notifier.o CC mm/page_alloc.o CC mm/maccess.o CC mm/page-writeback.o CC mm/readahead.o LD init/mounts.o LD init/built-in.o CC fs/pipe.o CC mm/swap.o CC kernel/ksysfs.o CC mm/truncate.o CC kernel/cred.o CC kernel/reboot.o CC fs/namei.o CC kernel/async.o CC kernel/range.o LD virt/lib/built-in.o LD virt/built-in.o CC kernel/smpboot.o CC fs/fcntl.o LD kernel/livepatch/built-in.o CC kernel/power/qos.o CC kernel/locking/mutex.o CC kernel/dma.o CC fs/ioctl.o LD security/built-in.o CC kernel/printk/printk.o CC mm/vmscan.o CC kernel/up.o CC kernel/irq/irqdesc.o CC kernel/rcu/update.o CC fs/select.o CC kernel/elfcore.o CC fs/readdir.o CC mm/shmem.o CC kernel/memremap.o CC mm/util.o LD arch/powerpc/kernel/built-in.o CC fs/dcache.o CC mm/mmzone.o CC kernel/locking/semaphore.o CC kernel/rcu/sync.o CC mm/vmstat.o CC mm/mm_init.o CC mm/mmu_context.o CC mm/backing-dev.o CC kernel/irq/handle.o CC kernel/time/time.o CC fs/inode.o CC lib/lockref.o CC kernel/time/timer.o CC fs/attr.o CC fs/bad_inode.o CC mm/percpu.o CC kernel/sched/loadavg.o CC kernel/sched/core.o LD drivers/amba/built-in.o CC fs/file.o CC kernel/sched/clock.o CC kernel/locking/rwsem.o CC kernel/sched/cputime.o CC lib/bcd.o CC mm/slab_common.o CC fs/filesystems.o LD drivers/auxdisplay/built-in.o CC mm/compaction.o CC kernel/rcu/tiny.o CC mm/vmacache.o CC mm/interval_tree.o CC lib/div64.o CC lib/sort.o CC fs/namespace.o CC mm/list_lru.o CC kernel/locking/percpu-rwsem.o CC kernel/time/hrtimer.o CC fs/xattr.o CC fs/seq_file.o CC kernel/locking/rwsem-xadd.o CC fs/libfs.o CC mm/workingset.o CC kernel/irq/manage.o CC fs/fs-writeback.o CC mm/debug.o CC fs/pnode.o CC kernel/sched/idle_task.o CC kernel/time/itimer.o CC kernel/irq/spurious.o CC lib/parser.o CC kernel/sched/fair.o CC fs/splice.o CC kernel/irq/resend.o CC lib/halfmd4.o CC mm/gup.o LD kernel/power/built-in.o CC kernel/sched/rt.o CC mm/highmem.o CC kernel/irq/chip.o CC kernel/irq/dummychip.o CC fs/sync.o CC drivers/base/component.o CC mm/memory.o CC mm/mincore.o CC mm/mlock.o CC lib/debug_locks.o LD kernel/locking/built-in.o CC kernel/time/posix-timers.o CC kernel/time/posix-cpu-timers.o CC mm/mmap.o LD kernel/rcu/built-in.o CC kernel/sched/deadline.o CC mm/mprotect.o CC kernel/irq/devres.o LD kernel/printk/built-in.o CC fs/utimes.o CC fs/stack.o CC lib/random32.o CC lib/bust_spinlocks.o CC kernel/time/timekeeping.o CC kernel/irq/irqdomain.o CC kernel/sched/stop_task.o CC lib/kasprintf.o CC mm/mremap.o CC mm/msync.o CC mm/rmap.o CC fs/fs_struct.o CC mm/vmalloc.o CC mm/pagewalk.o CC kernel/sched/wait.o CC mm/pgtable-generic.o CC drivers/base/core.o CC fs/statfs.o CC kernel/time/ntp.o CC mm/init-mm.o CC fs/fs_pin.o CC lib/bitmap.o CC lib/scatterlist.o CC mm/nobootmem.o CC kernel/time/clocksource.o CC mm/memblock.o CC kernel/sched/completion.o CC fs/nsfs.o CC drivers/base/bus.o CC mm/dmapool.o CC fs/no-block.o CC mm/slub.o CC lib/gcd.o LD fs/devpts/built-in.o LD fs/quota/built-in.o LD fs/exofs/built-in.o CC kernel/sched/idle.o CC fs/binfmt_elf.o CC fs/ramfs/file-mmu.o CC fs/ramfs/inode.o CC lib/lcm.o CC lib/list_sort.o CC lib/uuid.o CC kernel/time/jiffies.o CC kernel/time/timer_list.o CC drivers/base/dd.o CC lib/iov_iter.o LD drivers/block/built-in.o LD drivers/bus/built-in.o CC lib/flex_array.o LD fs/notify/dnotify/built-in.o LD fs/notify/fanotify/built-in.o CC lib/clz_ctz.o CC lib/bsearch.o LD drivers/cdrom/built-in.o CC lib/find_bit.o LD fs/notify/inotify/built-in.o CC drivers/base/syscore.o CC lib/llist.o LD drivers/clocksource/built-in.o CC drivers/char/mem.o LD drivers/firewire/built-in.o CC drivers/base/driver.o LD fs/notify/built-in.o CC kernel/time/posix-clock.o CC kernel/time/timeconv.o CC lib/memweight.o CC kernel/time/timecounter.o LD drivers/clk/bcm/built-in.o CC lib/percpu-refcount.o CC kernel/time/alarmtimer.o CC lib/kfifo.o CC lib/percpu_ida.o CC kernel/time/clockevents.o CC kernel/time/tick-common.o LD kernel/irq/built-in.o CC lib/rhashtable.o LD drivers/gpio/built-in.o CC lib/reciprocal_div.o CC drivers/base/class.o CC drivers/base/platform.o LD drivers/firmware/broadcom/built-in.o LD drivers/clk/built-in.o CC lib/once.o CC lib/string_helpers.o LD drivers/hwtracing/intel_th/built-in.o CC lib/hexdump.o CC lib/kstrtox.o CC drivers/char/random.o CC lib/iomap_copy.o CC lib/pci_iomap.o LD drivers/firmware/built-in.o LD drivers/gpu/vga/built-in.o CC drivers/base/cpu.o LD kernel/sched/built-in.o CC drivers/base/firmware.o LD drivers/idle/built-in.o LD drivers/hsi/clients/built-in.o LD drivers/hsi/controllers/built-in.o CC drivers/base/init.o CC lib/devres.o CC drivers/base/map.o CC drivers/base/devres.o LD fs/ramfs/ramfs.o LD drivers/gpu/drm/bridge/built-in.o LD drivers/i2c/algos/built-in.o LD drivers/leds/built-in.o CC drivers/irqchip/irqchip.o LD fs/ramfs/built-in.o CC lib/hweight.o LD drivers/hsi/built-in.o CC lib/bitrev.o HOSTCC lib/gen_crc32table LD drivers/lguest/built-in.o CC drivers/base/attribute_container.o LD drivers/i2c/busses/built-in.o LD drivers/gpu/drm/i2c/built-in.o CC drivers/base/transport_class.o CC lib/syscall.o LD drivers/macintosh/built-in.o CC lib/strncpy_from_user.o LD drivers/gpu/drm/panel/built-in.o CC lib/atomic64.o CC lib/strnlen_user.o CC drivers/base/topology.o CC lib/argv_split.o CC lib/cmdline.o LD drivers/mfd/built-in.o CC lib/ctype.o CC drivers/base/container.o CC drivers/base/property.o LD drivers/mmc/built-in.o LD drivers/i2c/muxes/built-in.o CC lib/decompress.o LD drivers/gpu/drm/tilcdc/built-in.o CC lib/dec_and_lock.o CC drivers/char/misc.o CC lib/dump_stack.o CC drivers/base/cacheinfo.o CC lib/extable.o CC lib/earlycpio.o CC lib/fdt.o LD drivers/net/built-in.o LD drivers/char/agp/built-in.o LD drivers/i2c/built-in.o LD kernel/time/built-in.o LD drivers/nfc/built-in.o LD drivers/gpu/drm/built-in.o CC drivers/base/dma-mapping.o CC lib/fdt_rw.o CC lib/fdt_ro.o CC lib/fdt_empty_tree.o CC lib/fdt_sw.o CC lib/fdt_strerror.o LD kernel/built-in.o LD drivers/base/power/built-in.o CC lib/flex_proportions.o CC lib/fdt_wip.o LD drivers/irqchip/built-in.o LD drivers/misc/cb710/built-in.o LD drivers/media/firewire/built-in.o CC lib/int_sqrt.o CC lib/idr.o CC lib/irq_regs.o CC lib/ioremap.o LD drivers/misc/eeprom/built-in.o LD drivers/nvme/host/built-in.o CC lib/is_single_threaded.o LD drivers/platform/built-in.o LD drivers/gpu/built-in.o LD drivers/pwm/built-in.o LD drivers/soc/built-in.o LD drivers/misc/lis3lv02d/built-in.o LD fs/built-in.o CC lib/kobject.o CC lib/klist.o LD drivers/nvme/built-in.o CC lib/kobject_uevent.o LD drivers/misc/ti-st/built-in.o CC lib/md5.o LD drivers/media/i2c/soc_camera/built-in.o CC lib/nmi_backtrace.o LD drivers/media/common/siano/built-in.o CC lib/ratelimit.o CC lib/radix-tree.o CC lib/proportions.o CC lib/plist.o LD drivers/media/common/saa7146/built-in.o LD drivers/media/common/b2c2/built-in.o LD drivers/misc/mic/bus/built-in.o CC lib/seq_buf.o CC lib/rbtree.o CC drivers/of/base.o CC lib/sha1.o LD drivers/media/i2c/built-in.o LD drivers/media/platform/omap/built-in.o CC lib/show_mem.o LD drivers/usb/host/built-in.o LD drivers/media/mmc/siano/built-in.o LD drivers/media/common/built-in.o CC lib/string.o LD drivers/misc/mic/built-in.o LD drivers/media/tuners/built-in.o CC lib/timerqueue.o LD drivers/video/backlight/built-in.o CC lib/vsprintf.o LD drivers/media/rc/keymaps/built-in.o GEN lib/crc32table.h LD drivers/media/platform/built-in.o LD drivers/tty/serial/built-in.o LD drivers/tty/vt/built-in.o LD drivers/tty/ipwireless/built-in.o LD drivers/media/mmc/built-in.o CC lib/crc32.o CC drivers/of/device.o CC drivers/of/platform.o LD drivers/media/rc/built-in.o LD drivers/misc/built-in.o CC drivers/of/fdt_address.o CC drivers/of/fdt.o CC drivers/of/irq.o LD drivers/usb/built-in.o CC drivers/of/of_pci.o CC drivers/of/address.o CC drivers/of/of_pci_irq.o CC drivers/of/of_reserved_mem.o LD mm/built-in.o LD drivers/tty/built-in.o CC drivers/pci/access.o CC drivers/pci/bus.o CC drivers/pci/probe.o CC drivers/pci/pci.o CC drivers/pci/remove.o CC drivers/pci/host-bridge.o CC drivers/pci/search.o CC drivers/pci/rom.o CC drivers/pci/pci-driver.o CC drivers/pci/pci-sysfs.o CC drivers/video/fbdev/core/fb_notify.o CC drivers/pci/setup-res.o CC drivers/pci/vpd.o CC drivers/pci/setup-bus.o CC drivers/pci/irq.o CC drivers/pci/vc.o CC drivers/pci/syscall.o CC drivers/pci/of.o LD drivers/char/built-in.o LD drivers/pci/host/built-in.o LD drivers/video/fbdev/omap2/dss/built-in.o LD drivers/video/fbdev/omap2/displays-new/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o LD drivers/media/usb/dvb-usb/built-in.o LD drivers/media/usb/b2c2/built-in.o LD drivers/media/pci/b2c2/built-in.o LD drivers/base/built-in.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/video/fbdev/omap2/built-in.o LD drivers/media/pci/mantis/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/siano/built-in.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/pci/netup_unidvb/built-in.o LD drivers/media/pci/pluto2/built-in.o LD drivers/media/pci/saa7146/built-in.o LD drivers/media/pci/ngene/built-in.o LD drivers/media/pci/pt1/built-in.o LD drivers/media/pci/dm1105/built-in.o LD drivers/media/pci/smipcie/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/pci/ttpci/built-in.o LD drivers/video/fbdev/core/built-in.o LD drivers/media/usb/zr364xx/built-in.o LD drivers/media/pci/built-in.o LD drivers/video/fbdev/built-in.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/video/built-in.o LD drivers/media/usb/built-in.o LD drivers/media/built-in.o LD lib/built-in.o LD drivers/of/built-in.o AR lib/lib.a LD drivers/pci/built-in.o LD drivers/built-in.o LINK vmlinux LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o LD init/built-in.o LD vmlinux SYSMAP System.map /opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-strip -s -R .comment vmlinux -o arch/powerpc/boot/vmlinux.strip make[1]: Leaving directory '/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc' Completed OK # rm -rf /home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc # Build took: 0:00:10.756791