Attention is currently required from: Jakub Czapiga, Jan Dabros. Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/56601 )
Change subject: tests: Add lib/cbfs-verification-test test case ......................................................................
Patch Set 2:
(3 comments)
File tests/lib/cbfs-verification-test.c:
https://review.coreboot.org/c/coreboot/+/56601/comment/6d8f81ec_56131ac6 PS2, Line 4: #define __noreturn
This is here to block `__noreturn` effect on `die()` function, which falls `failed()` to signal an e […]
You're only changing the prototype of the function for this compilation unit though, other compilation units (e.g. lib/cbfs.c which I assume is what you actually care about?) will still assume it is noreturn. Having code that assumes a function is noreturn call a function implementation that is not actually noreturn is a very bad thing. I guess since we know fail() doesn't actually return it wouldn't blow up, but still, the more correct solution would be to just mark _fail() (and mock_assert(), I guess) in Cmocka as __attribute__((__noreturn__)). (Maybe you could try upstreaming a change to Cmocka for that? Unfortunately the maintainer didn't seem to be very active last time I reached out to him, but doesn't hurt to try...)
https://review.coreboot.org/c/coreboot/+/56601/comment/436e81fc_f60f3f96 PS2, Line 121: {
`ulzman()` and `ulz4fn()` will be called only for files with compression enabled and when the `cbfs_ […]
Agreed.
https://review.coreboot.org/c/coreboot/+/56601/comment/cd761b98_9a51f76a PS2, Line 167: assert_null(mapping);
The problem with --add-symbol is, we have to know, what address of <functionname> is. To do this, we have to scan all produced object files to find the exact file and address of that symbol.
Well, I mean, the objcopy is already done on each .o file individually anyway. At that point you could iterate through $(1)-mocks, check if each of those names is defined as a symbol (type F) in the input .o with `objdump -t`, and if so use the address and section name parsed out of there to `--add-symbol __real_functionname=section:address,F` an alias during the objcopy. Then I believe the added symbol should keep pointing to the function during linking (because it's relative to that section) and prevent the section from being garbage collected if it is referenced during the final link, even if the function symbol itself has been overridden by another non-weak definition elsewhere.
But okay, I admit that's maybe going a bit far. I just like having cool things...