[all-commits] [llvm/llvm-project] 5cafc1: [clang][ssaf] Implement Entity Linker CLI and patc...
Aviral Goel via All-commits
all-commits at lists.llvm.org
Mon Mar 9 11:32:44 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 5cafc12f06ea93045aaf4da6850b87323bccb30c
https://github.com/llvm/llvm-project/commit/5cafc12f06ea93045aaf4da6850b87323bccb30c
Author: Aviral Goel <aviralg at users.noreply.github.com>
Date: 2026-03-09 (Mon, 09 Mar 2026)
Changed paths:
M clang/include/clang/Analysis/Scalable/EntityLinker/EntityLinker.h
M clang/include/clang/Analysis/Scalable/EntityLinker/EntitySummaryEncoding.h
M clang/include/clang/Analysis/Scalable/Serialization/JSONFormat.h
M clang/include/clang/Analysis/Scalable/Serialization/SerializationFormat.h
M clang/include/clang/Analysis/Scalable/Support/ErrorBuilder.h
M clang/lib/Analysis/Scalable/CMakeLists.txt
M clang/lib/Analysis/Scalable/EntityLinker/EntityLinker.cpp
A clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONEntitySummaryEncoding.cpp
A clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONEntitySummaryEncoding.h
M clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONFormatImpl.cpp
M clang/lib/Analysis/Scalable/Serialization/JSONFormat/JSONFormatImpl.h
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-1.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-2.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-badext.txt
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-empty.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-multikey.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-ref.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-value.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-malformed.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-missing-fields.json
A clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-noext
A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1+2.json
A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1.json
A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-2.json
A clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-empty.json
A clang/test/Analysis/Scalable/ssaf-linker/cli.test
A clang/test/Analysis/Scalable/ssaf-linker/help.test
A clang/test/Analysis/Scalable/ssaf-linker/io.test
A clang/test/Analysis/Scalable/ssaf-linker/linking-errors.test
A clang/test/Analysis/Scalable/ssaf-linker/linking.test
A clang/test/Analysis/Scalable/ssaf-linker/time.test
A clang/test/Analysis/Scalable/ssaf-linker/validation-errors-permissions.test
A clang/test/Analysis/Scalable/ssaf-linker/validation-errors.test
A clang/test/Analysis/Scalable/ssaf-linker/verbose.test
A clang/test/Analysis/Scalable/ssaf-linker/version.test
M clang/test/CMakeLists.txt
M clang/test/lit.cfg.py
M clang/tools/CMakeLists.txt
A clang/tools/ssaf-linker/CMakeLists.txt
A clang/tools/ssaf-linker/SSAFLinker.cpp
M clang/unittests/Analysis/Scalable/EntityLinkerTest.cpp
M clang/unittests/Analysis/Scalable/Registries/SerializationFormatRegistryTest.cpp
M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/JSONFormatTest.cpp
M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/LUSummaryTest.cpp
M clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest/TUSummaryTest.cpp
Log Message:
-----------
[clang][ssaf] Implement Entity Linker CLI and patching for JSON Format
This PR implements Entity ID patching for the JSON serialization format
and introduces `ssaf-linker`, a command-line tool that drives the
`EntityLinker`.
1. Entity ID references inside summary blobs use the sentinel
representation `{"@": <uint64>}`. Patching walks the JSON value tree
recursively, recognizes sentinels, and rewrites their indices using the
`EntityResolutionTable` provided by the linker.
2. An object with an `@` key but extra keys `(size != 1)`, an `@` value
that is not a valid `uint64`, and an entity ID not present in the
resolution table, lead to patching errors.
3. `JSONFormat::EntityIdConverter` is replaced with two `function_ref`
typedefs to eliminate the wrapper class.
4.`ssaf-linker` is implemented in `clang/tools/ssaf-linker/` and gets
built at `bin/ssaf-linker`.
5. lit tests check CLI, verbose output, timing output, validation
errors, I/O errors, linking errors, and successful linking.
rdar://162570931
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list