This is an archive of the discontinued LLVM Phabricator instance.

Improve support of PDB as an external layout source
ClosedPublic

Authored by aleksandr.urakov on Jul 26 2018, 12:16 PM.

Details

Summary

This patch improves support of PDB as an external layout source in the next cases:

  • Multiple non-virtual inheritance from packed base classes. When using external layout, there's no need to align NonVirtualSize of a base class. It may cause an overlapping when the next base classes will be layouted (but there is a slightly different case in the test because I can't find a way to specify a base offset);
  • Support of nameless structs and unions. There is no info about nameless child structs and unions in Microsoft cl-emitted PDBs. Instead all its fields are just treated as outer structure's (union's) fields. This also causes a fields overlapping, and makes it possible for unions to have fields located at a non-zero offset.

Diff Detail

Repository
rL LLVM