diff mbox series

[v2] kexec_file: Drop weak attribute from arch_kexec_apply_relocations[_add]

Message ID 20220519091237.676736-1-naveen.n.rao@linux.vnet.ibm.com (mailing list archive)
State Handled Elsewhere
Headers show
Series [v2] kexec_file: Drop weak attribute from arch_kexec_apply_relocations[_add] | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 24 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 7 jobs.

Commit Message

Naveen N. Rao May 19, 2022, 9:12 a.m. UTC
Since commit d1bcae833b32f1 ("ELF: Don't generate unused section
symbols") [1], binutils (v2.36+) started dropping section symbols that
it thought were unused.  This isn't an issue in general, but with
kexec_file.c, gcc is placing kexec_arch_apply_relocations[_add] into a
separate .text.unlikely section and the section symbol ".text.unlikely"
is being dropped. Due to this, recordmcount is unable to find a non-weak
symbol in .text.unlikely to generate a relocation record against.

Address this by dropping the weak attribute from these functions.
Instead, follow the existing pattern of having architectures #define the
name of the function they want to override in their headers.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d1bcae833b32f1

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
 arch/s390/include/asm/kexec.h |  8 ++++++
 arch/x86/include/asm/kexec.h  |  8 ++++++
 include/linux/kexec.h         | 46 +++++++++++++++++++++++++++++------
 kernel/kexec_file.c           | 34 --------------------------
 4 files changed, 54 insertions(+), 42 deletions(-)


base-commit: f993aed406eaf968ba3867a76bb46c95336a33d0

Comments

kernel test robot May 19, 2022, 3:17 p.m. UTC | #1
Hi "Naveen,

I love your patch! Yet something to improve:

[auto build test ERROR on f993aed406eaf968ba3867a76bb46c95336a33d0]

url:    https://github.com/intel-lab-lkp/linux/commits/Naveen-N-Rao/kexec_file-Drop-weak-attribute-from-arch_kexec_apply_relocations-_add/20220519-171432
base:   f993aed406eaf968ba3867a76bb46c95336a33d0
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20220519/202205192320.CoXevcfR-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/67171688c71cb5b05f26e0dfc45eec8d8d1428ff
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Naveen-N-Rao/kexec_file-Drop-weak-attribute-from-arch_kexec_apply_relocations-_add/20220519-171432
        git checkout 67171688c71cb5b05f26e0dfc45eec8d8d1428ff
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash arch/s390/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from arch/s390/kernel/machine_kexec_reloc.c:3:
>> arch/s390/include/asm/kexec.h:89:38: error: unknown type name 'Elf_Shdr'; did you mean 'elf_shdr'?
      89 |                                      Elf_Shdr *section,
         |                                      ^~~~~~~~
         |                                      elf_shdr
   arch/s390/include/asm/kexec.h:90:44: error: unknown type name 'Elf_Shdr'
      90 |                                      const Elf_Shdr *relsec,
         |                                            ^~~~~~~~
   arch/s390/include/asm/kexec.h:91:44: error: unknown type name 'Elf_Shdr'
      91 |                                      const Elf_Shdr *symtab);
         |                                            ^~~~~~~~


vim +89 arch/s390/include/asm/kexec.h

    85	
    86	#ifdef CONFIG_KEXEC_FILE
    87	struct purgatory_info;
    88	int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
  > 89					     Elf_Shdr *section,
Andrew Morton May 19, 2022, 5:29 p.m. UTC | #2
On Thu, 19 May 2022 23:17:48 +0800 kernel test robot <lkp@intel.com> wrote:

