| Fix glibc-isms so that oprofile builds with musl. |
| |
| Patch taken from openwrt (https://github.com/openwrt-mirror/openwrt/blob/master/package/devel/oprofile/patches/100-musl.patch) |
| |
| Upstream-Status: Pending |
| Signed-off-by: Ross Burton <ross.burton@intel.com> |
| |
| --- a/pe_profiling/operf.cpp |
| +++ b/pe_profiling/operf.cpp |
| @@ -857,11 +857,14 @@ static int __delete_old_previous_sample_ |
| int tflag __attribute__((unused)), |
| struct FTW *ftwbuf __attribute__((unused))) |
| { |
| + int err; |
| + |
| if (remove(fpath)) { |
| + err = errno; |
| perror("sample data removal error"); |
| - return FTW_STOP; |
| + return err; |
| } else { |
| - return FTW_CONTINUE; |
| + return 0; |
| } |
| } |
| |
| @@ -896,7 +899,7 @@ static void convert_sample_data(void) |
| return; |
| |
| if (!operf_options::append) { |
| - int flags = FTW_DEPTH | FTW_ACTIONRETVAL; |
| + int flags = FTW_DEPTH; |
| errno = 0; |
| if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 && |
| errno != ENOENT) { |
| --- a/libop/op_events.c |
| +++ b/libop/op_events.c |
| @@ -83,7 +83,7 @@ static int parse_hex(char const * str) |
| static u64 parse_long_hex(char const * str) |
| { |
| u64 value; |
| - if (sscanf(str, "%Lx", &value) != 1) |
| + if (sscanf(str, "0x%llx", &value) != 1) |
| parse_error("expected long hexadecimal value"); |
| |
| fflush(stderr); |