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

Reply via email to