Commit 79fb486017

Andrew Kelley <andrew@ziglang.org>
2020-01-23 23:28:13
link: update to llvm 10 API
1 parent 72589db
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);