arch,base,cpu,kern,sim: Encapsulate symbols in a class.
authorGabe Black <gabeblack@google.com>
Tue, 21 Jan 2020 13:44:00 +0000 (05:44 -0800)
committerGabe Black <gabeblack@google.com>
Tue, 19 May 2020 22:32:21 +0000 (22:32 +0000)
commitc5b2b8e19fe33b30e233b928fe3728bca54418de
tree76c6e18a9fe33155384e1044a5470c31dacce448
parentfd580041fe62e51f2386af5be0ad92e735ba1e24
arch,base,cpu,kern,sim: Encapsulate symbols in a class.

The SymbolTable class had been tracking symbols as two independent
pieces, a name and an address, and acted as a way to translate between
them. Symbols can be more complex than that, and so this change
encapsulates the information associated with a symbol in a new class.

As a step towards simplifying the API for reading symbols from a
binary, this change also adds a "binding" field to that class so that
global, local and weak symbols can all go in the same table and be
differentiated later as needed. That should unify the current API
which has a method for each symbol type.

While the innards of SymbolTable were being reworked, this change
also makes that class more STL like by adding iterators, and begin
and end methods. These iterate over a new vector which holds all the
symbols. The address and name keyed maps now hold indexes into that
vector instead of the other half of the symbol.

Change-Id: I8084f86fd737f697ec041bac86a635a315fd1194
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24784
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
23 files changed:
src/arch/arm/freebsd/fs_workload.cc
src/arch/arm/insts/static_inst.cc
src/arch/arm/linux/fs_workload.cc
src/arch/arm/stacktrace.cc
src/arch/generic/linux/threadinfo.hh
src/arch/mips/isa/formats/branch.isa
src/arch/power/insts/branch.cc
src/arch/riscv/bare_metal/fs_workload.hh
src/arch/sparc/fs_workload.hh
src/arch/sparc/insts/branch.cc
src/arch/x86/stacktrace.cc
src/base/loader/elf_object.cc
src/base/loader/symtab.cc
src/base/loader/symtab.hh
src/cpu/base.cc
src/cpu/exetrace.cc
src/cpu/profile.cc
src/kern/linux/helpers.cc
src/sim/kernel_workload.hh
src/sim/pseudo_inst.cc
src/sim/workload.hh
src/unittest/nmtest.cc
src/unittest/symtest.cc