https://sourceware.org/bugzilla/show_bug.cgi?id=31956
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Sam James from comment #6) > (In reply to Sam James from comment #5) > > Here's a failing runtime test case with the patch. > > tls_crypt_testdriver-buffer.c: > ``` > void buffer_write_file(void) { > __builtin_printf("Called real buffer_write_file :(\n"); > __builtin_abort(); > } > ``` > > tls_crypt_testdriver-crypto.c: > ``` > void buffer_write_file(void); > > void write_pem_key_file(const char *filename, const char *key_name) { > buffer_write_file(); > } > ``` > > tls_crypt_testdriver-test_tls_crypt.c: > ``` > void write_pem_key_file(const char *filename, const char *key_name); > > void __wrap_buffer_write_file(void) { > __builtin_printf("Called wrapped buffer_write_file :)\n"); > } > > void test_tls_crypt_v2_write_server_key_file(void) { > write_pem_key_file("testfilename.key", "OpenVPN tls-crypt-v2 server key"); > } > > int main() { > test_tls_crypt_v2_write_server_key_file(); > } > ``` > > gcc -Og -flto -Wl,--wrap=buffer_write_file -o tls_crypt_testdriver > tls_crypt_testdriver-test_tls_crypt.c tls_crypt_testdriver-buffer.cc > tls_crypt_testdriver-crypto.c > > It passes with lld but fails with mold and bfd. I don't think this testcase is valid. LTO knows nothing about symbol wrap. When LTO sees a buffer_write_file call, it can inline it. To support symbol wrap, the original definition, buffer_write_file, shouldn't be visible to LTO. -- You are receiving this mail because: You are on the CC list for the bug.