41 lines
1.6 KiB
Diff
41 lines
1.6 KiB
Diff
From: Kurt Roeckx <kurt@roeckx.be>
|
|
Subject: Use %m[ instead of %a[ in scanf()
|
|
|
|
%a was a gnu extention, but C99 made this a float. So it got
|
|
changed to %m (supported by glibc 2.7), but %a[ and %as are
|
|
still supported by glibc. The portability branch changed this
|
|
from %m to %a again since that's supported by more versions of
|
|
glibc. However gcc gives a warning about this using -Wformat
|
|
and we have a new enough libc to use %m.
|
|
|
|
Index: elfutils-0.153/src/addr2line.c
|
|
===================================================================
|
|
--- elfutils-0.153.orig/src/addr2line.c 2012-02-24 22:29:50.000000000 +0000
|
|
+++ elfutils-0.153/src/addr2line.c 2012-02-24 22:29:52.000000000 +0000
|
|
@@ -455,10 +455,10 @@
|
|
bool parsed = false;
|
|
int i, j;
|
|
char *name = NULL;
|
|
- if (sscanf (string, "(%a[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
|
|
+ if (sscanf (string, "(%m[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
|
|
&& string[i] == '\0')
|
|
parsed = adjust_to_section (name, &addr, dwfl);
|
|
- switch (sscanf (string, "%a[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
|
|
+ switch (sscanf (string, "%m[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
|
|
{
|
|
default:
|
|
break;
|
|
Index: elfutils-0.153/tests/line2addr.c
|
|
===================================================================
|
|
--- elfutils-0.153.orig/tests/line2addr.c 2012-02-24 22:29:50.000000000 +0000
|
|
+++ elfutils-0.153/tests/line2addr.c 2012-02-24 22:29:52.000000000 +0000
|
|
@@ -132,7 +132,7 @@
|
|
{
|
|
struct args a = { .arg = argv[cnt] };
|
|
|
|
- switch (sscanf (a.arg, "%a[^:]:%d", &a.file, &a.line))
|
|
+ switch (sscanf (a.arg, "%m[^:]:%d", &a.file, &a.line))
|
|
{
|
|
default:
|
|
case 0:
|