summaryrefslogtreecommitdiff
path: root/libsanitizer/HOWTO_MERGE
blob: 5d68e06789d62f0867377855356af8c56de92fad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
In general, merging process should not be very difficult, but we need to
track various ABI changes and GCC-specific patches carefully.  Here is a
general list of actions required to perform the merge:

- Checkout recent GCC tree.
- Run merge.sh script from libsanitizer directory.
- Modify Makefile.am files into asan/tsan/lsan/ubsan/sanitizer_common/interception
  directories if needed.  In particular, you may need to add new source files
  and remove old ones in source files list, add new flags to {C, CXX}FLAGS if
  needed and update DEFS with new defined variables.
- Apply all needed GCC-specific patches to libsanitizer (note that some of
  them might be already included to upstream).
- Apply all necessary compiler changes.  Be especially careful here, you must
  not break ABI between compiler and library.
- Modify configure.ac file if needed (e.g. if you need to add link against new
  library for sanitizer lilbs).
- Remove unused (deleted by merge) files from all source and include
  directories.  Be especially careful with headers, because they aren't listed
  in Makefiles explicitly.
- Regenerate configure script and all Makefiles by autoreconf.  You should use
  exactly the same autotools version as for other GCC directories (current
  version is 2.64, https://www.gnu.org/software/automake/faq/autotools-faq.html
  for details how to install/use it).
- Run regression testing on at least three platforms (e.g. x86-linux-gnu,
  x86_64-linux-gnu, aarch64-linux-gnu).
- Run {A, UB}San bootstrap on at least three platforms.