std::vector formatter question

On standalone Hexagon (no OS support), we use Dinkumware for the c/c++
library. LLDB isn't able to print out values of a vector:

Process 1 stopped
* thread #1: tid = 0x0001, 0x0000519c vector.elf`main + 76 at vector.cpp:10,
stop reason = step in
    frame #0: 0x0000519c vector.elf`main + 76 at vector.c:10
   7 vector<int> v;
   8 v.push_back(2);
   9 v.push_back(1);
-> 10 cout << v[0] << " " << v[1] << endl;
   11 return 0;
   12 }
(lldb) fr v v
(std::vector<int, std::allocator<int> >) v = size=0 {}

When I run on x86 linux built with gcc, I get:
(lldb) fr v v
(std::vector<int, std::allocator<int> >) v = size=2 {
  [0] = 2
  [1] = 1

My guess is Dinkumware's vector type is just a little bit different from
libstdc++/libcxx, so the standard formatters don't do the right thing. Where
are the vector<int> formatters defined, and how does LLDB determine which
one to use?

The libstdc++ one is defined in examples/synthetic/ while the libc++ one is defined in source/Plugins/Language/CPlusPlus/LibCxxVector.cpp and both of them is registered in source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp by specifying a type name regex to identify the effected types. If you have a custom STL or any other costume type I suggest you to write a synthetic child provider in Python (see as it can be loaded at runtime so you don’t have to fork LLDB.