1*288bf522SAndroid Build Coastguard Worker #include <errno.h> 2*288bf522SAndroid Build Coastguard Worker #include <fstream> 3*288bf522SAndroid Build Coastguard Worker #include <iostream> 4*288bf522SAndroid Build Coastguard Worker #include <regex> 5*288bf522SAndroid Build Coastguard Worker #include <string> 6*288bf522SAndroid Build Coastguard Worker #include <string.h> 7*288bf522SAndroid Build Coastguard Worker main(int argc,char * argv[])8*288bf522SAndroid Build Coastguard Workerint main(int argc, char * argv[]) { 9*288bf522SAndroid Build Coastguard Worker if (argc != 2) { 10*288bf522SAndroid Build Coastguard Worker std::cerr << "usage: " << argv[0] << ": libname\n"; 11*288bf522SAndroid Build Coastguard Worker return -1; 12*288bf522SAndroid Build Coastguard Worker } 13*288bf522SAndroid Build Coastguard Worker std::regex reg(std::string("^([a-f0-9]+)\\-[0-9a-f]+\\s+.+\\s+(\\d+)\\s+.+\\s+\\d+\\s+") + std::string(argv[1]) + std::string("\\s*$")); 14*288bf522SAndroid Build Coastguard Worker 15*288bf522SAndroid Build Coastguard Worker /* open /proc/self/maps */ 16*288bf522SAndroid Build Coastguard Worker std::string ln; 17*288bf522SAndroid Build Coastguard Worker std::ifstream m_file("/proc/self/maps"); 18*288bf522SAndroid Build Coastguard Worker if (!m_file) { 19*288bf522SAndroid Build Coastguard Worker std::cerr << "Unable to open /proc/self/maps " << strerror(errno) << "\n"; 20*288bf522SAndroid Build Coastguard Worker return -1; 21*288bf522SAndroid Build Coastguard Worker } 22*288bf522SAndroid Build Coastguard Worker while (getline(m_file, ln)) { 23*288bf522SAndroid Build Coastguard Worker std::smatch sm; 24*288bf522SAndroid Build Coastguard Worker if (std::regex_match (ln,sm, reg)) { 25*288bf522SAndroid Build Coastguard Worker if (std::stoi(sm[2]) == 0) { 26*288bf522SAndroid Build Coastguard Worker std::cout << sm[1]; 27*288bf522SAndroid Build Coastguard Worker return 0; 28*288bf522SAndroid Build Coastguard Worker } 29*288bf522SAndroid Build Coastguard Worker } 30*288bf522SAndroid Build Coastguard Worker } 31*288bf522SAndroid Build Coastguard Worker return -1; 32*288bf522SAndroid Build Coastguard Worker } 33