> Hi "Naveen,
> 
> I love your patch! Yet something to improve:
> 
> [auto build test ERROR on f993aed406eaf968ba3867a76bb46c95336a33d0]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Naveen-N-Rao/kexec_file-Drop-weak-attribute-from-arch_kexec_apply_relocations-_add/20220519-171432
> base:   f993aed406eaf968ba3867a76bb46c95336a33d0
> config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20220519/202205192320.CoXevcfR-lkp@intel.com/config)
> compiler: s390-linux-gcc (GCC) 11.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://github.com/intel-lab-lkp/linux/commit/67171688c71cb5b05f26e0dfc45eec8d8d1428ff
>         git remote add linux-review https://github.com/intel-lab-lkp/linux
>         git fetch --no-tags linux-review Naveen-N-Rao/kexec_file-Drop-weak-attribute-from-arch_kexec_apply_relocations-_add/20220519-171432
>         git checkout 67171688c71cb5b05f26e0dfc45eec8d8d1428ff
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash arch/s390/
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>    In file included from arch/s390/kernel/machine_kexec_reloc.c:3:
> >> arch/s390/include/asm/kexec.h:89:38: error: unknown type name 'Elf_Shdr'; did you mean 'elf_shdr'?
>       89 |                                      Elf_Shdr *section,
>          |                                      ^~~~~~~~
>          |                                      elf_shdr
>    arch/s390/include/asm/kexec.h:90:44: error: unknown type name 'Elf_Shdr'
>       90 |                                      const Elf_Shdr *relsec,
>          |                                            ^~~~~~~~
>    arch/s390/include/asm/kexec.h:91:44: error: unknown type name 'Elf_Shdr'
>       91 |                                      const Elf_Shdr *symtab);
>          |                                            ^~~~~~~~

Thanks, I did this:

--- a/arch/s390/include/asm/kexec.h~kexec_file-drop-weak-attribute-from-arch_kexec_apply_relocations-fix
+++ a/arch/s390/include/asm/kexec.h
@@ -9,6 +9,8 @@
 #ifndef _S390_KEXEC_H
 #define _S390_KEXEC_H
 
+#include <linux/module.h>
+
 #include <asm/processor.h>
 #include <asm/page.h>
 #include <asm/setup.h>
Uwe Kleine-König May 29, 2022, 6:56 a.m. UTC | #3
Hello,

on current linux-next ARCH=riscv allmodconfig breaks with:

  CC      arch/riscv/kernel/elf_kexec.o
arch/riscv/kernel/elf_kexec.c:345:5: error: redefinition of ‘arch_kexec_apply_relocations_add’
  345 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/riscv/kernel/elf_kexec.c:16:
include/linux/kexec.h:236:1: note: previous definition of ‘arch_kexec_apply_relocations_add’ with type ‘int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)’ {aka ‘int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)’}
  236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(I think) because there is a conflict between the two commits:

233c1e6c319c kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
838b3e28488f RISC-V: Load purgatory in kexec_file

And so next is broken starting from
164a9037b1d33f28ba27671c16ec1c23d4a11acf which merges the riscv tree.

Best regards
Uwe
Christophe Leroy May 29, 2022, 9:46 a.m. UTC | #4
Le 29/05/2022 à 08:56, Uwe Kleine-König a écrit :
> Hello,
> 
> on current linux-next ARCH=riscv allmodconfig breaks with:
> 
>    CC      arch/riscv/kernel/elf_kexec.o
> arch/riscv/kernel/elf_kexec.c:345:5: error: redefinition of ‘arch_kexec_apply_relocations_add’
>    345 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
>        |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from arch/riscv/kernel/elf_kexec.c:16:
> include/linux/kexec.h:236:1: note: previous definition of ‘arch_kexec_apply_relocations_add’ with type ‘int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)’ {aka ‘int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)’}
>    236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> (I think) because there is a conflict between the two commits:
> 
> 233c1e6c319c kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
> 838b3e28488f RISC-V: Load purgatory in kexec_file
> 
> And so next is broken starting from
> 164a9037b1d33f28ba27671c16ec1c23d4a11acf which merges the riscv tree.
> 

In arch/riscv/include/asm/kexec.h, do the same as s390 did in commit 
233c1e6c319c:


diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index 7f3c9ac34bd8..540dd469b088 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -83,4 +83,12 @@ struct kimage_arch {
  extern const struct kexec_file_ops s390_kexec_image_ops;
  extern const struct kexec_file_ops s390_kexec_elf_ops;

+#ifdef CONFIG_KEXEC_FILE
+struct purgatory_info;
+int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
+				     Elf_Shdr *section,
+				     const Elf_Shdr *relsec,
+				     const Elf_Shdr *symtab);
+#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
+#endif
  #endif /*_S390_KEXEC_H */
