Skip to content

zig c++ link error when targetting older glibc #17536

@xxxbxxx

Description

@xxxbxxx

Zig Version

0.12.0-dev.933+b0f031f573

Steps to Reproduce and Observed Behavior

#include <stdlib.h>
int main(int argc, char* argv[]) {
	return strtoul(argv[1], 0, 10);
}
$ zig c++  main.cpp -target x86_64-linux.4.4.0-gnu.2.23
LLD Link... ld.lld: error: undefined symbol: __isoc23_strtoul
>>> referenced by main.cpp:4
>>>               /var/home/xavier/.cache/zig/o/b7dd90f0bc6f5ecf441dda49947e658a/main.o:(main)

also concerns, at least:

error: ld.lld: undefined symbol: __isoc23_strtoll_l
error: ld.lld: undefined symbol: __isoc23_strtoull_l
error: ld.lld: undefined symbol: __isoc23_vsscanf
error: ld.lld: undefined symbol: __isoc23_sscanf
error: ld.lld: undefined symbol: __isoc23_strtol
error: ld.lld: undefined symbol: __isoc23_strtoll
error: ld.lld: undefined symbol: __isoc23_strtoul
error: ld.lld: undefined symbol: __isoc23_strtoull

Expected Behavior

it did work prior to glibc upgrade in zig.

and it still works when targeting native libc (which is 2.38).
$ zig c++ main.cpp

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behavioros-linuxLinuxregressionIt worked in a previous version of Zig, but stopped working.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions