I've moved the ARM build attribute parsing code out of llvm-readobj and into the support library (although maybe this should be in Object). On the creation of an ELFFileObject, the attributes are parsed if they exist. The parser has been modified to store all the attributes as it goes, and I've added numerous getter functions.
The ELFFileObject now also provides a function to try to decide the target triple to use from the build attributes, and there is now also a getFeatures() function for ARM. llvm-objdump uses these functions to setup the target triple, if a subarch isn't provided, as well as the subtarget features.