Uwe Kleine-König May 29, 2022, 2:06 p.m. UTC | #5
Hello,

On Sun, May 29, 2022 at 09:46:47AM +0000, Christophe Leroy wrote:
> Le 29/05/2022 à 08:56, Uwe Kleine-König a écrit :
> > Hello,
> > 
> > on current linux-next ARCH=riscv allmodconfig breaks with:
> > 
> >    CC      arch/riscv/kernel/elf_kexec.o
> > arch/riscv/kernel/elf_kexec.c:345:5: error: redefinition of ‘arch_kexec_apply_relocations_add’
> >    345 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
> >        |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > In file included from arch/riscv/kernel/elf_kexec.c:16:
> > include/linux/kexec.h:236:1: note: previous definition of ‘arch_kexec_apply_relocations_add’ with type ‘int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)’ {aka ‘int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)’}
> >    236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
> >        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 
> > (I think) because there is a conflict between the two commits:
> > 
> > 233c1e6c319c kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
> > 838b3e28488f RISC-V: Load purgatory in kexec_file
> > 
> > And so next is broken starting from
> > 164a9037b1d33f28ba27671c16ec1c23d4a11acf which merges the riscv tree.
> > 
> 
> In arch/riscv/include/asm/kexec.h, do the same as s390 did in commit 
> 233c1e6c319c:
> 
> diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
> index 7f3c9ac34bd8..540dd469b088 100644
> --- a/arch/s390/include/asm/kexec.h
> +++ b/arch/s390/include/asm/kexec.h
> @@ -83,4 +83,12 @@ struct kimage_arch {
>   extern const struct kexec_file_ops s390_kexec_image_ops;
>   extern const struct kexec_file_ops s390_kexec_elf_ops;
> 
> +#ifdef CONFIG_KEXEC_FILE
> +struct purgatory_info;
> +int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
> +				     Elf_Shdr *section,
> +				     const Elf_Shdr *relsec,
> +				     const Elf_Shdr *symtab);
> +#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
> +#endif
>   #endif /*_S390_KEXEC_H */

I can confirm that doing

diff --git a/arch/riscv/include/asm/kexec.h b/arch/riscv/include/asm/kexec.h
index 206217b23301..eee260e8ab30 100644
--- a/arch/riscv/include/asm/kexec.h
+++ b/arch/riscv/include/asm/kexec.h
@@ -55,6 +55,13 @@ extern riscv_kexec_method riscv_kexec_norelocate;
 
 #ifdef CONFIG_KEXEC_FILE
 extern const struct kexec_file_ops elf_kexec_ops;
+
+struct purgatory_info;
+int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
+				     Elf_Shdr *section,
+				     const Elf_Shdr *relsec,
+				     const Elf_Shdr *symtab);
+#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
 #endif
 
 #endif

on top of 838b3e28488f results in a compilable tree. And when merging
233c1e6c319c into this, it is still building.

I'm not enough into kexec (and riscv) to judge if this is sensible, or
create a useful commit log but the obvious way forward is to apply the
above patch to the riscv tree before it hits Linus' tree.

