Skip to content

Commit e0677ad

Browse files
committed
Revert "[lldb][MachO] Fix inspection of global variables that start with 'O' (llvm#161521)"
This reverts commit 1aefbce.
1 parent 70361a7 commit e0677ad

File tree

2 files changed

+48
-75
lines changed

2 files changed

+48
-75
lines changed

lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2812,29 +2812,32 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
28122812
is_gsym = true;
28132813
sym[sym_idx].SetExternal(true);
28142814

2815-
llvm::StringRef symbol_name_ref(symbol_name);
2816-
if (symbol_name_ref.starts_with(
2817-
g_objc_v2_prefix_class)) {
2818-
symbol_name_non_abi_mangled = symbol_name + 1;
2819-
symbol_name =
2820-
symbol_name + g_objc_v2_prefix_class.size();
2821-
type = eSymbolTypeObjCClass;
2822-
demangled_is_synthesized = true;
2823-
2824-
} else if (symbol_name_ref.starts_with(
2825-
g_objc_v2_prefix_metaclass)) {
2826-
symbol_name_non_abi_mangled = symbol_name + 1;
2827-
symbol_name =
2828-
symbol_name + g_objc_v2_prefix_metaclass.size();
2829-
type = eSymbolTypeObjCMetaClass;
2830-
demangled_is_synthesized = true;
2831-
} else if (symbol_name_ref.starts_with(
2832-
g_objc_v2_prefix_ivar)) {
2833-
symbol_name_non_abi_mangled = symbol_name + 1;
2834-
symbol_name =
2835-
symbol_name + g_objc_v2_prefix_ivar.size();
2836-
type = eSymbolTypeObjCIVar;
2837-
demangled_is_synthesized = true;
2815+
if (symbol_name && symbol_name[0] == '_' &&
2816+
symbol_name[1] == 'O') {
2817+
llvm::StringRef symbol_name_ref(symbol_name);
2818+
if (symbol_name_ref.starts_with(
2819+
g_objc_v2_prefix_class)) {
2820+
symbol_name_non_abi_mangled = symbol_name + 1;
2821+
symbol_name =
2822+
symbol_name + g_objc_v2_prefix_class.size();
2823+
type = eSymbolTypeObjCClass;
2824+
demangled_is_synthesized = true;
2825+
2826+
} else if (symbol_name_ref.starts_with(
2827+
g_objc_v2_prefix_metaclass)) {
2828+
symbol_name_non_abi_mangled = symbol_name + 1;
2829+
symbol_name =
2830+
symbol_name + g_objc_v2_prefix_metaclass.size();
2831+
type = eSymbolTypeObjCMetaClass;
2832+
demangled_is_synthesized = true;
2833+
} else if (symbol_name_ref.starts_with(
2834+
g_objc_v2_prefix_ivar)) {
2835+
symbol_name_non_abi_mangled = symbol_name + 1;
2836+
symbol_name =
2837+
symbol_name + g_objc_v2_prefix_ivar.size();
2838+
type = eSymbolTypeObjCIVar;
2839+
demangled_is_synthesized = true;
2840+
}
28382841
} else {
28392842
if (nlist.n_value != 0)
28402843
symbol_section = section_info.GetSection(
@@ -3722,7 +3725,7 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
37223725

37233726
if (is_debug) {
37243727
switch (nlist.n_type) {
3725-
case N_GSYM: {
3728+
case N_GSYM:
37263729
// global symbol: name,,NO_SECT,type,0
37273730
// Sometimes the N_GSYM value contains the address.
37283731

@@ -3738,30 +3741,33 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
37383741
is_gsym = true;
37393742
sym[sym_idx].SetExternal(true);
37403743

3741-
llvm::StringRef symbol_name_ref(symbol_name);
3742-
if (symbol_name_ref.starts_with(g_objc_v2_prefix_class)) {
3743-
symbol_name_non_abi_mangled = symbol_name + 1;
3744-
symbol_name = symbol_name + g_objc_v2_prefix_class.size();
3745-
type = eSymbolTypeObjCClass;
3746-
demangled_is_synthesized = true;
3747-
3748-
} else if (symbol_name_ref.starts_with(g_objc_v2_prefix_metaclass)) {
3749-
symbol_name_non_abi_mangled = symbol_name + 1;
3750-
symbol_name = symbol_name + g_objc_v2_prefix_metaclass.size();
3751-
type = eSymbolTypeObjCMetaClass;
3752-
demangled_is_synthesized = true;
3753-
} else if (symbol_name_ref.starts_with(g_objc_v2_prefix_ivar)) {
3754-
symbol_name_non_abi_mangled = symbol_name + 1;
3755-
symbol_name = symbol_name + g_objc_v2_prefix_ivar.size();
3756-
type = eSymbolTypeObjCIVar;
3757-
demangled_is_synthesized = true;
3744+
if (symbol_name && symbol_name[0] == '_' && symbol_name[1] == 'O') {
3745+
llvm::StringRef symbol_name_ref(symbol_name);
3746+
if (symbol_name_ref.starts_with(g_objc_v2_prefix_class)) {
3747+
symbol_name_non_abi_mangled = symbol_name + 1;
3748+
symbol_name = symbol_name + g_objc_v2_prefix_class.size();
3749+
type = eSymbolTypeObjCClass;
3750+
demangled_is_synthesized = true;
3751+
3752+
} else if (symbol_name_ref.starts_with(
3753+
g_objc_v2_prefix_metaclass)) {
3754+
symbol_name_non_abi_mangled = symbol_name + 1;
3755+
symbol_name = symbol_name + g_objc_v2_prefix_metaclass.size();
3756+
type = eSymbolTypeObjCMetaClass;
3757+
demangled_is_synthesized = true;
3758+
} else if (symbol_name_ref.starts_with(g_objc_v2_prefix_ivar)) {
3759+
symbol_name_non_abi_mangled = symbol_name + 1;
3760+
symbol_name = symbol_name + g_objc_v2_prefix_ivar.size();
3761+
type = eSymbolTypeObjCIVar;
3762+
demangled_is_synthesized = true;
3763+
}
37583764
} else {
37593765
if (nlist.n_value != 0)
37603766
symbol_section =
37613767
section_info.GetSection(nlist.n_sect, nlist.n_value);
37623768
type = eSymbolTypeData;
37633769
}
3764-
} break;
3770+
break;
37653771

37663772
case N_FNAME:
37673773
// procedure name (f77 kludge): name,,NO_SECT,0,0

lldb/test/Shell/Expr/TestGlobalSymbolObjCConflict.c

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)