From 1cfc169c047d281329b9c10b57ba91732569b79f Mon Sep 17 00:00:00 2001 From: Ken Ryall Date: Fri, 30 Oct 2009 20:34:07 +0000 Subject: [PATCH] Avoid duplicate symbols of zero size. --- .../cdt/utils/elf/parser/ElfBinaryObject.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java index c644686afc8..ae10affb483 100644 --- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java +++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java @@ -182,7 +182,19 @@ public class ElfBinaryObject extends BinaryObjectAdapter { protected void addSymbols(Elf.Symbol[] array, int type, List list) { for (int i = 0; i < array.length; i++) { - list.add(new Symbol(this, array[i].toString(), type, array[i].st_value, array[i].st_size)); + // Multiple function symbol entries for the same address are generated + // do not add duplicate symbols with 0 size to the list + boolean duplicateAddressFound = false; + if (type == ISymbol.FUNCTION && array[i].st_size == 0){ + for (Symbol s : list) { + if (s.getAddress().equals(array[i].st_value)){ + duplicateAddressFound = true; + break; + } + } + } + if (!duplicateAddressFound) + list.add(new Symbol(this, array[i].toString(), type, array[i].st_value, array[i].st_size)); } }