Pull Kbuild fixes from Masahiro Yamada: - Fix section mismatch warning messages for riscv and loongarch - Remove CONFIG_IA64 left-over from linux/export-internal.h - Fix the location of the quotes for UIMAGE_NAME - Fix a memory leak bug in Kconfig * tag 'kbuild-fixes-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: kconfig: fix memory leak from range properties kbuild: Move the single quotes for image name linux/export: clean up the IA-64 KSYM_FUNC macro modpost: fix section mismatch message for RELA
Showing the changes to scripts (3 of 4 files). Show all
Unified · Split
| @@ -487,14 +487,14 @@ UIMAGE_OPTS-y ?= · 486 unmodified lines | ||
| 487 | 487 | UIMAGE_TYPE ?= kernel |
| 488 | 488 | UIMAGE_LOADADDR ?= arch_must_set_this |
| 489 | 489 | UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR) |
| 490 | −UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)' | |
| 490 | +UIMAGE_NAME ?= Linux-$(KERNELRELEASE) | |
| 491 | 491 | |
| 492 | 492 | quiet_cmd_uimage = UIMAGE $@ |
| 493 | 493 | cmd_uimage = $(BASH) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \ |
| 494 | 494 | -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \ |
| 495 | 495 | -T $(UIMAGE_TYPE) \ |
| 496 | 496 | -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \ |
| 497 | − -n $(UIMAGE_NAME) -d $< $@ | |
| 497 | + -n '$(UIMAGE_NAME)' -d $< $@ | |
| 498 | 498 | |
| 499 | 499 | # XZ |
| 500 | 500 | # --------------------------------------------------------------------------- |
| @@ -122,9 +122,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) · 121 unmodified lines | ||
| 122 | 122 | static void sym_validate_range(struct symbol *sym) |
| 123 | 123 | { |
| 124 | 124 | struct property *prop; |
| 125 | + struct symbol *range_sym; | |
| 125 | 126 | int base; |
| 126 | 127 | long long val, val2; |
| 127 | − char str[64]; | |
| 128 | 128 | |
| 129 | 129 | switch (sym->type) { |
| 130 | 130 | case S_INT: |
| @@ -140,17 +140,15 @@ static void sym_validate_range(struct symbol *sym) · 9 unmodified lines | ||
| 140 | 140 | if (!prop) |
| 141 | 141 | return; |
| 142 | 142 | val = strtoll(sym->curr.val, NULL, base); |
| 143 | − val2 = sym_get_range_val(prop->expr->left.sym, base); | |
| 143 | + range_sym = prop->expr->left.sym; | |
| 144 | + val2 = sym_get_range_val(range_sym, base); | |
| 144 | 145 | if (val >= val2) { |
| 145 | − val2 = sym_get_range_val(prop->expr->right.sym, base); | |
| 146 | + range_sym = prop->expr->right.sym; | |
| 147 | + val2 = sym_get_range_val(range_sym, base); | |
| 146 | 148 | if (val <= val2) |
| 147 | 149 | return; |
| 148 | 150 | } |
| 149 | − if (sym->type == S_INT) | |
| 150 | − sprintf(str, "%lld", val2); | |
| 151 | − else | |
| 152 | − sprintf(str, "0x%llx", val2); | |
| 153 | − sym->curr.val = xstrdup(str); | |
| 151 | + sym->curr.val = range_sym->curr.val; | |
| 154 | 152 | } |
| 155 | 153 | |
| 156 | 154 | static void sym_set_changed(struct symbol *sym) |
| @@ -1383,13 +1383,15 @@ static void section_rela(struct module *mod, struct elf_info *elf, · 1382 unmodified lines | ||
| 1383 | 1383 | const Elf_Rela *rela; |
| 1384 | 1384 | |
| 1385 | 1385 | for (rela = start; rela < stop; rela++) { |
| 1386 | + Elf_Sym *tsym; | |
| 1386 | 1387 | Elf_Addr taddr, r_offset; |
| 1387 | 1388 | unsigned int r_type, r_sym; |
| 1388 | 1389 | |
| 1389 | 1390 | r_offset = TO_NATIVE(rela->r_offset); |
| 1390 | 1391 | get_rel_type_and_sym(elf, rela->r_info, &r_type, &r_sym); |
| 1391 | 1392 | |
| 1392 | − taddr = TO_NATIVE(rela->r_addend); | |
| 1393 | + tsym = elf->symtab_start + r_sym; | |
| 1394 | + taddr = tsym->st_value + TO_NATIVE(rela->r_addend); | |
| 1393 | 1395 | |
| 1394 | 1396 | switch (elf->hdr->e_machine) { |
| 1395 | 1397 | case EM_RISCV: |
| @@ -1404,7 +1406,7 @@ static void section_rela(struct module *mod, struct elf_info *elf, · 8 unmodified lines | ||
| 1404 | 1406 | break; |
| 1405 | 1407 | } |
| 1406 | 1408 | |
| 1407 | − check_section_mismatch(mod, elf, elf->symtab_start + r_sym, | |
| 1409 | + check_section_mismatch(mod, elf, tsym, | |
| 1408 | 1410 | fsecndx, fromsec, r_offset, taddr); |
| 1409 | 1411 | } |
| 1410 | 1412 | } |