[Bug 1887397] [NEW] perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1
Andrea Righi
1887397 at bugs.launchpad.net
Mon Jul 13 14:44:01 UTC 2020
Public bug reported:
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.
** Affects: binutils (Ubuntu)
Importance: Undecided
Status: New
** Affects: binutils (Ubuntu Groovy)
Importance: Undecided
Status: New
** Also affects: binutils (Ubuntu Groovy)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to binutils in Ubuntu.
https://bugs.launchpad.net/bugs/1887397
Title:
perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1
Status in binutils package in Ubuntu:
New
Status in binutils 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/binutils/+bug/1887397/+subscriptions
More information about the foundations-bugs
mailing list