]> git.lizzy.rs Git - rust.git/blob - src/test/run-make-fulldeps/stable-symbol-names/Makefile
Rollup merge of #94467 - ibraheemdev:master, r=pnkfelix
[rust.git] / src / test / run-make-fulldeps / stable-symbol-names / Makefile
1 include ../tools.mk
2
3 # The following command will:
4 #  1. dump the symbols of a library using `nm`
5 #  2. extract only those lines that we are interested in via `grep`
6 #  3. from those lines, extract just the symbol name via `sed`, which:
7 #    * always starts with "_ZN" and ends with "E" (`legacy` mangling)
8 #    * always starts with "_R" (`v0` mangling)
9 #  4. sort those symbol names for deterministic comparison
10 #  5. write the result into a file
11
12 dump-symbols = nm "$(TMPDIR)/lib$(1).rlib" \
13              | grep -E "$(2)" \
14              | sed -E "s/.*(_ZN.*E|_R[a-zA-Z0-9_]*).*/\1/" \
15              | sort \
16              > "$(TMPDIR)/$(1)$(3).nm"
17
18 # This test
19 # - compiles each of the two crates 2 times and makes sure each time we get
20 #   exactly the same symbol names
21 # - makes sure that both crates agree on the same symbol names for monomorphic
22 #   functions
23
24 all:
25         $(RUSTC) stable-symbol-names1.rs
26         $(call dump-symbols,stable_symbol_names1,generic_|mono_,_v1)
27         rm $(TMPDIR)/libstable_symbol_names1.rlib
28         $(RUSTC) stable-symbol-names1.rs
29         $(call dump-symbols,stable_symbol_names1,generic_|mono_,_v2)
30         cmp "$(TMPDIR)/stable_symbol_names1_v1.nm" "$(TMPDIR)/stable_symbol_names1_v2.nm"
31
32         $(RUSTC) stable-symbol-names2.rs
33         $(call dump-symbols,stable_symbol_names2,generic_|mono_,_v1)
34         rm $(TMPDIR)/libstable_symbol_names2.rlib
35         $(RUSTC) stable-symbol-names2.rs
36         $(call dump-symbols,stable_symbol_names2,generic_|mono_,_v2)
37         cmp "$(TMPDIR)/stable_symbol_names2_v1.nm" "$(TMPDIR)/stable_symbol_names2_v2.nm"
38
39         $(call dump-symbols,stable_symbol_names1,mono_,_cross)
40         $(call dump-symbols,stable_symbol_names2,mono_,_cross)
41         cmp "$(TMPDIR)/stable_symbol_names1_cross.nm" "$(TMPDIR)/stable_symbol_names2_cross.nm"