linux/arch/arm/kernel
Ard Biesheuvel 1031a7e674 ARM: kernel: sort relocation sections before allocating PLTs
The PLT allocation routines try to establish an upper bound on the
number of PLT entries that will be required at relocation time, and
optimize this by disregarding duplicates (i.e., PLT entries that will
end up pointing to the same function). This is currently a O(n^2)
algorithm, but we can greatly simplify this by
- sorting the relocation section so that relocations that can use the
  same PLT entry will be listed adjacently,
- disregard jump/call relocations with addends; these are highly unusual,
  for relocations against SHN_UNDEF symbols, and so we can simply allocate
  a PLT entry for each one we encounter, without trying to optimize away
  duplicates.

Tested-by: Jongsung Kim <neidhard.kim@lge.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2016-08-30 17:45:34 +01:00
..
.gitignore
arch_timer.c
armksyms.c ARM: 8479/2: add implementation for arm-smccc 2016-01-04 16:24:34 +00:00
asm-offsets.c ARM: save and reset the address limit when entering an exception 2016-07-07 16:01:01 +01:00
atags.h ARM: 8495/1: ATAGS: move save_atags() to arch/arm/include/asm/setup.h 2016-01-04 11:26:00 +00:00
atags_compat.c
atags_parse.c
atags_proc.c
bios32.c Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next 2016-08-01 12:23:57 -05:00
calls.S ARM: wire up preadv2 and pwritev2 syscalls 2016-04-07 21:57:02 +01:00
cpuidle.c ARM: 8586/1: cpuidle: make arm_cpuidle_suspend() a bit more efficient 2016-07-14 16:30:45 +01:00
crash_dump.c
debug.S
devtree.c ARM: 8581/1: add missing <asm/prom.h> to arch/arm/kernel/devtree.c 2016-06-22 19:55:12 +01:00
dma-isa.c
dma.c
early_printk.c
efi.c ARM/efi: Apply strict permissions for UEFI Runtime Services regions 2016-04-28 11:33:53 +02:00
elf.c
entry-armv.S ARM: fix address limit restoration for undefined instructions 2016-08-09 22:57:59 +01:00
entry-common.S ARM: rename S_FRAME_SIZE to PT_REGS_SIZE 2016-06-22 19:54:28 +01:00
entry-ftrace.S
entry-header.S ARM: save and reset the address limit when entering an exception 2016-07-07 16:01:01 +01:00
entry-v7m.S ARM: rename S_FRAME_SIZE to PT_REGS_SIZE 2016-06-22 19:54:28 +01:00
fiq.c
fiqasm.S
ftrace.c
head-common.S
head-nommu.S ARM: 8572/1: nommu: change memory reserve for the vectors 2016-05-05 19:03:02 +01:00
head.S Merge branch 'uaccess' into fixes 2015-09-11 19:18:28 +01:00
hibernate.c ARM: use virt_to_idmap() for soft_restart() 2016-02-08 15:48:32 +00:00
hw_breakpoint.c perf/core: Set event's default ::overflow_handler() 2016-03-31 10:30:47 +02:00
hyp-stub.S ARM: 8527/1: virt: enable GICv3 system registers 2016-02-16 16:33:02 +00:00
insn.c
io.c
irq.c ARM: 8499/1: irq: l2c: do not print error in case of missing l2c from 2016-01-26 23:49:02 +00:00
isa.c
iwmmxt.S
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c ARM: 8428/1: kgdb: Fix registers on sleeping tasks 2015-10-03 16:36:45 +01:00
machine_kexec.c ARM: kexec: fix kexec for Keystone 2 2016-08-02 19:35:29 -04:00
Makefile ARM: 8534/1: virt: fix hyp-stub build for pre-ARMv7 CPUs 2016-02-22 11:39:41 +00:00
module-plts.c ARM: kernel: sort relocation sections before allocating PLTs 2016-08-30 17:45:34 +01:00
module.c ARM: 8518/1: Use correct symbols for XIP_KERNEL 2016-02-11 15:43:14 +00:00
module.lds ARM: kernel: merge core and init PLTs 2016-08-30 17:45:34 +01:00
opcodes.c
paravirt.c arm: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
patch.c
perf_callchain.c perf core: Add a 'nr' field to perf_event_callchain_context 2016-05-16 23:11:51 -03:00
perf_event_v6.c arm: perf: factor arm_pmu core out to drivers 2015-07-31 15:01:14 +01:00
perf_event_v7.c ARM: perf: Set ARMv7 SDER SUNIDEN bit 2016-01-25 18:37:44 +00:00
perf_event_xscale.c arm: perf: factor arm_pmu core out to drivers 2015-07-31 15:01:14 +01:00
perf_regs.c
pj4-cp0.c ARM: 8452/3: PJ4: make coprocessor access sequences buildable in Thumb2 mode 2016-01-04 11:12:10 +00:00
process.c ARM: save and reset the address limit when entering an exception 2016-07-07 16:01:01 +01:00
psci_smp.c ARM: use const and __initconst for smp_operations 2015-12-01 22:17:45 +01:00
ptrace.c arm/ptrace: run seccomp after ptrace 2016-06-14 10:54:42 -07:00
reboot.c ARM: 8568/1: reboot: remove duplicated local_irq_disable() 2016-05-05 19:02:09 +01:00
reboot.h
relocate_kernel.S
return_address.c
setup.c ARM: kexec: advertise location of bootable RAM 2016-08-02 19:35:25 -04:00
signal.c Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-19 21:05:02 -07:00
sigreturn_codes.S
sleep.S
smccc-call.S ARM: 8479/2: add implementation for arm-smccc 2016-01-04 16:24:34 +00:00
smp.c Fixes for omaps for v4.7-rc cycle: 2016-06-18 22:21:52 -07:00
smp_scu.c
smp_tlb.c ARM: 8577/1: Fix Cortex-A15 798181 errata initialization 2016-07-02 12:13:03 +01:00
smp_twd.c arm/twd: Convert to hotplug state machine 2016-07-15 10:40:28 +02:00
stacktrace.c
suspend.c
swp_emulate.c ARM: 8475/1: SWP emulation: Restore original *data when failed 2015-12-15 11:51:42 +00:00
sys_arm.c
sys_oabi-compat.c arm: oabi compat: add missing access checks 2016-08-10 12:57:45 -07:00
tcm.c
thumbee.c
time.c clocksource: cosmetic: Drop OF 'dependency' from symbols 2015-10-01 02:18:39 +02:00
topology.c ARM: 8497/1: initialize cpu_scale to its default 2016-01-26 23:49:02 +00:00
traps.c ARM: remove user cmpxchg syscall 2015-10-03 16:36:45 +01:00
unwind.c
v7m.c
vdso.c ARM: 8476/1: VDSO: use PTR_ERR_OR_ZERO for vma check 2015-12-17 10:29:01 +00:00
vmlinux-xip.lds.S ARM: 8537/1: drop unused DEBUG_RODATA from XIP_KERNEL 2016-02-22 11:39:43 +00:00
vmlinux.lds.S arm: jump label may reference text in __exit 2016-08-04 08:50:07 -04:00
xscale-cp0.c ARM: make xscale iwmmxt code multiplatform aware 2015-12-01 21:44:24 +01:00