From 010a0670053ab59ebf03075c70ab3073f029b69a Mon Sep 17 00:00:00 2001 From: Laurent Desnogues Date: Thu, 30 Jul 2009 19:23:49 +0200 Subject: [PATCH] Fix symfind. 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 Signed-off-by: Anthony Liguori Message-Id: --- elf_ops.h | 2 +- linux-user/elfload.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/elf_ops.h b/elf_ops.h index 699651c9e15..15928cbb5b2 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 199e9d815ee..3a8268b783f 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; -- 2.39.5