Finding ODR Violations with ORC
C++'s One Definition Rule is one of the more obscure corners of the language. The problem with violating ODR is that it can lead to malignant application behavior that can be exceedingly difficult to root out. ODRs are also typically not found by tooling, as the Standard permits (and in some cases encourages) tooling to be silent about the violations it detects. In this talk, we cover the basics of the One Definition Rule, the ways in which build systems can cause ODR violations to happen, and finally ORC, a linker-wrapping tool that can be used to identify ODR violations in software.
I am a senior computer scientist at Adobe. I have been with the company nearly 25 years, and a majority of that has been spent working on Photoshop. Most recently, I have been working on the architectural underpinnings that are driving Photoshop on the iPad and Photoshop on the Web.
I am a Principal Scientist at Adobe. I work on Photoshop with an emphasis on performance and improving the product through tools and automation. Before Photoshop, I worked on product research, the Flash Player, and video games.