@@ -416,3 +416,37 @@ int llvm_di_type_get_name(void) {
416416
417417 return 0 ;
418418}
419+
420+ int llvm_add_globaldebuginfo (void ) {
421+ const char * Filename = "debuginfo.c" ;
422+ LLVMModuleRef M = LLVMModuleCreateWithName (Filename );
423+ LLVMDIBuilderRef Builder = LLVMCreateDIBuilder (M );
424+ LLVMMetadataRef File =
425+ LLVMDIBuilderCreateFile (Builder , Filename , strlen (Filename ), "." , 1 );
426+
427+ LLVMMetadataRef GlobalVarValueExpr =
428+ LLVMDIBuilderCreateConstantValueExpression (Builder , 0 );
429+ LLVMMetadataRef Int64Ty =
430+ LLVMDIBuilderCreateBasicType (Builder , "Int64" , 5 , 64 , 0 , LLVMDIFlagZero );
431+ LLVMMetadataRef Int64TypeDef = LLVMDIBuilderCreateTypedef (
432+ Builder , Int64Ty , "int64_t" , 7 , File , 42 , File , 0 );
433+
434+ LLVMMetadataRef GVE = LLVMDIBuilderCreateGlobalVariableExpression (
435+ Builder , File , "global" , 6 , "" , 0 , File , 1 , Int64TypeDef , true,
436+ GlobalVarValueExpr , NULL , 0 );
437+
438+ LLVMTypeRef RecType =
439+ LLVMStructCreateNamed (LLVMGetModuleContext (M ), "struct" );
440+ LLVMValueRef Global = LLVMAddGlobal (M , RecType , "global" );
441+
442+ LLVMGlobalAddDebugInfo (Global , GVE );
443+ size_t numEntries ;
444+ LLVMValueMetadataEntry * ME = LLVMGlobalCopyAllMetadata (Global , & numEntries );
445+ assert (ME != NULL );
446+ assert (numEntries == 1 );
447+
448+ LLVMDisposeDIBuilder (Builder );
449+ LLVMDisposeModule (M );
450+
451+ return 0 ;
452+ }
0 commit comments