Re: build failure after commit eb0481bbc4ce ("objtool: Fix reloc_hash size")

From: Josh Poimboeuf
Date: Wed Jun 28 2023 - 11:17:38 EST


On Wed, Jun 28, 2023 at 01:58:25PM +0200, Michal Kubecek wrote:
> Hello,
>
> this morning, mainline kernel builds started to fail on my desktop like
> this:
>
> mike@lion:~/work/git/kernel-upstream> mkdir /srv/ram/kobj
> mike@lion:~/work/git/kernel-upstream> make -j24 CC=gcc-13 O=/srv/ram/kobj defconfig >/dev/null
> mike@lion:~/work/git/kernel-upstream> make -j24 CC=gcc-13 O=/srv/ram/kobj all >/dev/null
> net/ipv4/netfilter/iptable_nat.o: warning: objtool: mmap fail reloc
> net/netfilter/xt_mark.o: warning: objtool: mmap fail reloc
> net/netfilter/xt_nat.o: warning: objtool: mmap fail reloc
> net/netfilter/xt_LOG.o: warning: objtool: mmap fail reloc
> net/netfilter/xt_MASQUERADE.o: warning: objtool: mmap fail reloc
> net/netfilter/nf_log_syslog.o: warning: objtool: mmap fail reloc
> net/netfilter/xt_addrtype.o: warning: objtool: mmap fail reloc
> fs/efivarfs/efivarfs.o: warning: objtool: mmap fail reloc
> drivers/thermal/intel/x86_pkg_temp_thermal.o: warning: objtool: mmap fail reloc
> vmlinux.o: warning: objtool: mmap fail reloc
> incomplete ORC unwind tables in file: vmlinux
> Failed to sort kernel tables
> make[2]: *** [/home/mike/work/git/kernel-upstream/scripts/Makefile.vmlinux:35: vmlinux] Error 1
> make[2]: *** Deleting file 'vmlinux'
> make[1]: *** [/home/mike/work/git/kernel-upstream/Makefile:1256: vmlinux] Error 2
> make: *** [Makefile:226: __sub-make] Error 2
>
> I bisected the failure to commit
>
> eb0481bbc4ce ("objtool: Fix reloc_hash size")
>
> I also tried gcc11 and building on a normal filesystem (rather than
> tmpfs) but the result is still the same. Different configurations (e.g.
> allmodconfig) only show more modules with "mmap fail reloc". The machine
> has 64 GB of RAM and both ulimit -m and ulimit -v show "unlimited".
> Anything idea what else I should try?
>
> Michal Kubecek

Interesting. Can you add the below patch and also do:

make net/ipv4/netfilter/iptable_nat.o OBJTOOL_ARGS="--stats"

and report the output?

---8<---

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index d420b5d2e2b6..4d5559ab4668 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -81,7 +81,7 @@ static inline void __elf_hash_del(struct elf_hash_node *node,
PROT_READ|PROT_WRITE, \
MAP_PRIVATE|MAP_ANON, -1, 0); \
if (__elf_table(name) == (void *)-1L) { \
- WARN("mmap fail " #name); \
+ perror("mmap " #name); \
__elf_table(name) = NULL; \
} \
__elf_table(name); \