aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.base/jit-elf-main.c31
-rw-r--r--gdb/testsuite/gdb.base/jit-elf-solib.c10
-rw-r--r--gdb/testsuite/lib/jit-elf-helpers.exp1
3 files changed, 8 insertions, 34 deletions
diff --git a/gdb/testsuite/gdb.base/jit-elf-main.c b/gdb/testsuite/gdb.base/jit-elf-main.c
index be7185e..2d65489 100644
--- a/gdb/testsuite/gdb.base/jit-elf-main.c
+++ b/gdb/testsuite/gdb.base/jit-elf-main.c
@@ -51,35 +51,6 @@ usage (void)
exit (1);
}
-/* Rename jit_function_XXXX to match idx */
-
-static void
-update_name (const void *const addr, int idx)
-{
- const ElfW (Ehdr) *const ehdr = (ElfW (Ehdr) *)addr;
- ElfW (Shdr) *const shdr = (ElfW (Shdr) *)((char *)addr + ehdr->e_shoff);
- ElfW (Phdr) *const phdr = (ElfW (Phdr) *)((char *)addr + ehdr->e_phoff);
- int i;
-
- for (i = 0; i < ehdr->e_shnum; ++i)
- {
- if (shdr[i].sh_type == SHT_STRTAB)
- {
- /* Note: we update both .strtab and .dynstr. The latter would
- not be correct if this were a regular shared library (.hash
- would be wrong), but this is a simulation -- the library is
- never exposed to the dynamic loader, so it all ends up ok. */
- char *const strtab = (char *)((ElfW (Addr))addr + shdr[i].sh_offset);
- char *const strtab_end = strtab + shdr[i].sh_size;
- char *p;
-
- for (p = strtab; p < strtab_end; p += strlen (p) + 1)
- if (strcmp (p, "jit_function_XXXX") == 0)
- sprintf (p, "jit_function_%04d", idx);
- }
- }
-}
-
/* Defined by the .exp file if testing attach. */
#ifndef ATTACH
#define ATTACH 0
@@ -152,8 +123,6 @@ MAIN (int argc, char *argv[])
exit (1);
}
- update_name (addr, i);
-
/* Link entry at the end of the list. */
entry->symfile_addr = (const char *)addr;
entry->symfile_size = st.st_size;
diff --git a/gdb/testsuite/gdb.base/jit-elf-solib.c b/gdb/testsuite/gdb.base/jit-elf-solib.c
index 3bdebe9..66d6a2b 100644
--- a/gdb/testsuite/gdb.base/jit-elf-solib.c
+++ b/gdb/testsuite/gdb.base/jit-elf-solib.c
@@ -15,7 +15,11 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-/* This simulates a JIT library. The function is "renamed" after being
- loaded into memory. */
+/* This simulates a JIT library. The function name is supplied during
+ compilation as a macro. */
-int jit_function_XXXX() { return 42; }
+#ifndef FUNCTION_NAME
+#error "Must define the FUNCTION_NAME macro to set a jited function name"
+#endif
+
+int FUNCTION_NAME() { return 42; }
diff --git a/gdb/testsuite/lib/jit-elf-helpers.exp b/gdb/testsuite/lib/jit-elf-helpers.exp
index 032417b..ab647ab 100644
--- a/gdb/testsuite/lib/jit-elf-helpers.exp
+++ b/gdb/testsuite/lib/jit-elf-helpers.exp
@@ -91,6 +91,7 @@ proc compile_and_download_n_jit_so {jit_solib_basename jit_solib_srcfile count}
# with mapping the resulting binary to the same fixed base it allows
# to dynamically execute functions from it without any further adjustments.
set options [list \
+ additional_flags=-DFUNCTION_NAME=[format "jit_function_%04d" $i] \
additional_flags=-Xlinker \
additional_flags=-Ttext-segment=$addr]
if { [gdb_compile_shlib ${jit_solib_srcfile} ${binfile} $options] != "" } {