see https://sourceware.org/bugzilla/show_bug.cgi?id=25708 this seems to be an intended change.
** Bug watch added: Sourceware.org Bugzilla #25708 https://sourceware.org/bugzilla/show_bug.cgi?id=25708 ** Package changed: binutils (Ubuntu Groovy) => linux (Ubuntu Groovy) -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1887397 Title: perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1 Status in linux package in Ubuntu: New Status in linux source package in Groovy: New Bug description: After updating to binutils 2.34.90.20200706-1ubuntu1 Linux' perf build is failing with the following error: /usr/bin/ld:/tmp/autopkgtest.440kEd/build.N7g/src/debian/build/tools-perarch/tools/lib/traceevent/plugins/libtraceevent-dynamic-list:2: ignoring invalid character `@' in script /usr/bin/ld:/tmp/autopkgtest.440kEd/build.N7g/src/debian/build/tools-perarch/tools/lib/traceevent/plugins/libtraceevent-dynamic-list:2: ignoring invalid character `@' in script /usr/bin/ld:/tmp/autopkgtest.440kEd/build.N7g/src/debian/build/tools-perarch/tools/lib/traceevent/plugins/libtraceevent-dynamic-list:2: syntax error in dynamic list collect2: error: ld returned 1 exit status The file mentioned in the error (libtraceevent-dynamic-list) contains some '@' that ld doesn't seem to like: $ cat lib/traceevent/plugins/libtraceevent-dynamic-list { __stack_chk_fail@@GLIBC_2.4; free@@GLIBC_2.2.5; memset@@GLIBC_2.2.5; realloc@@GLIBC_2.2.5; sprintf@@GLIBC_2.2.5; strcmp@@GLIBC_2.2.5; strdup@@GLIBC_2.2.5; strncmp@@GLIBC_2.2.5; tep_find_any_field; tep_find_field; tep_find_function; tep_find_function_address; tep_get_field_raw; tep_get_field_val; tep_is_file_bigendian; tep_is_local_bigendian; tep_plugin_add_options; tep_plugin_remove_options; tep_print_func_field; tep_print_num_field; tep_read_number_field; tep_register_comm; tep_register_event_handler; tep_register_print_function; tep_unregister_event_handler; tep_unregister_print_function; trace_seq_printf; trace_seq_putc; trace_seq_puts; trace_seq_terminate; warning; }; The same file generated in a Focal environment (w/ binutils 2.34-6ubuntu1) looks as following: $ cat lib/traceevent/plugins/libtraceevent-dynamic-list { __stack_chk_fail; free; memset; realloc; sprintf; strcmp; strdup; strncmp; tep_find_any_field; tep_find_field; tep_find_function; tep_find_function_address; tep_get_field_raw; tep_get_field_val; tep_is_file_bigendian; tep_is_local_bigendian; tep_plugin_add_options; tep_plugin_remove_options; tep_print_func_field; tep_print_num_field; tep_read_number_field; tep_register_comm; tep_register_event_handler; tep_register_print_function; tep_unregister_event_handler; tep_unregister_print_function; trace_seq_printf; trace_seq_putc; trace_seq_puts; trace_seq_terminate; warning; }; And here is the chunk of Makefile that is generating this file: define do_generate_dynamic_list_file symbol_type=`$(NM) -u -D $1 | awk 'NF>1 {print $$1}' | \ xargs echo "U w W" | tr 'w ' 'W\n' | sort -u | xargs echo`;\ if [ "$$symbol_type" = "U W" ];then \ (echo '{'; \ $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\ echo '};'; \ ) > $2; \ else \ (echo Either missing one of [$1] or bad version of $(NM)) 1>&2;\ fi My guess is that something changed in the output of `nm` to show the @ charaters that ld does not like. This problem is currently breaking all kernel builds in Groovy. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1887397/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp