linux/scripts
Rusty Russell c6bda7c988 kallsyms: fix percpu vars on x86-64 with relocation.
x86-64 has a problem: per-cpu variables are actually represented by
their absolute offsets within the per-cpu area, but the symbols are
not emitted as absolute.  Thus kallsyms naively creates them as offsets
from _text, meaning their values change if the kernel is relocated
(especially noticeable with CONFIG_RANDOMIZE_BASE):

 $ egrep ' (gdt_|_(stext|_per_cpu_))' /root/kallsyms.nokaslr
 0000000000000000 D __per_cpu_start
 0000000000004000 D gdt_page
 0000000000014280 D __per_cpu_end
 ffffffff810001c8 T _stext
 ffffffff81ee53c0 D __per_cpu_offset
 $ egrep ' (gdt_|_(stext|_per_cpu_))' /root/kallsyms.kaslr1
 000000001f200000 D __per_cpu_start
 000000001f204000 D gdt_page
 000000001f214280 D __per_cpu_end
 ffffffffa02001c8 T _stext
 ffffffffa10e53c0 D __per_cpu_offset

Making them absolute symbols is the Right Thing, but requires fixes to
the relocs tool.  So for the moment, we add a --absolute-percpu option
which makes them absolute from a kallsyms perspective:

 $ egrep ' (gdt_|_(stext|_per_cpu_))' /proc/kallsyms # no KASLR
 0000000000000000 A __per_cpu_start
 000000000000a000 A gdt_page
 0000000000013040 A __per_cpu_end
 ffffffff802001c8 T _stext
 ffffffff8099b180 D __per_cpu_offset
 ffffffff809a3000 D __per_cpu_load
 $ egrep ' (gdt_|_(stext|_per_cpu_))' /proc/kallsyms # With KASLR
 0000000000000000 A __per_cpu_start
 000000000000a000 A gdt_page
 0000000000013040 A __per_cpu_end
 ffffffff89c001c8 T _stext
 ffffffff8a39d180 D __per_cpu_offset
 ffffffff8a3a5000 D __per_cpu_load

