The address value printed for the symbol "foo" in the added test case using llvm-nm is 1002 which is one byte short of the expected value of 1003. In instances where the user wants to see the raw values via llvm-nm the option --print-raw-values can be used.
The aim is to get those raw values by adding a new option to llvm-nm i.e. --print-raw-values.
I don't think that this is a good idea to introduce state in such a general place. This header is used for all sorts of tools, they will be expecting that the Thumb bit and the Micromips indicator bit are stripped. If this is ever set by another user then all sorts of things could break.