, , Recproducible Builds .
ASLR ( ). , , , , ; . , , , ASLR . (.quads )
Linux ASLR echo 0 | sudo tee/proc/sys/kernel/randomize_va_space. ASLR Linux
setarch `uname -m` -R /bin/bash`
man page setarch : - R, "--addr-no-randomize" ( ADDR_NO_RANDOMIZE).
OS X 10.6 DYLD_NO_PIE ( man dyld, bash export DYLD_NO_PIE=1); 10.7 --no_pie build, LLVM _POSIX_SPAWN_DISABLE_ASLR, posix_spawnattr_setflags llvm; 10.7+ script http://src.chromium.org/viewvc/chrome/trunk/src/build/mac/change_mach_o_flags.py --no-pie, PIE llvm ( asan people).
clang llvm , / , :
14901 llvm:: DenseMap:
- typedef llvm::DenseMap<const VarDecl *, std::pair<UsesVec*, bool> > UsesMap;
+ typedef std::pair<UsesVec*, bool> MappedType;
+
+
+
+ typedef llvm::MapVector<const VarDecl *, MappedType> UsesMap;
...
-
-
LLVM , , Map vs MapVector: trunk/docs/ProgrammersManual.rst:
1164 The difference between SetVector and other sets is that the order of iteration
1165 is guaranteed to match the order of insertion into the SetVector. This property
1166 is really important for things like sets of pointers. Because pointer values
1167 are non-deterministic (e.g. vary across runs of the program on different
1168 machines), iterating over the pointers in the set will not be in a well-defined
1169 order.
1170
1171 The drawback of SetVector is that it requires twice as much space as a normal
1172 set and has the sum of constant factors from the set-like container and the
1173 sequential container that it uses. Use it **only** if you need to iterate over
1174 the elements in a deterministic order.
...
1277 StringMap iteratation order, however, is not guaranteed to be deterministic, so
1278 any uses which require that should instead use a std::map.
...
1364 ``MapVector<KeyT,ValueT>`` provides a subset of the DenseMap interface. The
1365 main difference is that the iteration order is guaranteed to be the insertion
1366 order, making it an easy (but somewhat expensive) solution for non-deterministic
1367 iteration over maps of pointers.
, LLVM , . , ARMTargetStreamer MapVector ConstantPools (ARMTargetStreamer.cpp - AssemblerConstantPools). , , DenseMap, ? , DenseMap: "DenseMap. * Const_iterator" regex codesearch.debian.net
LLVM clang (3.0, 2011 -11-30) , 2012 2013 ( ). LLVM Clang, , (, bc-bitcode - ), LLVM bugzilla.