glibc: pass -D__GLIBC_MINOR__=XX

instead of hard-coding it. This means that C code has accurate glibc
version information in the preprocessor.
This commit is contained in:
Andrew Kelley 2021-12-15 17:52:27 -07:00
parent 694f424fc7
commit 4d48948b52
3 changed files with 11 additions and 3 deletions

View File

@ -477,7 +477,7 @@
/* Major and minor version number of the GNU C library package. Use
these macros to test for features in specific releases. */
#define __GLIBC__ 2
#define __GLIBC_MINOR__ 34
/* Zig patch: we pass `-D__GLIBC_MINOR__=XX` depending on the target. */
#define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))

View File

@ -477,7 +477,7 @@
/* Major and minor version number of the GNU C library package. Use
these macros to test for features in specific releases. */
#define __GLIBC__ 2
#define __GLIBC_MINOR__ 34
/* Zig patch: we pass `-D__GLIBC_MINOR__=XX` depending on the target. */
#define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))

View File

@ -3397,6 +3397,14 @@ pub fn addCCArgs(
try argv.append(libunwind_include_path);
}
if (comp.bin_file.options.link_libc and target.isGnuLibC()) {
const target_version = target.os.version_range.linux.glibc;
const glibc_minor_define = try std.fmt.allocPrint(arena, "-D__GLIBC_MINOR__={d}", .{
target_version.minor,
});
try argv.append(glibc_minor_define);
}
const llvm_triple = try @import("codegen/llvm.zig").targetTriple(arena, target);
try argv.appendSlice(&[_][]const u8{ "-target", llvm_triple });