Commit 79fb486017
Changed files (3)
src/link.cpp
@@ -1894,9 +1894,14 @@ static void link_diag_callback(void *context, const char *ptr, size_t len) {
buf_append_mem(diag, ptr, len);
}
-static bool zig_lld_link(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, Buf *diag) {
+static bool zig_lld_link(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count,
+ Buf *diag)
+{
+ Buf *stdout_diag = buf_alloc();
buf_resize(diag, 0);
- return ZigLLDLink(oformat, args, arg_count, link_diag_callback, diag);
+ bool result = ZigLLDLink(oformat, args, arg_count, link_diag_callback, stdout_diag, diag);
+ buf_destroy(stdout_diag);
+ return result;
}
static void add_uefi_link_args(LinkJob *lj) {
src/zig_llvm.cpp
@@ -1077,14 +1077,13 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count,
- void (*append_diagnostic_stdout)(void *, const char *, size_t),
- void (*append_diagnostic_stderr)(void *, const char *, size_t),
- void *context)
+ void (*append_diagnostic)(void *, const char *, size_t),
+ void *context_stdout, void *context_stderr)
{
ArrayRef<const char *> array_ref_args(args, arg_count);
- MyOStream diag_stdout(append_diagnostic_stdout, context);
- MyOStream diag_stderr(append_diagnostic_stderr, context);
+ MyOStream diag_stdout(append_diagnostic, context_stdout);
+ MyOStream diag_stderr(append_diagnostic, context_stderr);
switch (oformat) {
case ZigLLVM_UnknownObjectFormat:
src/zig_llvm.h
@@ -532,9 +532,8 @@ ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os);
ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi);
ZIG_EXTERN_C bool ZigLLDLink(enum ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count,
- void (*append_diagnostic_stdout)(void *, const char *, size_t),
- void (*append_diagnostic_stderr)(void *, const char *, size_t),
- void *context);
+ void (*append_diagnostic)(void *, const char *, size_t),
+ void *context_stdout, void *context_stderr);
ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size_t file_name_count,
enum ZigLLVM_OSType os_type);