blob: 081af36a0a2ed987688d977d723b80ab3ffeee8a [file] [log] [blame]
# -*- python -*-
# Copyright (c) 2013 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import gdb_test
class MmapTest(gdb_test.GdbTest):
def setUp(self):
os.environ['NACL_FAULT_INJECTION'] = (
'MMAP_BYPASS_DESCRIPTOR_SAFETY_CHECK=GF/@')
super(MmapTest, self).setUp()
def test_mmap(self):
self.gdb.Command('break mmap_breakpoint')
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
self.gdb.ResumeAndExpectStop('finish', 'function-finished')
# Check that we can read from memory mapped files.
self.assertEquals(gdb_test.ParseNumber(self.gdb.Eval('*file_mapping')), 123)
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
self.gdb.ResumeAndExpectStop('finish', 'function-finished')
file_mapping_str = self.gdb.Eval('file_mapping')
file_mapping = gdb_test.ParseNumber(file_mapping_str)
self.gdb.Command('break *' + file_mapping_str)
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
# Check that breakpoint in memory mapped code is working.
self.assertEquals(self.gdb.GetPC(), file_mapping)
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
self.gdb.ResumeAndExpectStop('finish', 'function-finished')
file_mapping_str = self.gdb.Eval('file_mapping')
file_mapping = gdb_test.ParseNumber(file_mapping_str)
self.gdb.Command('break *' + file_mapping_str)
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
# Check that breakpoint in memory mapped code is working.
self.assertEquals(self.gdb.GetPC(), file_mapping)
if __name__ == '__main__':
gdb_test.Main()