Fix compiler warnings on Ubuntu Precise. Pull in gmock r408 in the process.

BUG=490
Review URL: https://breakpad.appspot.com/448002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1034 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
thestig@chromium.org
2012-09-10 18:26:31 +00:00
parent ba7e0d9657
commit 44c27420e2
4 changed files with 220 additions and 127 deletions

View File

@@ -92,41 +92,41 @@ unsigned char read_cmp[] =
TEST(DisassemblerX86Test, SimpleReturnInstruction) {
DisassemblerX86 dis(just_return, sizeof(just_return)-1, 0);
EXPECT_EQ(1, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(true, dis.endOfBlock());
EXPECT_TRUE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
const libdis::x86_insn_t* instruction = dis.currentInstruction();
EXPECT_EQ(libdis::insn_controlflow, instruction->group);
EXPECT_EQ(libdis::insn_return, instruction->type);
EXPECT_EQ(0, dis.NextInstruction());
EXPECT_EQ(false, dis.currentInstructionValid());
EXPECT_FALSE(dis.currentInstructionValid());
EXPECT_EQ(NULL, dis.currentInstruction());
}
TEST(DisassemblerX86Test, SimpleInvalidInstruction) {
DisassemblerX86 dis(invalid_instruction, sizeof(invalid_instruction)-1, 0);
EXPECT_EQ(0, dis.NextInstruction());
EXPECT_EQ(false, dis.currentInstructionValid());
EXPECT_FALSE(dis.currentInstructionValid());
}
TEST(DisassemblerX86Test, BadReadLeadsToBranch) {
DisassemblerX86 dis(read_eax_jmp_eax, sizeof(read_eax_jmp_eax)-1, 0);
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadRead());
EXPECT_TRUE(dis.setBadRead());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_logic, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_BRANCH_TARGET, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
}
@@ -134,111 +134,110 @@ TEST(DisassemblerX86Test, BadWriteLeadsToPushedArg) {
DisassemblerX86 dis(write_eax_arg_to_call,
sizeof(write_eax_arg_to_call)-1, 0);
EXPECT_EQ(6, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadWrite());
EXPECT_TRUE(dis.setBadWrite());
EXPECT_EQ(3, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
EXPECT_EQ(1, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(5, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_ARGUMENT_PASSED, dis.flags());
EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
}
TEST(DisassemblerX86Test, BadReadLeadsToBlockWrite) {
DisassemblerX86 dis(read_edi_stosb, sizeof(read_edi_stosb)-1, 0);
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadRead());
EXPECT_TRUE(dis.setBadRead());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_BLOCK_WRITE, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_string, dis.currentInstructionGroup());
}
TEST(DisassemblerX86Test, BadReadClobberThenWrite) {
DisassemblerX86 dis(read_clobber_write, sizeof(read_clobber_write)-1, 0);
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadRead());
EXPECT_TRUE(dis.setBadRead());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
}
TEST(DisassemblerX86Test, BadReadXCHGThenWrite) {
DisassemblerX86 dis(read_xchg_write, sizeof(read_xchg_write)-1, 0);
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadRead());
EXPECT_TRUE(dis.setBadRead());
EXPECT_EQ(1, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_WRITE, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
}
TEST(DisassemblerX86Test, BadReadThenCMP) {
DisassemblerX86 dis(read_cmp, sizeof(read_cmp)-1, 0);
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(0, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
EXPECT_EQ(true, dis.setBadRead());
EXPECT_TRUE(dis.setBadRead());
EXPECT_EQ(3, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_COMPARISON, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_comparison, dis.currentInstructionGroup());
EXPECT_EQ(2, dis.NextInstruction());
EXPECT_EQ(true, dis.currentInstructionValid());
EXPECT_TRUE(dis.currentInstructionValid());
EXPECT_EQ(google_breakpad::DISX86_BAD_COMPARISON, dis.flags());
EXPECT_EQ(false, dis.endOfBlock());
EXPECT_FALSE(dis.endOfBlock());
EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
}
}