summaryrefslogtreecommitdiff
path: root/gdb/auxv.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-06-19 18:16:40 +0100
committerPedro Alves <palves@redhat.com>2018-06-19 18:16:40 +0100
commit6ae502670996ec6e8b574dbaa4577d79fa9e9799 (patch)
tree7a45a150dad6d206a8eb32299a32732483e47fbb /gdb/auxv.c
parent61b04dd04ac2c64d455bc6e17f08a106305b06b3 (diff)
downloadbinutils-gdb-6ae502670996ec6e8b574dbaa4577d79fa9e9799.tar.gz
Silence -Wmaybe-uninitialized warning in minsyms.c:lookup_minimal_symbol_by_pc_section
Compiling with GCC 8.1 shows this warning: gdb/minsyms.c: In function 'bound_minimal_symbol lookup_minimal_symbol_by_pc_section(CORE_ADDR, obj_section*, lookup_msym_prefer)': gdb/minsyms.c:825:40: warning: 'want_type' may be used uninitialized in this function [-Wmaybe-uninitialized] && MSYMBOL_TYPE (&msymbol[hi]) != want_type That warning is a false positive, because the switch that converts enum lookup_msym_prefer values to enum enum minimal_symbol_type values has a case for every lookup_msym_prefer enumerator: switch (prefer) { case lookup_msym_prefer::TEXT: want_type = mst_text; break; case lookup_msym_prefer::TRAMPOLINE: want_type = mst_solib_trampoline; break; case lookup_msym_prefer::GNU_IFUNC: want_type = mst_text_gnu_ifunc; break; } The problem is that GCC assumes that enum variables may hold values other than the named enumerators (like e.g., "lookup_msym_prefer prefer = (lookup_msym_prefer) 10;"). Rework the code a bit, adding a gdb_assert to make it explicit to the compiler that want_type is initialized in all normal-return paths. gdb/ChangeLog: 2018-06-19 Pedro Alves <palves@redhat.com> * minsyms.c (msym_prefer_to_msym_type): New, factored out from ... (lookup_minimal_symbol_by_pc_section): ... here with gdb_assert_not_reached added.
Diffstat (limited to 'gdb/auxv.c')
0 files changed, 0 insertions, 0 deletions