Best regards
Uwe
Liao, Chang May 30, 2022, 1:43 a.m. UTC | #6
在 2022/5/29 22:06, Uwe Kleine-König 写道:
> Hello,
> 
> On Sun, May 29, 2022 at 09:46:47AM +0000, Christophe Leroy wrote:
>> Le 29/05/2022 à 08:56, Uwe Kleine-König a écrit :
>>> Hello,
>>>
>>> on current linux-next ARCH=riscv allmodconfig breaks with:
>>>
>>>    CC      arch/riscv/kernel/elf_kexec.o
>>> arch/riscv/kernel/elf_kexec.c:345:5: error: redefinition of ‘arch_kexec_apply_relocations_add’
>>>    345 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
>>>        |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> In file included from arch/riscv/kernel/elf_kexec.c:16:
>>> include/linux/kexec.h:236:1: note: previous definition of ‘arch_kexec_apply_relocations_add’ with type ‘int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)’ {aka ‘int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)’}
>>>    236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
>>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> (I think) because there is a conflict between the two commits:
>>>
>>> 233c1e6c319c kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
>>> 838b3e28488f RISC-V: Load purgatory in kexec_file
>>>
>>> And so next is broken starting from
>>> 164a9037b1d33f28ba27671c16ec1c23d4a11acf which merges the riscv tree.
>>>
>>
>> In arch/riscv/include/asm/kexec.h, do the same as s390 did in commit 
>> 233c1e6c319c:
>>
>> diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
>> index 7f3c9ac34bd8..540dd469b088 100644
>> --- a/arch/s390/include/asm/kexec.h
>> +++ b/arch/s390/include/asm/kexec.h
>> @@ -83,4 +83,12 @@ struct kimage_arch {
>>   extern const struct kexec_file_ops s390_kexec_image_ops;
>>   extern const struct kexec_file_ops s390_kexec_elf_ops;
>>
>> +#ifdef CONFIG_KEXEC_FILE
>> +struct purgatory_info;
>> +int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
>> +				     Elf_Shdr *section,
>> +				     const Elf_Shdr *relsec,
>> +				     const Elf_Shdr *symtab);
>> +#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
>> +#endif
>>   #endif /*_S390_KEXEC_H */
> 
> I can confirm that doing
> 
> diff --git a/arch/riscv/include/asm/kexec.h b/arch/riscv/include/asm/kexec.h
> index 206217b23301..eee260e8ab30 100644
> --- a/arch/riscv/include/asm/kexec.h
> +++ b/arch/riscv/include/asm/kexec.h
> @@ -55,6 +55,13 @@ extern riscv_kexec_method riscv_kexec_norelocate;
>  
>  #ifdef CONFIG_KEXEC_FILE
>  extern const struct kexec_file_ops elf_kexec_ops;
> +
> +struct purgatory_info;
> +int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
> +				     Elf_Shdr *section,
> +				     const Elf_Shdr *relsec,
> +				     const Elf_Shdr *symtab);
> +#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
>  #endif
>  
>  #endif

LGTM, you could send a fixup patch to riscv, thanks.

> 
> on top of 838b3e28488f results in a compilable tree. And when merging
> 233c1e6c319c into this, it is still building.
> 
> I'm not enough into kexec (and riscv) to judge if this is sensible, or
> create a useful commit log but the obvious way forward is to apply the
> above patch to the riscv tree before it hits Linus' tree.
> 
> Best regards
> Uwe
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
diff mbox series

Patch

diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index 7f3c9ac34bd8d1..540dd469b0886d 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -83,4 +83,12 @@  struct kimage_arch {
 extern const struct kexec_file_ops s390_kexec_image_ops;
 extern const struct kexec_file_ops s390_kexec_elf_ops;
 
+#ifdef CONFIG_KEXEC_FILE
+struct purgatory_info;
+int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
+				     Elf_Shdr *section,
+				     const Elf_Shdr *relsec,
+				     const Elf_Shdr *symtab);
+#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
+#endif
 #endif /*_S390_KEXEC_H */
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
index 11b7c06e2828c3..6ad8d946cd3ebf 100644
--- a/arch/x86/include/asm/kexec.h
+++ b/arch/x86/include/asm/kexec.h
@@ -186,6 +186,14 @@  extern int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages,
 extern void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages);
 #define arch_kexec_pre_free_pages arch_kexec_pre_free_pages
 
+#ifdef CONFIG_KEXEC_FILE
+struct purgatory_info;
+int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
+				     Elf_Shdr *section,
+				     const Elf_Shdr *relsec,
+				     const Elf_Shdr *symtab);
+#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
+#endif
 #endif
 
 typedef void crash_vmclear_fn(void);
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 58d1b58a971e34..fcd5035209f19a 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -193,14 +193,6 @@  void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name);
 int arch_kexec_kernel_image_probe(struct kimage *image, void *buf,
 				  unsigned long buf_len);
 void *arch_kexec_kernel_image_load(struct kimage *image);
