diff options
| author | Greg Clayton <gclayton@apple.com> | 2010-11-15 01:47:11 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2010-11-15 01:47:11 +0000 |
| commit | cb7e3b35055703d089fd01a5b39849ec857a25b8 (patch) | |
| tree | 3605cae0a842280c32ac9a9df5d2b3279fa31d47 /lldb | |
| parent | 3ddef1ac3634f584a2467b656712703661df44a8 (diff) | |
| download | bcm5719-llvm-cb7e3b35055703d089fd01a5b39849ec857a25b8.tar.gz bcm5719-llvm-cb7e3b35055703d089fd01a5b39849ec857a25b8.zip | |
Added quotes around names that are being lookup up or inspected in the
expression logging.
Added some properties to the "objc" test. The expression parser can currently
display properties that are backed by the default functions "expr myStr.string"
will work. But it won't currently work when the property is backed by a
different function such as "expr myStr.date".
llvm-svn: 119103
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/lldb.xcodeproj/project.pbxproj | 2 | ||||
| -rw-r--r-- | lldb/source/Expression/IRForTarget.cpp | 52 | ||||
| -rw-r--r-- | lldb/test/objc/main.m | 50 |
3 files changed, 76 insertions, 28 deletions
diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj index 118eae7a0c8..2c13f0ca302 100644 --- a/lldb/lldb.xcodeproj/project.pbxproj +++ b/lldb/lldb.xcodeproj/project.pbxproj @@ -2942,7 +2942,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; PREBINDING = NO; VALID_ARCHS = "x86_64 i386"; }; diff --git a/lldb/source/Expression/IRForTarget.cpp b/lldb/source/Expression/IRForTarget.cpp index 4fc461f939f..bd121d57bb7 100644 --- a/lldb/source/Expression/IRForTarget.cpp +++ b/lldb/source/Expression/IRForTarget.cpp @@ -108,7 +108,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll } if (log) - log->Printf("Result name: %s", result_name); + log->Printf("Result name: \"%s\"", result_name); Value *result_value = llvm_module.getNamedValue(result_name); @@ -121,7 +121,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll } if (log) - log->Printf("Found result in the IR: %s", PrintValue(result_value, false).c_str()); + log->Printf("Found result in the IR: \"%s\"", PrintValue(result_value, false).c_str()); GlobalVariable *result_global = dyn_cast<GlobalVariable>(result_value); @@ -171,7 +171,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll ConstantInt *constant_int = dyn_cast<ConstantInt>(metadata_node->getOperand(1)); - uint64_t result_decl_intptr = constant_int->getZExtValue(); + lldb::addr_t result_decl_intptr = constant_int->getZExtValue(); clang::VarDecl *result_decl = reinterpret_cast<clang::VarDecl *>(result_decl_intptr); @@ -185,7 +185,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll m_decl_map->AddPersistentVariable(result_decl, new_result_name, result_decl_type); if (log) - log->Printf("Creating a new result global: %s", new_result_name.GetCString()); + log->Printf("Creating a new result global: \"%s\"", new_result_name.GetCString()); // Construct a new result global and set up its metadata @@ -215,7 +215,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll named_metadata->addOperand(persistent_global_md); if (log) - log->Printf("Replacing %s with %s", + log->Printf("Replacing \"%s\" with \"%s\"", PrintValue(result_global).c_str(), PrintValue(new_result_global).c_str()); @@ -244,7 +244,7 @@ IRForTarget::createResultVariable (llvm::Module &llvm_module, llvm::Function &ll first_entry_instruction); if (log) - log->Printf("Synthesized result store %s\n", PrintValue(synthesized_store).c_str()); + log->Printf("Synthesized result store \"%s\"\n", PrintValue(synthesized_store).c_str()); } else { @@ -323,20 +323,20 @@ IRForTarget::RewriteObjCSelector(Instruction* selector_load, std::string omvn_initializer_string = omvn_initializer_array->getAsString(); if (log) - log->Printf("Found Objective-C selector reference %s", omvn_initializer_string.c_str()); + log->Printf("Found Objective-C selector reference \"%s\"", omvn_initializer_string.c_str()); // Construct a call to sel_registerName if (!m_sel_registerName) { - uint64_t srN_addr; + lldb::addr_t sel_registerName_addr; static lldb_private::ConstString g_sel_registerName_str ("sel_registerName"); - if (!m_decl_map->GetFunctionAddress (g_sel_registerName_str, srN_addr)) + if (!m_decl_map->GetFunctionAddress (g_sel_registerName_str, sel_registerName_addr)) return false; if (log) - log->Printf("Found sel_registerName at 0x%llx", srN_addr); + log->Printf("Found sel_registerName at 0x%llx", sel_registerName_addr); // Build the function type: struct objc_selector *sel_registerName(uint8_t*) @@ -353,7 +353,7 @@ IRForTarget::RewriteObjCSelector(Instruction* selector_load, const IntegerType *intptr_ty = Type::getIntNTy(M.getContext(), (M.getPointerSize() == Module::Pointer64) ? 64 : 32); PointerType *srN_ptr_ty = PointerType::getUnqual(srN_type); - Constant *srN_addr_int = ConstantInt::get(intptr_ty, srN_addr, false); + Constant *srN_addr_int = ConstantInt::get(intptr_ty, sel_registerName_addr, false); m_sel_registerName = ConstantExpr::getIntToPtr(srN_addr_int, srN_ptr_ty); } @@ -590,7 +590,7 @@ IRForTarget::MaybeHandleVariable return true; if (log) - log->Printf("Found global variable %s without metadata", global_variable->getName().str().c_str()); + log->Printf("Found global variable \"%s\" without metadata", global_variable->getName().str().c_str()); return false; } @@ -617,7 +617,7 @@ IRForTarget::MaybeHandleVariable off_t value_alignment = (ast_context->getTypeAlign(qual_type) + 7) / 8; if (log) - log->Printf("Type of %s is [clang %s, lldb %s] [size %d, align %d]", + log->Printf("Type of \"%s\" is [clang \"%s\", lldb \"%s\"] [size %d, align %d]", name.c_str(), qual_type.getAsString().c_str(), PrintType(value_type).c_str(), @@ -688,7 +688,7 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, { default: if (log) - log->Printf("Unresolved intrinsic %s", Intrinsic::getName(intrinsic_id).c_str()); + log->Printf("Unresolved intrinsic \"%s\"", Intrinsic::getName(intrinsic_id).c_str()); return false; case Intrinsic::memcpy: { @@ -699,7 +699,7 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, } if (log && str) - log->Printf("Resolved intrinsic name %s", str.GetCString()); + log->Printf("Resolved intrinsic name \"%s\"", str.GetCString()); } else { @@ -707,7 +707,7 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, } clang::NamedDecl *fun_decl = DeclForGlobalValue (llvm_module, fun); - uint64_t fun_addr; + lldb::addr_t fun_addr = LLDB_INVALID_ADDRESS; Value **fun_value_ptr = NULL; if (fun_decl) @@ -719,7 +719,7 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, if (!m_decl_map->GetFunctionAddress (str, fun_addr)) { if (log) - log->Printf("Function %s had no address", str.GetCString()); + log->Printf("Function \"%s\" had no address", str.GetCString()); return false; } @@ -730,12 +730,12 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, if (!m_decl_map->GetFunctionAddress (str, fun_addr)) { if (log) - log->Printf ("Metadataless function %s had no address", str.GetCString()); + log->Printf ("Metadataless function \"%s\" had no address", str.GetCString()); } } if (log) - log->Printf("Found %s at %llx", str.GetCString(), fun_addr); + log->Printf("Found \"%s\" at 0x%llx", str.GetCString(), fun_addr); Value *fun_addr_ptr; @@ -766,7 +766,7 @@ IRForTarget::MaybeHandleCall(Module &llvm_module, llvm_call_inst->setMetadata("lldb.call.realName", func_metadata); if (log) - log->Printf("Set metadata for %p [%d, %s]", llvm_call_inst, func_name->isString(), func_name->getAsString().c_str()); + log->Printf("Set metadata for %p [%d, \"%s\"]", llvm_call_inst, func_name->isString(), func_name->getAsString().c_str()); return true; } @@ -952,7 +952,7 @@ UnfoldConstant(Constant *C, Value *new_value, Instruction *first_entry_instructi { default: if (log) - log->Printf("Unhandled constant expression type: %s", PrintValue(constant_expr).c_str()); + log->Printf("Unhandled constant expression type: \"%s\"", PrintValue(constant_expr).c_str()); return false; case Instruction::BitCast: { @@ -1007,7 +1007,7 @@ UnfoldConstant(Constant *C, Value *new_value, Instruction *first_entry_instructi else { if (log) - log->Printf("Unhandled constant type: %s", PrintValue(constant).c_str()); + log->Printf("Unhandled constant type: \"%s\"", PrintValue(constant).c_str()); return false; } } @@ -1064,7 +1064,7 @@ IRForTarget::replaceVariables(Module &M, Function &F) return false; if (log) - log->Printf("Arg: %s", PrintValue(argument).c_str()); + log->Printf("Arg: \"%s\"", PrintValue(argument).c_str()); BasicBlock &entry_block(F.getEntryBlock()); Instruction *first_entry_instruction(entry_block.getFirstNonPHIOrDbg()); @@ -1089,7 +1089,7 @@ IRForTarget::replaceVariables(Module &M, Function &F) return false; if (log) - log->Printf(" %s [%s] (%s) placed at %d", + log->Printf(" \"%s\" [\"%s\"] (\"%s\") placed at %d", value->getName().str().c_str(), name.GetCString(), PrintValue(value, true).c_str(), @@ -1124,7 +1124,7 @@ IRForTarget::runOnModule(Module &M) if (!function) { if (log) - log->Printf("Couldn't find %s() in the module", m_func_name.c_str()); + log->Printf("Couldn't find \"%s()\" in the module", m_func_name.c_str()); return false; } @@ -1178,7 +1178,7 @@ IRForTarget::runOnModule(Module &M) oss.flush(); - log->Printf("Module after preparing for execution: \n%s", s.c_str()); + log->Printf("Module after preparing for execution: \n\"%s\"", s.c_str()); } return true; diff --git a/lldb/test/objc/main.m b/lldb/test/objc/main.m index f2cdab7a4f6..9dffc71aaac 100644 --- a/lldb/test/objc/main.m +++ b/lldb/test/objc/main.m @@ -1,11 +1,58 @@ #import <Foundation/Foundation.h> +@interface MyString : NSObject { + NSString *_string; + NSDate *_date; +} +- (id)initWithNSString:(NSString *)string; + +@property (copy) NSString *string; +@property (readonly,getter=getTheDate) NSDate *date; + +- (NSDate *) getTheDate; +@end + +@implementation MyString + +@synthesize string = _string; +@synthesize date = _date; + +- (id)initWithNSString:(NSString *)string +{ + if (self = [super init]) + { + _string = [NSString stringWithString:string]; + _date = [NSDate date]; + } + return self; +} + +- (void) dealloc +{ + [_date release]; + [_string release]; + [super dealloc]; +} + +- (NSDate *) getTheDate +{ + return _date; +} + +- (NSString *)description +{ + return [_string stringByAppendingFormat:@" with timestamp: %@", _date]; +} +@end + int main (int argc, char const *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; static NSString *g_global_nsstr = @"Howdy"; - NSString *str1 = [NSString stringWithFormat:@"string %i", 1]; + + MyString *myStr = [[MyString alloc] initWithNSString: [NSString stringWithFormat:@"string %i", 1]]; + NSString *str1 = myStr.string; NSString *str2 = [NSString stringWithFormat:@"string %i", 2]; NSString *str3 = [NSString stringWithFormat:@"string %i", 3]; NSArray *array = [NSArray arrayWithObjects: str1, str2, str3, nil]; @@ -13,6 +60,7 @@ int main (int argc, char const *argv[]) str1, @"1", str2, @"2", str3, @"3", + myStr.date, @"date", nil]; id str_id = str1; |

