[Lldb-commits] [lldb] [lldb][RISCV] Fixed TestSymbolFileJSON for RISC-V (PR #161497)
Georgiy Samoylov via lldb-commits
lldb-commits at lists.llvm.org
Wed Oct 1 02:43:03 PDT 2025
https://github.com/sga-sc created https://github.com/llvm/llvm-project/pull/161497
This test failed during testing on the RISC-V target because we couldn't strip the main label from the binary. main is dynamically linked when the -fPIC flag is enabled. The RISC-V ABI requires that executables support loading at arbitrary addresses to enable shared libraries and secure loading (ASLR). In PIC mode, function addresses cannot be hardcoded in the code. Instead, code is generated to load addresses from the GOT/PLT tables, which are initialized by the dynamic loader. The reference to main thus ends up in .dynsym and is dynamically bound. We cannot strip main or any other dynamically linked functions because these functions are referenced indirectly via dynamic linking tables (.plt and .got). Removing these symbols would break the dynamic linking mechanism needed to resolve function addresses at runtime, causing the executable to fail to correctly call them.
>From 0ac194eb5638886ad02a8255959371a6bb6bc918 Mon Sep 17 00:00:00 2001
From: Georgiy Samoylov <g.samoylov at syntacore.com>
Date: Tue, 23 Sep 2025 18:26:39 +0300
Subject: [PATCH] [lldb][RISCV] Fixed TestSymbolFileJSON for RISC-V
The RISC-V ABI requires executables to support loading at arbitrary addresses to enable shared libraries and secure loading (ASLR). In PIC mode, function addresses cannot be hardcoded, and consequently we cannot strip symbols that are dynamically linked. By disabling PIC, we can strip such symbols for testing.
---
lldb/test/API/functionalities/json/symbol-file/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/lldb/test/API/functionalities/json/symbol-file/Makefile b/lldb/test/API/functionalities/json/symbol-file/Makefile
index 13bc164582eee..5d05d95fc8428 100644
--- a/lldb/test/API/functionalities/json/symbol-file/Makefile
+++ b/lldb/test/API/functionalities/json/symbol-file/Makefile
@@ -1,4 +1,5 @@
C_SOURCES := main.c
+CFLAGS_EXTRAS := -no-pie
all: stripped.out
More information about the lldb-commits
mailing list