[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [COMMIT ec82200] Fix symfind.
From: |
Anthony Liguori |
Subject: |
[Qemu-commits] [COMMIT ec82200] Fix symfind. |
Date: |
Mon, 10 Aug 2009 21:48:09 -0000 |
From: Laurent Desnogues <address@hidden>
this patch fixes an issue in symfind.
Assume you have the following symbols:
Address Size
0045bca0 00000080 T s0
0045bd20 00000112 T s1
You'll notice that s1 is s0 + size.
So the current symfind will find that address 0045bd20 belongs to s0
instead of s1.
Laurent
Signed-off-by: Laurent Desnogues <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
Message-Id:
diff --git a/elf_ops.h b/elf_ops.h
index 699651c..15928cb 100644
--- a/elf_ops.h
+++ b/elf_ops.h
@@ -67,7 +67,7 @@ static int glue(symfind, SZ)(const void *s0, const void *s1)
int result = 0;
if (key->st_value < sym->st_value) {
result = -1;
- } else if (key->st_value > sym->st_value + sym->st_size) {
+ } else if (key->st_value >= sym->st_value + sym->st_size) {
result = 1;
}
return result;
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index a38167d..4f04b98 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -1199,7 +1199,7 @@ static int symfind(const void *s0, const void *s1)
int result = 0;
if (key->st_value < sym->st_value) {
result = -1;
- } else if (key->st_value > sym->st_value + sym->st_size) {
+ } else if (key->st_value >= sym->st_value + sym->st_size) {
result = 1;
}
return result;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-commits] [COMMIT ec82200] Fix symfind.,
Anthony Liguori <=