| ... | ... | @@ -50,6 +50,7 @@ pub fn build(b: *Build) void { |
| 50 | 50 | elf_step.dependOn(testDsoPlt(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 51 | 51 | elf_step.dependOn(testDsoUndef(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 52 | 52 | elf_step.dependOn(testExportDynamic(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 53 | elf_step.dependOn(testExportSymbolsFromExe(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 53 | 54 | elf_step.dependOn(testLargeAlignmentDso(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 54 | 55 | elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = glibc_target, .dynamic_linker = dynamic_linker })); |
| 55 | 56 | } |
| ... | ... | @@ -650,6 +651,44 @@ fn testExportDynamic(b: *Build, opts: Options) *Step { |
| 650 | 651 | return test_step; |
| 651 | 652 | } |
| 652 | 653 | |
| 654 | fn testExportSymbolsFromExe(b: *Build, opts: Options) *Step { |
| 655 | const test_step = addTestStep(b, "export-symbols-from-exe", opts); |
| 656 | |
| 657 | const dso = addSharedLibrary(b, "a", opts); |
| 658 | addCSourceBytes(dso, |
| 659 | \\void expfn1(); |
| 660 | \\void expfn2() {} |
| 661 | \\ |
| 662 | \\void foo() { |
| 663 | \\ expfn1(); |
| 664 | \\} |
| 665 | , &.{"-fPIC"}); |
| 666 | |
| 667 | const exe = addExecutable(b, "main", opts); |
| 668 | addCSourceBytes(exe, |
| 669 | \\void expfn1() {} |
| 670 | \\void expfn2() {} |
| 671 | \\void foo(); |
| 672 | \\ |
| 673 | \\int main() { |
| 674 | \\ expfn1(); |
| 675 | \\ expfn2(); |
| 676 | \\ foo(); |
| 677 | \\} |
| 678 | , &.{}); |
| 679 | exe.linkLibrary(dso); |
| 680 | exe.linkLibC(); |
| 681 | |
| 682 | const check = exe.checkObject(); |
| 683 | check.checkInDynamicSymtab(); |
| 684 | check.checkContains("expfn2"); |
| 685 | check.checkInDynamicSymtab(); |
| 686 | check.checkContains("expfn1"); |
| 687 | test_step.dependOn(&check.step); |
| 688 | |
| 689 | return test_step; |
| 690 | } |
| 691 | |
| 653 | 692 | fn testGcSections(b: *Build, opts: Options) *Step { |
| 654 | 693 | const test_step = addTestStep(b, "gc-sections", opts); |
| 655 | 694 | |