Part 2 of D9955 , i.e. llvm-readobj bits.
It seems that readelf puts a "Flags: " string before the actual flag value for FLAGS1 and not FLAGS, e.g.
0x000000000000001e (FLAGS) ORIGIN BIND_NOW
0x000000006ffffffb (FLAGS_1) Flags: NOW ORIGIN
I personally think this doesn't make a lot of sense and considering llvm-readobj already broke format compatibility w/ GNU readelf (at least the version on my system, 2.17.50), not surrounding among others the type name with braces, I just ignored it, so llvm-readobj -dynamic-table will print something like:
0x000000000000001E FLAGS ORIGIN BIND_NOW
0x000000006FFFFFFB FLAGS_1 NOW ORIGIN
If there are objections, I can change the format.
P.S. Too bad all the tests for llvm-readobj rely on executable, maybe at some point this should be changed, but at least the new test doesn't.
Check in assembly or an object file, you cannot rely on the existence of clang.