@@ -3,7 +3,7 @@ include ../tools.mk
33all : off packed unpacked
44
55ifeq ($(UNAME ) ,Darwin)
6- # If disabled, don't run dsymutil
6+ # If disabled, don't run ` dsymutil`.
77off :
88 rm -rf $(TMPDIR ) /* .dSYM
99 $(RUSTC ) foo.rs -g -C split-debuginfo=off
@@ -29,98 +29,280 @@ unpacked:
2929 [ ! -d $( TMPDIR) /foo.dSYM ]
3030else
3131ifdef IS_WINDOWS
32- # Windows only supports = packed
32+ # Windows only supports packed debuginfo - nothing to test.
3333off :
3434packed :
3535unpacked :
3636else
37+ # Some non-Windows, non-Darwin platforms are not stable, and some are.
3738ifeq ($(UNAME ) ,Linux)
3839 UNSTABLEOPTS :=
3940else
4041 UNSTABLEOPTS := -Zunstable-options
4142endif
4243
44+ # - Debuginfo in `.o` files
45+ # - `.o` deleted
46+ # - `.dwo` never created
47+ # - `.dwp` never created
4348off :
4449 $(RUSTC ) foo.rs -g -C $(UNSTABLEOPTS ) split-debuginfo=off
4550 [ ! -f $( TMPDIR) /* .dwp ]
4651 [ ! -f $( TMPDIR) /* .dwo ]
47-
4852 $(RUSTC ) foo.rs -g
4953 [ ! -f $( TMPDIR) /* .dwp ]
5054 [ ! -f $( TMPDIR) /* .dwo ]
5155
52- packed : packed-split packed-single
56+ packed : packed-split packed-single packed-lto packed-remapped packed-crosscrate
5357
58+ # - Debuginfo in `.dwo` files
59+ # - `.o` deleted
60+ # - `.dwo` deleted
61+ # - `.dwp` present
5462packed-split :
5563 $(RUSTC ) foo.rs -g $(UNSTABLEOPTS ) -C split-debuginfo=packed -Zsplit-dwarf-kind=split
56- ls $(TMPDIR ) /* .dwp
57- rm -rf $(TMPDIR ) /* .dwp $(TMPDIR ) /* .dwo
64+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
65+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
66+ rm $(TMPDIR ) /foo.dwp
67+ rm $(TMPDIR ) /$(call BIN,foo)
5868
69+ # - Debuginfo in `.o` files
70+ # - `.o` deleted
71+ # - `.dwo` never created
72+ # - `.dwp` present
5973packed-single :
6074 $(RUSTC ) foo.rs -g $(UNSTABLEOPTS ) -C split-debuginfo=packed -Zsplit-dwarf-kind=single
61- ls $(TMPDIR ) /* .dwp
75+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
76+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
77+ rm $(TMPDIR ) /foo.dwp
78+ rm $(TMPDIR ) /$(call BIN,foo)
79+
80+ packed-lto : packed-lto-split packed-lto-single
81+
82+ # - rmeta file added to rlib, no object files are generated and thus no debuginfo is generated
83+ # - `.o` never created
84+ # - `.dwo` never created
85+ # - `.dwp` never created
86+ packed-lto-split :
87+ $(RUSTC ) baz.rs -g $(UNSTABLEOPTS ) -Csplit-debuginfo=packed -Zsplit-dwarf-kind=split \
88+ --crate-type=rlib -Clinker-plugin-lto
89+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
90+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
91+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
92+ rm $(TMPDIR ) /libbaz.rlib
93+
94+ # - rmeta file added to rlib, no object files are generated and thus no debuginfo is generated
95+ # - `.o` never created
96+ # - `.dwo` never created
97+ # - `.dwp` never created
98+ packed-lto-single :
99+ $(RUSTC ) baz.rs -g $(UNSTABLEOPTS ) -Csplit-debuginfo=packed -Zsplit-dwarf-kind=single \
100+ --crate-type=rlib -Clinker-plugin-lto
101+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
62102 ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
63- rm -rf $(TMPDIR ) /* .dwp
103+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
104+ rm $(TMPDIR ) /libbaz.rlib
64105
65106packed-remapped : packed-remapped-split packed-remapped-single
66107
108+ # - Debuginfo in `.dwo` files
109+ # - `.o` and binary refer to remapped `.dwo` paths which do not exist
110+ # - `.o` deleted
111+ # - `.dwo` deleted
112+ # - `.dwp` present
67113packed-remapped-split :
68114 $(RUSTC ) $(UNSTABLEOPTS ) -C split-debuginfo=packed -C debuginfo=2 \
69115 -Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR ) =/a foo.rs -g
70116 objdump -Wi $(TMPDIR ) /foo | grep DW_AT_GNU_dwo_name | (! grep $( TMPDIR) ) || exit 1
117+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
118+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
119+ rm $(TMPDIR ) /foo.dwp
120+ rm $(TMPDIR ) /$(call BIN,foo)
71121
122+ # - Debuginfo in `.o` files
123+ # - `.o` and binary refer to remapped `.o` paths which do not exist
124+ # - `.o` deleted
125+ # - `.dwo` never created
126+ # - `.dwp` present
72127packed-remapped-single :
73128 $(RUSTC ) $(UNSTABLEOPTS ) -C split-debuginfo=packed -C debuginfo=2 \
74129 -Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR ) =/a foo.rs -g
75130 objdump -Wi $(TMPDIR ) /foo | grep DW_AT_GNU_dwo_name | (! grep $( TMPDIR) ) || exit 1
131+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
132+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
133+ rm $(TMPDIR ) /foo.dwp
134+ rm $(TMPDIR ) /$(call BIN,foo)
76135
77136packed-crosscrate : packed-crosscrate-split packed-crosscrate-single
78137
138+ # - Debuginfo in `.dwo` files
139+ # - (bar) `.rlib` file created, contains `.dwo`
140+ # - (bar) `.o` deleted
141+ # - (bar) `.dwo` deleted
142+ # - (bar) `.dwp` never created
143+ # - (main) `.o` deleted
144+ # - (main) `.dwo` deleted
145+ # - (main) `.dwp` present
79146packed-crosscrate-split :
80147 $(RUSTC ) --crate-type lib $(UNSTABLEOPTS ) -C split-debuginfo=packed \
81148 -Zsplit-dwarf-kind=split -C debuginfo=2 -g bar.rs
82149 ls $(TMPDIR ) /* .rlib
150+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
83151 ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
84152 ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
85- $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib -Z unstable-options $(UNSTABLEOPTS ) \
153+ $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib $(UNSTABLEOPTS ) \
86154 -C split-debuginfo=packed -Zsplit-dwarf-kind=split -C debuginfo=2 -g main.rs
87- rm $(TMPDIR ) /* .dwo
155+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
156+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
88157 rm $(TMPDIR ) /main.dwp
89158 rm $(TMPDIR ) /$(call BIN,main)
90159
160+ # - Debuginfo in `.o` files
161+ # - (bar) `.rlib` file created, contains `.o`
162+ # - (bar) `.o` deleted
163+ # - (bar) `.dwo` never created
164+ # - (bar) `.dwp` never created
165+ # - (main) `.o` deleted
166+ # - (main) `.dwo` never created
167+ # - (main) `.dwp` present
91168packed-crosscrate-single :
92169 $(RUSTC ) --crate-type lib $(UNSTABLEOPTS ) -C split-debuginfo=packed \
93170 -Zsplit-dwarf-kind=single -C debuginfo=2 -g bar.rs
94171 ls $(TMPDIR ) /* .rlib
172+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
95173 ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
96174 ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
97- $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib -Z unstable-options $(UNSTABLEOPTS ) \
175+ $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib $(UNSTABLEOPTS ) \
98176 -C split-debuginfo=packed -Zsplit-dwarf-kind=single -C debuginfo=2 -g main.rs
177+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
99178 ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
100179 rm $(TMPDIR ) /main.dwp
101180 rm $(TMPDIR ) /$(call BIN,main)
102181
103- unpacked : unpacked-split unpacked-single unpacked-remapped-split unpacked-remapped-single
182+ unpacked : unpacked-split unpacked-single unpacked-lto unpacked-remapped unpacked-crosscrate
104183
184+ # - Debuginfo in `.dwo` files
185+ # - `.o` deleted
186+ # - `.dwo` present
187+ # - `.dwp` never created
105188unpacked-split :
106189 $(RUSTC ) foo.rs -g $(UNSTABLEOPTS ) -C split-debuginfo=unpacked -Zsplit-dwarf-kind=split
190+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
191+ rm $(TMPDIR ) /* .dwo
107192 ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
108- ls $(TMPDIR ) /* .dwo
109- rm -rf $(TMPDIR ) /* .dwp $(TMPDIR ) /* .dwo
193+ rm $(TMPDIR ) /$(call BIN,foo)
110194
195+ # - Debuginfo in `.o` files
196+ # - `.o` present
197+ # - `.dwo` never created
198+ # - `.dwp` never created
111199unpacked-single :
112200 $(RUSTC ) foo.rs -g $(UNSTABLEOPTS ) -C split-debuginfo=unpacked -Zsplit-dwarf-kind=single
201+ ls $(TMPDIR ) /* .o
202+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
203+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
204+ rm $(TMPDIR ) /$(call BIN,foo)
205+
206+ unpacked-lto : packed-lto-split packed-lto-single
207+
208+ # - rmeta file added to rlib, no object files are generated and thus no debuginfo is generated
209+ # - `.o` never created
210+ # - `.dwo` never created
211+ # - `.dwp` never created
212+ unpacked-lto-split :
213+ $(RUSTC ) baz.rs -g $(UNSTABLEOPTS ) -Csplit-debuginfo=unpacked -Zsplit-dwarf-kind=split \
214+ --crate-type=rlib -Clinker-plugin-lto
215+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
216+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
113217 ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
218+ rm $(TMPDIR ) /libbaz.rlib
219+
220+ # - rmeta file added to rlib, no object files are generated and thus no debuginfo is generated
221+ # - `.o` never created
222+ # - `.dwo` never created
223+ # - `.dwp` never created
224+ unpacked-lto-single :
225+ $(RUSTC ) baz.rs -g $(UNSTABLEOPTS ) -Csplit-debuginfo=unpacked -Zsplit-dwarf-kind=single \
226+ --crate-type=rlib -Clinker-plugin-lto
227+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
114228 ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
229+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
230+ rm $(TMPDIR ) /libbaz.rlib
231+
232+ unpacked-remapped : unpacked-remapped-split unpacked-remapped-single
115233
234+ # - Debuginfo in `.dwo` files
235+ # - `.o` and binary refer to remapped `.dwo` paths which do not exist
236+ # - `.o` deleted
237+ # - `.dwo` present
238+ # - `.dwp` never created
116239unpacked-remapped-split :
117240 $(RUSTC ) $(UNSTABLEOPTS ) -C split-debuginfo=unpacked -C debuginfo=2 \
118241 -Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR ) =/a foo.rs -g
119242 objdump -Wi $(TMPDIR ) /foo | grep DW_AT_GNU_dwo_name | (! grep $( TMPDIR) ) || exit 1
243+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
244+ rm $(TMPDIR ) /* .dwo
245+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
246+ rm $(TMPDIR ) /$(call BIN,foo)
120247
248+ # - Debuginfo in `.o` files
249+ # - `.o` and binary refer to remapped `.o` paths which do not exist
250+ # - `.o` present
251+ # - `.dwo` never created
252+ # - `.dwp` never created
121253unpacked-remapped-single :
122254 $(RUSTC ) $(UNSTABLEOPTS ) -C split-debuginfo=unpacked -C debuginfo=2 \
123255 -Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR ) =/a foo.rs -g
124256 objdump -Wi $(TMPDIR ) /foo | grep DW_AT_GNU_dwo_name | (! grep $( TMPDIR) ) || exit 1
257+ ls $(TMPDIR ) /* .o
258+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
259+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
260+ rm $(TMPDIR ) /$(call BIN,foo)
261+
262+ unpacked-crosscrate : packed-crosscrate-split packed-crosscrate-single
263+
264+ # - Debuginfo in `.dwo` files
265+ # - (bar) `.rlib` file created, contains `.dwo`
266+ # - (bar) `.o` deleted
267+ # - (bar) `.dwo` present
268+ # - (bar) `.dwp` never created
269+ # - (main) `.o` deleted
270+ # - (main) `.dwo` present
271+ # - (main) `.dwp` never created
272+ unpacked-crosscrate-split :
273+ $(RUSTC ) --crate-type lib $(UNSTABLEOPTS ) -C split-debuginfo=unpacked \
274+ -Zsplit-dwarf-kind=split -C debuginfo=2 -g bar.rs
275+ ls $(TMPDIR ) /* .rlib
276+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
277+ ls $(TMPDIR ) /* .dwo
278+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
279+ $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib $(UNSTABLEOPTS ) \
280+ -C split-debuginfo=unpacked -Zsplit-dwarf-kind=split -C debuginfo=2 -g main.rs
281+ ls $(TMPDIR ) /* .o && exit 1 || exit 0
282+ rm $(TMPDIR ) /* .dwo
283+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
284+ rm $(TMPDIR ) /$(call BIN,main)
285+
286+ # - Debuginfo in `.o` files
287+ # - (bar) `.rlib` file created, contains `.o`
288+ # - (bar) `.o` present
289+ # - (bar) `.dwo` never created
290+ # - (bar) `.dwp` never created
291+ # - (main) `.o` present
292+ # - (main) `.dwo` never created
293+ # - (main) `.dwp` never created
294+ unpacked-crosscrate-single :
295+ $(RUSTC ) --crate-type lib $(UNSTABLEOPTS ) -C split-debuginfo=unpacked \
296+ -Zsplit-dwarf-kind=single -C debuginfo=2 -g bar.rs
297+ ls $(TMPDIR ) /* .rlib
298+ ls $(TMPDIR ) /* .o
299+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
300+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
301+ $(RUSTC ) --extern bar=$(TMPDIR ) /libbar.rlib $(UNSTABLEOPTS ) \
302+ -C split-debuginfo=unpacked -Zsplit-dwarf-kind=single -C debuginfo=2 -g main.rs
303+ ls $(TMPDIR ) /* .o
304+ ls $(TMPDIR ) /* .dwo && exit 1 || exit 0
305+ ls $(TMPDIR ) /* .dwp && exit 1 || exit 0
306+ rm $(TMPDIR ) /$(call BIN,main)
125307endif
126308endif
0 commit comments