@@ -82,6 +82,7 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step {
82
82
83
83
// glibc tests
84
84
elf_step .dependOn (testAsNeeded (b , .{ .target = gnu_target }));
85
+ elf_step .dependOn (testLibraryPathsCompatibility (b , .{ .target = gnu_target , .use_lld = true }));
85
86
// https://github.com/ziglang/zig/issues/17430
86
87
// elf_step.dependOn(testCanonicalPlt(b, .{ .target = gnu_target }));
87
88
elf_step .dependOn (testCommentString (b , .{ .target = gnu_target }));
@@ -309,6 +310,53 @@ fn testAsNeeded(b: *Build, opts: Options) *Step {
309
310
return test_step ;
310
311
}
311
312
313
+ fn testLibraryPathsCompatibility (b : * Build , opts : Options ) * Step {
314
+ const test_step = addTestStep (b , "library-paths-compatibility" , opts );
315
+
316
+ const main_o = addObject (b , opts , .{
317
+ .name = "main" ,
318
+ .c_source_bytes =
319
+ \\#include <stdio.h>
320
+ \\int foo();
321
+ \\int main() {
322
+ \\ printf("%d\n", foo());
323
+ \\ return 0;
324
+ \\}
325
+ \\
326
+ ,
327
+ });
328
+ main_o .linkLibC ();
329
+
330
+ const libfoo = addSharedLibrary (b , opts , .{ .name = "foo" , .soname = .no });
331
+ addCSourceBytes (libfoo , "int foo() { return 42; }" , &.{});
332
+
333
+ {
334
+ const scripts = WriteFile .create (b );
335
+ const path = scripts .addCopyFile (libfoo .getEmittedBin (), "foo/libfoo.so" );
336
+
337
+ const exe = addExecutable (b , opts , .{ .name = "test" });
338
+ exe .addObject (main_o );
339
+
340
+ exe .addLibraryPath (.{ .generated = .{ .file = & scripts .generated_directory , .sub_path = "foo" } });
341
+ exe .addRPath (path .dirname ());
342
+
343
+ exe .linkSystemLibrary2 ("foo" , .{ .needed = false });
344
+ exe .linkLibC ();
345
+
346
+ const run = addRunArtifact (exe );
347
+ run .expectStdOutEqual ("42\n " );
348
+ test_step .dependOn (& run .step );
349
+
350
+ const check = exe .checkObject ();
351
+ check .checkInDynamicSection ();
352
+ check .checkExact ("NEEDED libfoo.so" );
353
+ check .checkNotPresent ("NEEDED foo/libfoo.so" );
354
+ test_step .dependOn (& check .step );
355
+ }
356
+
357
+ return test_step ;
358
+ }
359
+
312
360
fn testCanonicalPlt (b : * Build , opts : Options ) * Step {
313
361
const test_step = addTestStep (b , "canonical-plt" , opts );
314
362
0 commit comments