Based-on-the-original-screenplay-by: Andy Honig <ahonig@google.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Kees Cook <keescook@chromium.org>
2014-03-17 14:55:27 +10:30
..
basic kbuild: fixdep: support concatenated dep files 2013-04-05 12:22:58 -06:00
coccinelle scripts: Coccinelle script for pm_runtime_* return checks with IS_ERR_VALUE 2014-01-03 14:39:35 +01:00
dtc dtc: ensure #line directives don't consume data from the next line 2013-06-13 22:12:15 +01:00
genksyms genksyms: pass symbol-prefix instead of arch 2013-03-20 11:27:27 +10:30
kconfig localmodconfig: Add config depends by default settings 2013-12-20 17:02:44 -05:00
ksymoops
mod module: allow multiple calls to MODULE_DEVICE_TABLE() per module 2014-03-13 12:11:00 +10:30
package deb-pkg: Fix building for MIPS big-endian or ARM OABI 2014-01-03 17:28:23 +01:00
rt-tester
selinux
tracing
.gitignore
analyze_suspend.py PM / tools: new tool for suspend/resume performance optimization 2014-01-17 01:47:26 +01:00
asn1_compiler.c X.509: remove possible code fragility: enumeration values not handled 2013-09-25 17:17:01 +01:00
bin2c.c
bloat-o-meter scripts/bloat-o-meter: use .startswith rather than fragile slicing 2013-11-07 10:47:13 +01:00
bootgraph.pl
checkincludes.pl
checkkconfigsymbols.sh scripts/checkkconfigsymbols.sh: replace echo -e with printf 2013-08-28 17:00:47 +02:00
checkpatch.pl checkpatch: fix detection of git repository 2014-02-10 16:01:40 -08:00
checkstack.pl scripts/checkstack.pl: Add metag support 2013-03-02 20:09:55 +00:00
checksyscalls.sh
checkversion.pl
cleanfile
cleanpatch
coccicheck Coccinelle: Update information about the minimal version required 2013-07-03 22:58:20 +02:00
config scripts/config: fix variable substitution command 2013-09-13 13:06:59 +02:00
conmakehash.c
decodecode scripts/decodecode: make faulting insn ptr more robust 2013-04-29 15:54:27 -07:00
depmod.sh depmod: pass -P $CONFIG_SYMBOL_PREFIX 2013-02-22 11:52:31 +01:00
diffconfig diffconfig: Update script to support python versions 2.5 through 3.3 2013-09-01 21:24:51 +02:00
docproc.c kernel-doc: improve "no structured comments found" error 2013-11-13 12:09:32 +09:00
export_report.pl
extract-ikconfig
extract-vmlinux
gcc-goto.sh arm64, jump label: detect %c support for ARM64 2014-01-08 15:21:29 +00:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_initramfs_list.sh scripts/gen_initramfs_list.sh: fix flags for initramfs LZ4 compression 2014-03-04 07:55:48 -08:00
get_maintainer.pl get_maintainer: fix detection of git repository 2014-02-10 16:01:40 -08:00
gfp-translate
headerdep.pl
headers_check.pl headers_check: special case seqbuf_dump() 2014-01-23 16:36:55 -08:00
headers_install.sh kbuild: fix make headers_install when path is too long 2013-05-17 22:10:35 +02:00
headers.sh
kallsyms.c kallsyms: fix percpu vars on x86-64 with relocation. 2014-03-17 14:55:27 +10:30
Kbuild.include kbuild: fix ld-option function 2013-04-08 11:47:41 +02:00
kernel-doc Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2013-11-15 14:09:15 -08:00
Lindent
link-vmlinux.sh kallsyms: fix percpu vars on x86-64 with relocation. 2014-03-17 14:55:27 +10:30
Makefile
Makefile.asm-generic
Makefile.build genksyms: pass symbol-prefix instead of arch 2013-03-20 11:27:27 +10:30
Makefile.clean
Makefile.fwinst
Makefile.headersinst kbuild: fix make headers_install when path is too long 2013-05-17 22:10:35 +02:00
Makefile.help
Makefile.host
Makefile.lib of: Move testcase FDT data into drivers/of 2014-02-20 11:52:08 +00:00
Makefile.modbuiltin
Makefile.modinst
Makefile.modpost modpost: Optionally ignore secondary errors seen if a single module build fails 2013-09-23 15:45:03 +09:30
Makefile.modsign MODSIGN: Add modules_sign make target 2012-12-14 13:05:28 +10:30
makelst
markup_oops.pl
mkcompile_h
mkmakefile
mksysmap
mkuboot.sh
mkversion
module-common.lds
namespace.pl
patch-kernel
pnmtologo.c scripts/pnmtologo: fix for plain PBM 2012-11-20 11:58:03 +01:00
profile2linkerlist.pl
recordmcount.c metag: ftrace support 2013-03-02 20:09:55 +00:00
recordmcount.h
recordmcount.pl ftrace: default to tilegx if ARCH=tile is specified 2013-12-05 15:59:26 -05:00
setlocalversion Fix detectition of kernel git repository in setlocalversion script [take #2] 2014-01-03 14:48:42 +01:00
show_delta show_delta: Update script to support python versions 2.5 through 3.3 2013-10-23 17:13:42 +02:00
sign-file MODSIGN: Add -s <signature> option to sign-file 2013-01-25 16:55:36 +10:30
sortextable.c microblaze: extable: sort the exception table at build time 2014-01-23 16:36:50 -08:00
sortextable.h scripts/sortextable: support objects with more than 64K sections. 2013-11-13 12:09:00 +09:00
tags.sh scripts/tags.sh: remove obsolete __devinit[const|data] 2013-11-08 10:57:20 +01:00
unifdef.c
ver_linux
xz_wrap.sh