Skip to content

Commit 872e10d

Browse files
committed
test(trim-paths): verify root DW_AT_comp_dir didn't get remapped
When `--remap-path-scope=object` is specified, user expect that there is no local path embedded in final executables. Under `object` scope, the current implementation only remap debug symbols if debug info is splitted into its own file. In other words, when `split-debuginfo=packed|unpacked` is set, rustc assumes there is no embedded path in the final executable needing to be remapped. However, this doesn't work on Linux. On Linux, the root `DW_AT_comp_dir` of a compile unit seems to go into the binary binary executables. This commit demonstrates the case, and hope there is a fix soon.
1 parent 92e8999 commit 872e10d

File tree

1 file changed

+47
-19
lines changed

1 file changed

+47
-19
lines changed

tests/run-make/split-debuginfo/Makefile

+47-19
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ unpacked-remapped-scope:
5959
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=unpacked -C debuginfo=2 \
6060
--remap-path-prefix $(TMPDIR)=/a \
6161
--remap-path-prefix $(HERE)=/b \
62-
-Z remap-path-scope=split-debuginfo-path foo.rs -g
62+
-Z remap-path-scope=object foo.rs -g
6363
ls $(TMPDIR)/*.o
6464
[ ! -d $(TMPDIR)/foo.dSYM ]
6565
# As of 2023-12, `OSO` should be the only thing that cannot be trimmed. See rust-lang/rust#116948
@@ -169,8 +169,12 @@ packed-remapped: packed-remapped-split packed-remapped-single packed-remapped-sc
169169
# - `.dwp` present
170170
packed-remapped-split:
171171
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=packed -C debuginfo=2 \
172-
-Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR)=/a foo.rs -g
173-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
172+
-Z split-dwarf-kind=split \
173+
--remap-path-prefix $(TMPDIR)=/a \
174+
--remap-path-prefix $(HERE)=/b \
175+
foo.rs -g
176+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
177+
readelf -wi $(TMPDIR)/foo | (! grep $(HERE)) || exit 1
174178
ls $(TMPDIR)/*.o && exit 1 || exit 0
175179
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
176180
rm $(TMPDIR)/foo.dwp
@@ -183,8 +187,12 @@ packed-remapped-split:
183187
# - `.dwp` present
184188
packed-remapped-single:
185189
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=packed -C debuginfo=2 \
186-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a foo.rs -g
187-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
190+
-Z split-dwarf-kind=single \
191+
--remap-path-prefix $(TMPDIR)=/a \
192+
--remap-path-prefix $(HERE)=/b \
193+
foo.rs -g
194+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
195+
readelf -wi $(TMPDIR)/foo | (! grep $(HERE)) || exit 1
188196
ls $(TMPDIR)/*.o && exit 1 || exit 0
189197
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
190198
rm $(TMPDIR)/foo.dwp
@@ -197,9 +205,12 @@ packed-remapped-single:
197205
# - `.dwp` present
198206
packed-remapped-scope:
199207
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=packed -C debuginfo=2 \
200-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a \
201-
-Z remap-path-scope=split-debuginfo-path foo.rs -g
202-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
208+
-Z split-dwarf-kind=single \
209+
--remap-path-prefix $(TMPDIR)=/a \
210+
--remap-path-prefix $(HERE)=/b \
211+
-Z remap-path-scope=object foo.rs -g
212+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
213+
readelf -wi $(TMPDIR)/foo | grep $(HERE) || exit 1 # expected: `grep $(HERE)` to exit 1
203214
ls $(TMPDIR)/*.o && exit 1 || exit 0
204215
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
205216
rm $(TMPDIR)/foo.dwp
@@ -212,9 +223,12 @@ packed-remapped-scope:
212223
# - `.dwp` present
213224
packed-remapped-wrong-scope:
214225
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=packed -C debuginfo=2 \
215-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a \
226+
-Z split-dwarf-kind=single \
227+
--remap-path-prefix $(TMPDIR)=/a \
228+
--remap-path-prefix $(TMPDIR)=/b \
216229
-Z remap-path-scope=macro foo.rs -g
217-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (grep $(TMPDIR)) || exit 1
230+
readelf -wi $(TMPDIR)/foo | (grep $(TMPDIR)) || exit 1
231+
readelf -wi $(TMPDIR)/foo | grep $(HERE) || exit 1
218232
ls $(TMPDIR)/*.o && exit 1 || exit 0
219233
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
220234
rm $(TMPDIR)/foo.dwp
@@ -325,8 +339,12 @@ unpacked-remapped: unpacked-remapped-split unpacked-remapped-single unpacked-rem
325339
# - `.dwp` never created
326340
unpacked-remapped-split:
327341
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=unpacked -C debuginfo=2 \
328-
-Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR)=/a foo.rs -g
329-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
342+
-Z split-dwarf-kind=split \
343+
--remap-path-prefix $(TMPDIR)=/a \
344+
--remap-path-prefix $(HERE)=/b \
345+
foo.rs -g
346+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
347+
readelf -wi $(TMPDIR)/foo | (! grep $(HERE)) || exit 1
330348
ls $(TMPDIR)/*.o && exit 1 || exit 0
331349
rm $(TMPDIR)/*.dwo
332350
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
@@ -339,8 +357,12 @@ unpacked-remapped-split:
339357
# - `.dwp` never created
340358
unpacked-remapped-single:
341359
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=unpacked -C debuginfo=2 \
342-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a foo.rs -g
343-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
360+
-Z split-dwarf-kind=single \
361+
--remap-path-prefix $(TMPDIR)=/a \
362+
--remap-path-prefix $(HERE)=/b \
363+
foo.rs -g
364+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
365+
readelf -wi $(TMPDIR)/foo | (! grep $(HERE)) || exit 1
344366
rm $(TMPDIR)/*.o
345367
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
346368
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
@@ -353,9 +375,12 @@ unpacked-remapped-single:
353375
# - `.dwp` never created
354376
unpacked-remapped-scope:
355377
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=unpacked -C debuginfo=2 \
356-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a \
357-
-Z remap-path-scope=split-debuginfo-path foo.rs -g
358-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
378+
-Z split-dwarf-kind=single \
379+
--remap-path-prefix $(TMPDIR)=/a \
380+
--remap-path-prefix $(HERE)=/b \
381+
-Z remap-path-scope=object foo.rs -g
382+
readelf -wi $(TMPDIR)/foo | (! grep $(TMPDIR)) || exit 1
383+
readelf -wi $(TMPDIR)/foo | grep $(HERE) || exit 1 # expected: `grep $(HERE)` to exit 1
359384
rm $(TMPDIR)/*.o
360385
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
361386
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
@@ -368,9 +393,12 @@ unpacked-remapped-scope:
368393
# - `.dwp` never created
369394
unpacked-remapped-wrong-scope:
370395
$(RUSTC) $(UNSTABLEOPTS) -C split-debuginfo=unpacked -C debuginfo=2 \
371-
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a \
396+
-Z split-dwarf-kind=single \
397+
--remap-path-prefix $(TMPDIR)=/a \
398+
--remap-path-prefix $(HERE)=/b \
372399
-Z remap-path-scope=macro foo.rs -g
373-
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (grep $(TMPDIR)) || exit 1
400+
readelf -wi $(TMPDIR)/foo | grep $(TMPDIR) || exit 1
401+
readelf -wi $(TMPDIR)/foo | grep $(HERE) || exit 1
374402
rm $(TMPDIR)/*.o
375403
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
376404
ls $(TMPDIR)/*.dwp && exit 1 || exit 0

0 commit comments

Comments
 (0)