-int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
-				     Elf_Shdr *section,
-				     const Elf_Shdr *relsec,
-				     const Elf_Shdr *symtab);
-int arch_kexec_apply_relocations(struct purgatory_info *pi,
-				 Elf_Shdr *section,
-				 const Elf_Shdr *relsec,
-				 const Elf_Shdr *symtab);
 int arch_kimage_file_post_load_cleanup(struct kimage *image);
 #ifdef CONFIG_KEXEC_SIG
 int arch_kexec_kernel_verify_sig(struct kimage *image, void *buf,
@@ -229,6 +221,44 @@  extern int crash_exclude_mem_range(struct crash_mem *mem,
 				   unsigned long long mend);
 extern int crash_prepare_elf64_headers(struct crash_mem *mem, int kernel_map,
 				       void **addr, unsigned long *sz);
+
+#ifndef arch_kexec_apply_relocations_add
+/*
+ * arch_kexec_apply_relocations_add - apply relocations of type RELA
+ * @pi:		Purgatory to be relocated.
+ * @section:	Section relocations applying to.
+ * @relsec:	Section containing RELAs.
+ * @symtab:	Corresponding symtab.
+ *
+ * Return: 0 on success, negative errno on error.
+ */
+static inline int
+arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
+				 const Elf_Shdr *relsec, const Elf_Shdr *symtab)
+{
+	pr_err("RELA relocation unsupported.\n");
+	return -ENOEXEC;
+}
+#endif
+
+#ifndef arch_kexec_apply_relocations
+/*
+ * arch_kexec_apply_relocations - apply relocations of type REL
+ * @pi:		Purgatory to be relocated.
+ * @section:	Section relocations applying to.
+ * @relsec:	Section containing RELs.
+ * @symtab:	Corresponding symtab.
+ *
+ * Return: 0 on success, negative errno on error.
+ */
+static inline int
+arch_kexec_apply_relocations(struct purgatory_info *pi, Elf_Shdr *section,
+			     const Elf_Shdr *relsec, const Elf_Shdr *symtab)
+{
+	pr_err("REL relocation unsupported.\n");
+	return -ENOEXEC;
+}
+#endif
 #endif /* CONFIG_KEXEC_FILE */
 
 #ifdef CONFIG_KEXEC_ELF
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
index 8347fc158d2b96..c108a2a8875463 100644
--- a/kernel/kexec_file.c
+++ b/kernel/kexec_file.c
@@ -108,40 +108,6 @@  int __weak arch_kexec_kernel_verify_sig(struct kimage *image, void *buf,
 }
 #endif
 
-/*
- * arch_kexec_apply_relocations_add - apply relocations of type RELA
- * @pi:		Purgatory to be relocated.
- * @section:	Section relocations applying to.
- * @relsec:	Section containing RELAs.
- * @symtab:	Corresponding symtab.
- *
- * Return: 0 on success, negative errno on error.
- */
-int __weak
-arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
-				 const Elf_Shdr *relsec, const Elf_Shdr *symtab)
-{
-	pr_err("RELA relocation unsupported.\n");
-	return -ENOEXEC;
-}
-
-/*
- * arch_kexec_apply_relocations - apply relocations of type REL
- * @pi:		Purgatory to be relocated.
- * @section:	Section relocations applying to.
- * @relsec:	Section containing RELs.
- * @symtab:	Corresponding symtab.
- *
- * Return: 0 on success, negative errno on error.
- */
-int __weak
-arch_kexec_apply_relocations(struct purgatory_info *pi, Elf_Shdr *section,
-			     const Elf_Shdr *relsec, const Elf_Shdr *symtab)
-{
-	pr_err("REL relocation unsupported.\n");
-	return -ENOEXEC;
-}
-
 /*
  * Free up memory used by kernel, initrd, and command line. This is temporary
  * memory allocation which is not needed any more after these buffers have