35 lines
1.1 KiB
Diff
35 lines
1.1 KiB
Diff
From c5422f8da6735efb5746c167fef01d9c20bd69e5 Mon Sep 17 00:00:00 2001
|
|
From: ningyu <405888464@qq.com>
|
|
Date: Fri, 9 Aug 2024 14:18:50 +0800
|
|
Subject: [PATCH] upatch-manage: resolve plt firstly
|
|
|
|
Signed-off-by: ningyu <405888464@qq.com>
|
|
---
|
|
upatch-manage/upatch-resolve.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/upatch-manage/upatch-resolve.c b/upatch-manage/upatch-resolve.c
|
|
index 197ea2f..5f1c2de 100644
|
|
--- a/upatch-manage/upatch-resolve.c
|
|
+++ b/upatch-manage/upatch-resolve.c
|
|
@@ -254,12 +254,12 @@ static unsigned long resolve_symbol(struct upatch_elf *uelf,
|
|
* Approach 3 is more general, but difficulty to implement.
|
|
*/
|
|
|
|
- /* resolve from got */
|
|
- elf_addr = resolve_rela_dyn(uelf, obj, name, &patch_sym);
|
|
+ /* resolve from plt */
|
|
+ elf_addr = resolve_rela_plt(uelf, obj, name, &patch_sym);
|
|
|
|
- /* resolve from plt */
|
|
+ /* resolve from got */
|
|
if (!elf_addr) {
|
|
- elf_addr = resolve_rela_plt(uelf, obj, name, &patch_sym);
|
|
+ elf_addr = resolve_rela_dyn(uelf, obj, name, &patch_sym);
|
|
}
|
|
|
|
/* resolve from dynsym */
|
|
--
|
|
2.34.1
|
|
|