[PATCH 1/2] scripts/recordmcount.pl: support data in text section on powerpc

Steven Rostedt rostedt at goodmis.org
Wed Jan 13 02:42:23 AEDT 2016


On Tue, 12 Jan 2016 23:14:22 +1100
Michael Ellerman <mpe at ellerman.id.au> wrote:

> From: Ulrich Weigand <ulrich.weigand at de.ibm.com>
> 
> If a text section starts out with a data blob before the first
> function start label, disassembly parsing doing in recordmcount.pl
> gets confused on powerpc, leading to creation of corrupted module
> objects.
> 
> This was not a problem so far since the compiler would never create
> such text sections.  However, this has changed with a recent change
> in GCC 6 to support distances of > 2GB between a function and its
> assoicated TOC in the ELFv2 ABI, exposing this problem.
> 
> There is already code in recordmcount.pl to handle such data blobs
> on the sparc64 platform.  This patch uses the same method to handle
> those on powerpc as well.
> 
> Cc: stable at vger.kernel.org
> Signed-off-by: Ulrich Weigand <ulrich.weigand at de.ibm.com>
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> ---
>  scripts/recordmcount.pl | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Steve can we get an ack for this one, to go via powerpc? cheers

Acked-by: Steven Rostedt <rostedt at goodmis.org>

-- Steve

> 
> diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
> index 826470d7f000..96e2486a6fc4 100755
> --- a/scripts/recordmcount.pl
> +++ b/scripts/recordmcount.pl
> @@ -263,7 +263,8 @@ if ($arch eq "x86_64") {
>  
>  } elsif ($arch eq "powerpc") {
>      $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
> -    $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?.*?)>:";
> +    # See comment in the sparc64 section for why we use '\w'.
> +    $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?\\w*?)>:";
>      $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s\\.?_mcount\$";
>  
>      if ($bits == 64) {



More information about the Linuxppc-dev mailing list