Lines Matching refs:res

112     NativeAssemblerResult res;
113 Compile(assembly_text, &res, test_name);
115 EXPECT_TRUE(res.ok) << res.error_msg;
116 if (!res.ok) {
121 if (data == *res.code) {
122 Clean(&res);
124 if (DisassembleBinaries(data, *res.code, test_name)) {
125 if (data.size() > res.code->size()) {
129 ", gcc size=" << res.code->size();
134 Clean(&res);
138 EXPECT_EQ(*res.code, data) << "Outputs (and disassembly) not identical.";
371 // Compile the given assembly code and extract the binary, if possible. Put result into res.
372 bool Compile(std::string assembly_code, NativeAssemblerResult* res, std::string test_name) {
373 res->ok = false;
374 res->code.reset(nullptr);
376 res->base_name = GetTmpnam() + std::string("---") + test_name;
380 std::ofstream s_out(res->base_name + ".S");
387 if (!Assemble((res->base_name + ".S").c_str(), (res->base_name + ".o").c_str(),
388 &res->error_msg)) {
389 res->error_msg = "Could not compile.";
393 std::string odump = Objdump(res->base_name + ".o");
395 res->error_msg = "Objdump failed.";
405 res->error_msg = "Objdump output not recognized: too few tokens.";
410 res->error_msg = "Objdump output not recognized: .text not second token.";
415 std::istringstream(lengthToken) >> std::hex >> res->length;
421 std::ifstream obj(res->base_name + ".o");
423 res->code.reset(new std::vector<uint8_t>(res->length));
424 obj.read(reinterpret_cast<char*>(&(*res->code)[0]), res->length);
427 res->ok = true;
432 void Clean(const NativeAssemblerResult* res) {
433 std::remove((res->base_name + ".S").c_str());
434 std::remove((res->base_name + ".o").c_str());
435 std::remove((res->base_name + ".o.dump").c_str());