]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: Fix ASAN linker errors for Power ELF V1 ABI [PR113284]
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 9 Jan 2024 10:40:14 +0000 (11:40 +0100)
committerIlya Leoshkevich <iii@linux.ibm.com>
Fri, 12 Jan 2024 09:51:53 +0000 (10:51 +0100)
commitd8c1361220ba7617adf4ccc396499f6393ec223e
treeeac8330190da6e9568ea27927cb7bb4a78a845f9
parent9073084a0648906c46dea5ed05650e94cf16a6ee
rs6000: Fix ASAN linker errors for Power ELF V1 ABI [PR113284]

rs6000_elf_declare_function_name () outputs Power ELF V1 ABI function
entry labels without using ASM_OUTPUT_FUNCTION_LABEL ().  As a result,
.LASANPC labels are not emitted, causing linker errors.

In theory, it is possible to reuse ASM_OUTPUT_FUNCTION_LABEL () by
changing rs6000_output_function_entry () to generate label names
without outputting them, but this would be quite a large change.

Instead, factor out the .LASANPC emitting code from
ASM_OUTPUT_FUNCTION_LABEL () and call it manually.

Fixes: c659dd8bfb55 ("Implement ASM_DECLARE_FUNCTION_NAME using ASM_OUTPUT_FUNCTION_LABEL")
Suggested-by: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
gcc/ChangeLog:

PR sanitizer/113284
* config/rs6000/rs6000.cc (rs6000_elf_declare_function_name):
Use assemble_function_label_final () for Power ELF V1 ABI.
* output.h (assemble_function_label_final): New function.
* varasm.cc (assemble_function_label_raw): Use
assemble_function_label_final ().
(assemble_function_label_final): New function.
gcc/config/rs6000/rs6000.cc
gcc/output.h
gcc/varasm.cc