thurstond wrote:

When I reproduced it locally, it failed with:
```
     frame #4: 0x0000555569bc2e5c 
clang`llvm::MD5::update(llvm::ArrayRef<unsigned char>) at MD5.cpp:205:7
     frame #5: 0x000055556b68b2a1 clang`createAndEmbedModuleForDynamicDebugging 
at BackendUtil.cpp:1530:12 [inlined]
     frame #6: 0x000055556b68afbd clang`::emitBackendOutput() at 
BackendUtil.cpp:1654:5
```

clang/lib/CodeGen/BackendUtil.cpp:1530 is `Hash.update(CU->getDirectory());` 
MD5.cpp:205 is `memcpy(&InternalState.buffer[used], Ptr, Size);`; UBSan 
complains that Ptr (i.e., `CU->getDirectory().data()`) should not be null.

The debug info appears to not split the path into file and directory (e.g., 
'!3' and '!7' below):

```
!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
!1 = distinct !DIGlobalVariable(name: "external", scope: !2, file: !7, line: 
24, type: !8, isLocal: false, isDefinition: true)
!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !3, 
producer: "clang version 24.0.0git", isOptimized: false, runtimeVersion: 0, 
emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: 
None)
!3 = !DIFile(filename: 
"/usr/local/google/home/thurston/llvm-projectA/clang/test/DebugInfo/DynamicDebugging/<stdin>",
 directory: "")
!4 = !{!0, !5, !9, !11}
!5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression())
!6 = distinct !DIGlobalVariable(name: "used_by_init", linkageName: 
"_ZL12used_by_init", scope: !2, file: !7, line: 37, type: !8, isLocal: true, 
isDefinition: true)
!7 = !DIFile(filename: 
"/usr/local/google/home/thurston/llvm-projectA/clang/test/DebugInfo/DynamicDebugging/compiler-used.cpp",
 directory: "")
```

https://github.com/llvm/llvm-project/pull/216307
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to