Skip to content

Linker errors on using C compilers apart from zig cc #10

@Shinyzenith

Description

@Shinyzenith

Hi!
First of all, this is a really cool project and I'd love to contribute!
(Commit hash of ziglibc: d6b6959)
I was wondering if it'd be possible to make ziglibc work in contexts outside of zig such as with clang or any system $CC?

Currently on attempting to link with clang I get the following linker errors:

clang -nostdlib -I ../../inc/libc -I ../../inc/posix/ -I ../../inc/linux/ -L. -static -lstart -lcguana main.c /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `target.Target.Cpu.Feature.feature_set_fns(target.x86.Feature).featureSet': /usr/lib/zig/std/target.zig:774: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/target.zig:778: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `target.Target.Cpu.Feature.Set.empty_workaround': /usr/lib/zig/std/target.zig:698: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.panicExtra__anon_1050': /usr/lib/zig/std/debug.zig:294: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/debug.zig:299: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.resetSegfaultHandler': /usr/lib/zig/std/debug.zig:1888: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `os.linux.tls.initTLS': /usr/lib/zig/std/os/linux/tls.zig:200: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os/linux/tls.zig:201: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os/linux/tls.zig:202: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.attachSegfaultHandler': /usr/lib/zig/std/debug.zig:1869: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.getSelfDebugInfo': /usr/lib/zig/std/debug.zig:107: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:107: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.openSelfDebugInfo': /usr/lib/zig/std/debug.zig:815: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:815: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.DebugInfo.lookupModuleDl': /usr/lib/zig/std/debug.zig:1381: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1381: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1438: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.parseAbbrevTable': /usr/lib/zig/std/dwarf.zig:1015: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1024: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1025: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1025: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:1028: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.scanAllFunctions': /usr/lib/zig/std/dwarf.zig:727: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:735: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:736: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:761: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:784: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:795: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:806: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAlignedUnmanaged(dwarf.Func,null).append': /usr/lib/zig/std/array_list.zig:562: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.parseDie__anon_5615': /usr/lib/zig/std/dwarf.zig:1056: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:1057: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.scanAllCompileUnits': /usr/lib/zig/std/dwarf.zig:868: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:876: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:877: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:902: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAlignedUnmanaged(dwarf.CompileUnit,null).append': /usr/lib/zig/std/array_list.zig:562: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.readElfDebugInfo': /usr/lib/zig/std/debug.zig:911: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/debug.zig:913: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:915: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:916: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:921: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:929: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/debug.zig:955: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `os.dl_iterate_phdr__anon_4931': /usr/lib/zig/std/os.zig:5387: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os.zig:5388: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fs.Dir.openFile': /usr/lib/zig/std/fs.zig:1093: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/fs.zig:1101: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.printLineFromFileAnyOs__anon_5636': /usr/lib/zig/std/debug.zig:1131: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1138: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.printLineInfo__anon_5626': /usr/lib/zig/std/debug.zig:756: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.ModuleDebugInfo__struct_4249.getSymbolAtAddress': /usr/lib/zig/std/debug.zig:1777: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.getSymbolFromDwarf': /usr/lib/zig/std/debug.zig:1803: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1805: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1803: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/debug.zig:1812: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.getLineNumberInfo': /usr/lib/zig/std/dwarf.zig:1090: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1095: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1096: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1096: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1100: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1101: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1103: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1107: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1108: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1113: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:1114: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.getLineNumberInfo': /usr/lib/zig/std/dwarf.zig:1181: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1154: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1157: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1159: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1163: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1165: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:1166: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.DwarfInfo.getLineNumberInfo': /usr/lib/zig/std/dwarf.zig:1219: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1220: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1221: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1224: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1225: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:1229: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:1230: more undefined references to `memcpy' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_5660': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(dwarf.FileEntry,null).append': /usr/lib/zig/std/array_list.zig:168: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(dwarf.FileEntry,null).appendAssumeCapacity': /usr/lib/zig/std/array_list.zig:176: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `dwarf.LineNumberProgram.init': /usr/lib/zig/std/dwarf.zig:438: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:438: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:438: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:438: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/dwarf.zig:438: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/dwarf.zig:438: more undefined references to `memset' follow /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.SymbolInfo.deinit': /usr/lib/zig/std/debug.zig:66: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `Thread.Futex.LinuxImpl.wait': /usr/lib/zig/std/Thread/Futex.zig:246: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.handleSegfaultPosix': /usr/lib/zig/std/debug.zig:1933: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/debug.zig:1940: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fmt.formatInt__anon_6086': /usr/lib/zig/std/fmt.zig:1428: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fmt.formatInt__anon_6198': /usr/lib/zig/std/fmt.zig:1428: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `os.linux.sigaction': /usr/lib/zig/std/os/linux.zig:1149: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os/linux.zig:1150: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os/linux.zig:1157: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.panicExtra__anon_6214': /usr/lib/zig/std/debug.zig:294: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/debug.zig:299: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.allocAdvancedWithRetAddr__anon_6376': /usr/lib/zig/std/mem/Allocator.zig:308: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `os.toPosixPath': /usr/lib/zig/std/os.zig:5494: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/os.zig:5496: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/os.zig:5498: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:5501: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:5501: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fs.file.File.stat': /usr/lib/zig/std/fs/file.zig:344: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(dwarf.AbbrevAttr,null).allocatedSlice': /usr/lib/zig/std/array_list.zig:436: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_6438': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(dwarf.AbbrevTableEntry,null).allocatedSlice': /usr/lib/zig/std/array_list.zig:436: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_6439': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.allocAdvancedWithRetAddr__anon_6468': /usr/lib/zig/std/mem/Allocator.zig:308: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.allocAdvancedWithRetAddr__anon_6481': /usr/lib/zig/std/mem/Allocator.zig:308: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(u8,null).allocatedSlice': /usr/lib/zig/std/array_list.zig:436: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `debug.panicExtra__anon_6644': /usr/lib/zig/std/debug.zig:294: undefined reference to `__zig_probe_stack' /usr/bin/ld: /usr/lib/zig/std/debug.zig:299: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `os.fstat': /usr/lib/zig/std/os.zig:4142: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:4137: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:4137: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:4140: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/os.zig:4141: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `io.reader.Reader(*io.fixed_buffer_stream.FixedBufferStream([]const u8),error{},(function 'read')).readVarInt__anon_7010': /usr/lib/zig/std/io/reader.zig:300: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fmt.formatInt__anon_7060': /usr/lib/zig/std/fmt.zig:1428: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.alignedShrinkWithRetAddr__anon_7071': /usr/lib/zig/std/mem/Allocator.zig:480: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_7077': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `hash.wyhash.WyhashStateless.hash': /usr/lib/zig/std/hash/wyhash.zig:120: undefined reference to `__zig_probe_stack' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.zeroes__anon_7210': /usr/lib/zig/std/mem.zig:274: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `array_list.ArrayListAligned(dwarf.FileEntry,null).allocatedSlice': /usr/lib/zig/std/array_list.zig:436: undefined reference to `memcpy' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7526': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4249,hash_map.AutoContext(usize),80).deinit': /usr/lib/zig/std/hash_map.zig:890: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `hash_map.HashMapUnmanaged(usize,*debug.ModuleDebugInfo__struct_4249,hash_map.AutoContext(usize),80).initMetadatas': /usr/lib/zig/std/hash_map.zig:1444: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7551': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fmt.formatInt__anon_7558': /usr/lib/zig/std/fmt.zig:1428: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `fmt.formatInt__anon_7575': /usr/lib/zig/std/fmt.zig:1428: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7672': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7673': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7674': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_7676': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7687': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7688': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.reallocAdvancedWithRetAddr__anon_7710': /usr/lib/zig/std/mem/Allocator.zig:407: undefined reference to `memset' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:417: undefined reference to `memcpy' /usr/bin/ld: /usr/lib/zig/std/mem/Allocator.zig:419: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_7712': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_7725': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.allocAdvancedWithRetAddr__anon_7754': /usr/lib/zig/std/mem/Allocator.zig:308: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o): in function `mem.Allocator.free__anon_7761': /usr/lib/zig/std/mem/Allocator.zig:494: undefined reference to `memset' /usr/bin/ld: ./libstart.a(/home/aakash/compilers/ziglibc/zig-cache/o/a79729c21a815cb7337aa0e37699b441/libstart.a.o):/usr/lib/zig/std/mem/Allocator.zig:494: more undefined references to `memset' follow /usr/bin/ld: /tmp/main-e17d34.o: in function `main': main.c:(.text+0xe): undefined reference to `printf' clang: error: linker command failed with exit code 1 (use -v to see invocation)

On closer inspection of the linker calls in zig cc I noticed the following:

LLD Link... ld.lld --error-limit=0 -O0 -z stack-size=16777216 --gc-sections --eh-frame-hdr -znow -m elf_x86_64 -static -o a.out -L . -L /usr/local/lib64 -L /usr/local/lib -L /usr/lib/x86_64-linux-gnu -L /lib64 -L /lib -L /usr/lib64 -L /usr/lib -L /lib/x86_64-linux-gnu ./libstart.a ./libcguana.a /home/aakash/.cache/zig/o/4fb5a973d613ccf9f7dc5a047f0f1159/main.o /home/aakash/.cache/zig/o/e4671609f1123341b50f8763536d1e8f/libc.a /home/aakash/.cache/zig/o/b57549dbd24cf4df24f109a7abd88042/libcompiler_rt.a --as-needed

Naturally I assumed the above errors with clang introduced due to not linking with compiler_rt and attempted to compile a simple hello world main.c into main.o and then used a zig compiled libcompiler_rt.o file and it indeed reduced my errors with clang significantly to the following:

clang -nostdlib -I ../../inc/libc -I ../../inc/posix/ -I ../../inc/linux/ -L. -lstart libcguana.a /home/aakash/.cache/zig/o/b57549dbd24cf4df24f109a7abd88042/libcompiler_rt.a main.o -static
/usr/bin/ld: main.o: in function `main':
main.c:(.text+0x13): undefined reference to `puts'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

EDIT:
After some experimentation, linking with libcompiler_rt.a using-fuse-ld=lld/-fuse-ld=mold while using the above command fixes the issues but I'm still intrigued as to why that's the case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions