Example #1
0
static void
print_wrapped(FILE* out, int* used, int columns, int indent, const char* format, ...)
{
    char* str;
    va_list ap;

    va_start(ap, format);
    
    str = formatv(format, ap);
    
    va_end(ap);
    
    if ((*used + strlen(str) >= columns) ||
        !strcmp(str, "\n"))
    {
        int i;
        fprintf(out, "\n");
        for (i = 0; i < indent; i++)
            fprintf(out, " ");
        *used = indent;
    }

    if (strcmp(str, "\n"))
    {
        *used += strlen(str);
        fprintf(out, "%s", str);
    }

    free(str);
}
Example #2
0
 //
 // PrintBuf::format
 //
 void PrintBuf::format(char const *fmt, ...)
 {
    va_list arg;
    va_start(arg, fmt);
    formatv(fmt, arg);
    va_end(arg);
 }
Example #3
0
unsigned int TestClient::GetPcRegisterId() {
  if (m_pc_register != UINT_MAX)
    return m_pc_register;

  for (unsigned int register_id = 0;; register_id++) {
    std::string message = formatv("qRegisterInfo{0:x-}", register_id).str();
    std::string response;
    if (!SendMessage(message, response)) {
      GTEST_LOG_(ERROR) << "Unable to query register ID for PC register.";
      return UINT_MAX;
    }

    auto elements_or_error = SplitPairList("GetPcRegisterId", response);
    if (auto split_error = elements_or_error.takeError()) {
      GTEST_LOG_(ERROR) << "GetPcRegisterId: Error splitting response: "
                        << response;
      return UINT_MAX;
    }

    auto elements = *elements_or_error;
    if (elements["alt-name"] == "pc" || elements["generic"] == "pc") {
      m_pc_register = register_id;
      break;
    }
  }

  return m_pc_register;
}
Example #4
0
bool format(std::wstring & out, const wchar_t * fmt, ...)
{
    va_list args;
    va_start(args,fmt);
    bool r = formatv(out,fmt,args);
    va_end(args);
    return r;
}
Example #5
0
char* format(const char* format, ...)
{
    va_list ap;
    char* result;
    va_start(ap, format);
    result = formatv(format, ap);
    va_end(ap);
    return result;
}
Example #6
0
std::wstring format(const wchar_t * fmt, ...)
{
    std::wstring result;
    va_list args;
    va_start(args,fmt);
    formatv(result,fmt,args);
    va_end(args);
    return result;
}
Example #7
0
/// Returns the timer for the specified pass invocation of \p PassID.
/// Each time it creates a new timer.
Timer &TimePassesHandler::getPassTimer(StringRef PassID) {
  // Bump counts for each request of the timer.
  unsigned Count = nextPassID(PassID);

  // Unconditionally appending description with a pass-invocation number.
  std::string FullDesc = formatv("{0} #{1}", PassID, Count).str();

  PassInvocationID UID{PassID, Count};
  Timer *T = new Timer(PassID, FullDesc, TG);
  auto Pair = TimingData.try_emplace(UID, T);
  assert(Pair.second && "should always create a new timer");
  return *(Pair.first->second.get());
}
Example #8
0
bool TestClient::StartDebugger() {
  const ArchSpec &arch_spec = HostInfo::GetArchitecture();
  Args args;
  args.AppendArgument(LLDB_SERVER);
  args.AppendArgument("gdbserver");
  args.AppendArgument("--log-channels=gdb-remote packets");
  args.AppendArgument("--reverse-connect");
  std::string log_file_name = GenerateLogFileName(arch_spec);
  if (log_file_name.size()) {
    args.AppendArgument("--log-file=" + log_file_name);
  }

  Status error;
  TCPSocket listen_socket(true, false);
  error = listen_socket.Listen("127.0.0.1:0", 5);
  if (error.Fail()) {
    GTEST_LOG_(ERROR) << "Unable to open listen socket.";
    return false;
  }

  char connect_remote_address[64];
  snprintf(connect_remote_address, sizeof(connect_remote_address),
           "localhost:%u", listen_socket.GetLocalPortNumber());

  args.AppendArgument(connect_remote_address);

  m_server_process_info.SetArchitecture(arch_spec);
  m_server_process_info.SetArguments(args, true);
  Status status = Host::LaunchProcess(m_server_process_info);
  if (status.Fail()) {
    GTEST_LOG_(ERROR)
        << formatv("Failure to launch lldb server: {0}.", status).str();
    return false;
  }

  char connect_remote_uri[64];
  snprintf(connect_remote_uri, sizeof(connect_remote_uri), "connect://%s",
           connect_remote_address);
  Socket *accept_socket;
  listen_socket.Accept(accept_socket);
  SetConnection(new ConnectionFileDescriptor(accept_socket));

  SendAck(); // Send this as a handshake.
  return true;
}
Example #9
0
bool TestClient::ContinueThread(unsigned long thread_id) {
  return Continue(formatv("vCont;c:{0:x-}", thread_id).str());
}
Example #10
0
std::wstring formatv(const wchar_t * fmt, va_list args)
{
    std::wstring result;
    formatv( result, fmt, args );
    return result;
}