linux-mainline/scripts
Helge Deller 87c482bdfa modules: Ensure natural alignment for .altinstructions and __bug_table sections
In the kernel image vmlinux.lds.S linker scripts the .altinstructions
and __bug_table sections are 4- or 8-byte aligned because they hold 32-
and/or 64-bit values.

Most architectures use altinstructions and BUG() or WARN() in modules as
well, but in the module linker script (module.lds.S) those sections are
currently missing. As consequence the linker will store their content
byte-aligned by default, which then can lead to unnecessary unaligned
memory accesses by the CPU when those tables are processed at runtime.

Usually unaligned memory accesses are unnoticed, because either the
hardware (as on x86 CPUs) or in-kernel exception handlers (e.g. on
parisc or sparc) emulate and fix them up at runtime. Nevertheless, such
unaligned accesses introduce a performance penalty and can even crash
the kernel if there is a bug in the unalignment exception handlers
(which happened once to me on the parisc architecture and which is why I
noticed that issue at all).

This patch fixes a non-critical issue and might be backported at any time.
It's trivial and shouldn't introduce any regression because it simply
tells the linker to use a different (8-byte alignment) for those
sections by default.

Signed-off-by: Helge Deller <deller@gmx.de>
Link: https://lore.kernel.org/all/Yr8%2Fgr8e8I7tVX4d@p100/
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
2022-07-11 10:49:14 -07:00
..
atomic locking/atomic: Add generic try_cmpxchg64 support 2022-05-18 00:08:27 +02:00
basic randstruct: Move seed generation into scripts/basic/ 2022-05-08 01:33:07 -07:00
clang-tools
coccinelle
dtc h8300: remove stale bindings and symlink 2022-05-20 22:40:56 +02:00
dummy-tools scripts: dummy-tools, add pahole 2022-05-08 03:16:59 +09:00
gcc-plugins gcc-plugins: use KERNELVERSION for plugin version 2022-05-24 08:25:16 -07:00
gdb scripts/gdb: change kernel config dumping method 2022-06-11 18:31:53 +09:00
genksyms genksyms: adjust the output format to modpost 2022-05-24 16:33:20 +09:00
kconfig scripts: kconfig: nconf: make nconfig accept jk keybindings 2022-06-05 06:20:57 +09:00
ksymoops
mod modpost: fix section mismatch check for exported init/exit sections 2022-06-20 08:18:03 +09:00
package objtool: Add CONFIG_OBJTOOL 2022-04-22 12:32:03 +02:00
selinux selinux: declare data arrays const 2022-05-03 15:53:49 -04:00
tracing
.gitignore
adjust_autoksyms.sh kbuild: split the second line of *.mod into *.usyms 2022-05-08 03:16:59 +09:00
as-version.sh
asn1_compiler.c
bin2c.c
bloat-o-meter scripts/bloat-o-meter: filter out vermagic as it is not relevant 2022-04-29 14:37:57 -07:00
bootgraph.pl
bpf_doc.py bpf: Add verifier support for dynptrs 2022-05-23 14:30:17 -07:00
cc-can-link.sh
cc-version.sh
check_extable.sh
check-blacklist-hashes.awk certs: Check that builtin blacklist hashes are valid 2022-05-23 18:47:49 +03:00
check-local-export scripts/check-local-export: avoid 'wait $!' for process substitution 2022-06-10 03:47:13 +09:00
check-sysctl-docs
checkdeclares.pl
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl checkpatch: add new alloc functions to alloc with multiplies check 2022-04-26 01:30:33 -05:00
checkstack.pl
checksyscalls.sh checksyscalls: ignore -Wunused-macros 2022-05-08 03:16:59 +09:00
checkversion.pl
cleanfile
cleanpatch
coccicheck
config
const_structs.checkpatch
decode_stacktrace.sh scripts/decode_stacktrace.sh: support old bash version 2022-04-29 14:37:57 -07:00
decodecode
depmod.sh
dev-needs.sh
diffconfig
documentation-file-ref-check
export_report.pl
extract_xc3028.pl
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
faddr2line faddr2line: Fix overlapping text section failures, the sequel 2022-06-06 11:50:11 -07:00
file-size.sh
find-unused-docs.sh
gcc-goto.sh
gcc-ld
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_autoksyms.sh kbuild: Ignore __this_module in gen_autoksyms.sh 2022-06-26 06:15:05 +09:00
gen_ksymdeps.sh
gen-randstruct-seed.sh randstruct: Move seed generation into scripts/basic/ 2022-05-08 01:33:07 -07:00
generate_initcall_order.pl
get_abi.pl scripts/get_abi: Fix wrong script file name in the help message 2022-04-24 10:38:44 +02:00
get_dvb_firmware
get_feat.pl scripts/get_feat.pl: allow output the parsed file names 2022-03-28 13:53:46 -06:00
get_maintainer.pl get_maintainer: Honor mailmap for in file emails 2022-04-29 14:38:00 -07:00
gfp-translate
headerdep.pl
headers_install.sh
insert-sys-cert.c
install.sh kbuild: factor out the common installation code into scripts/install.sh 2022-05-11 21:45:53 +09:00
jobserver-exec
kallsyms.c scripts/kallsyms: update usage message of the kallsyms program 2022-05-27 15:51:48 +09:00
Kbuild.include kbuild: add cmd_and_savecmd macro 2022-06-01 23:07:29 +09:00
Kconfig.include
kernel-doc scripts/kernel-doc: change the line number meta info 2022-03-28 13:53:46 -06:00
ld-version.sh
leaking_addresses.pl
Lindent
link-vmlinux.sh kbuild: factor out the common objtool arguments 2022-06-05 06:20:57 +09:00
Makefile kbuild: Allow kernel installation packaging to override pkg-config 2022-04-05 17:03:31 +09:00
Makefile.asm-generic
Makefile.build kbuild: avoid regex RS for POSIX awk 2022-06-08 01:27:26 +09:00
Makefile.clang
Makefile.clean kbuild: drop $(objtree)/ prefix support for clean-files 2022-05-08 03:17:00 +09:00
Makefile.compiler
Makefile.debug
Makefile.dtbinst
Makefile.extrawarn kbuild: support W=e to make build abort in case of warning 2022-05-08 03:16:59 +09:00
Makefile.gcc-plugins randstruct: Split randstruct Makefile and CFLAGS 2022-05-08 01:33:06 -07:00
Makefile.headersinst
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.kcsan
Makefile.lib A set of objtool fixes: 2022-06-05 09:45:27 -07:00
Makefile.modfinal kbuild: do not create *.prelink.o for Clang LTO or IBT 2022-05-29 18:39:35 +09:00
Makefile.modinst
Makefile.modpost kbuild: do not create *.prelink.o for Clang LTO or IBT 2022-05-29 18:39:35 +09:00
Makefile.package
Makefile.randstruct randstruct: Enable Clang support 2022-05-08 01:33:07 -07:00
Makefile.ubsan
Makefile.userprogs
Makefile.vmlinux kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS 2022-05-24 16:33:20 +09:00
Makefile.vmlinux_o kbuild: factor out the common objtool arguments 2022-06-05 06:20:57 +09:00
makelst
markup_oops.pl
min-tool-version.sh scripts/min-tool-version.sh: raise minimum clang version to 14.0.0 for s390 2022-05-17 15:16:29 +02:00
mkcompile_h
mksysmap
mkuboot.sh
module.lds.S modules: Ensure natural alignment for .altinstructions and __bug_table sections 2022-07-11 10:49:14 -07:00
modules-check.sh
nsdeps scripts/nsdeps: adjust to the format change of *.mod files 2022-06-08 20:14:13 +09:00
objdiff kbuild: clean .tmp_* pattern by make clean 2022-06-05 06:20:57 +09:00
objdump-func scripts: Create objdump-func helper script 2022-05-12 10:08:43 -07:00
pahole-flags.sh
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel scripts/prune-kernel: Use kernel-install if available 2022-05-11 21:46:38 +09:00
recordmcount.c
recordmcount.h
recordmcount.pl
remove-stale-files
setlocalversion
show_delta
sign-file.c cert host tools: Stop complaining about deprecated OpenSSL functions 2022-06-08 13:18:39 -07:00
sorttable.c LoongArch: Add ELF-related definitions 2022-06-03 20:09:27 +08:00
sorttable.h
spdxcheck-test.sh docs: move Linux logo into a new images folder 2022-06-01 09:32:45 -06:00
spdxcheck.py scripts/spdxcheck: Put excluded files and directories into a separate file 2022-05-18 15:34:33 +02:00
spdxexclude scripts/spdxcheck: Exclude top-level README 2022-05-18 15:35:42 +02:00
spelling.txt
sphinx-pre-install
split-man.pl
stackdelta
stackusage
subarch.include LoongArch: Add build infrastructure 2022-06-03 20:09:27 +08:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh
tags.sh scripts/tags.sh: Invoke 'realpath' via 'xargs' 2022-05-19 18:54:40 +02:00
test_fortify.sh
tools-support-relr.sh
unifdef.c
ver_linux
xen-hypercalls.sh
xz_wrap.sh