Re: [PATCH bpf-next 4/9] libbpf: add libbpf_swap_print to get previous print func
From: Andrii Nakryiko <hidden>
Date: 2019-07-27 18:49:33
Also in:
bpf
On Fri, Jul 26, 2019 at 5:30 PM Alexei Starovoitov [off-list ref] wrote:
On Fri, Jul 26, 2019 at 02:47:28PM -0700, Andrii Nakryiko wrote:quoted
On Fri, Jul 26, 2019 at 2:28 PM Stanislav Fomichev [off-list ref] wrote:quoted
On 07/26, Andrii Nakryiko wrote:quoted
libbpf_swap_print allows to restore previously set print function. This is useful when running many independent test with one default print function, but overriding log verbosity for particular subset of tests.Can we change the return type of libbpf_set_print instead and return the old function from it? Will it break ABI?Yeah, thought about that, but I wasn't sure about ABI breakage. It seems like it shouldn't, so I'll just change libbpf_set_print signature instead.I think it's ok to change return value of libbpf_set_print() from void to useful pointer.
Some googling gave inconclusive results. StackOverflow answers claim it is compatible ABI change ([0]), but I also found some guidelines for Android that designate any return type change as incompatible ([1]). [2] wasn't very helpful about defining compatibility rules, unfortunately. I'm going with [0], though, and changing return type. [0] https://stackoverflow.com/questions/15626579/c-abi-is-changing-a-void-function-to-return-an-int-a-breaking-change [1] https://source.android.com/devices/architecture/vndk/abi-stability [2] https://www.cs.dartmouth.edu/~sergey/cs258/ABI/UlrichDrepper-How-To-Write-Shared-Libraries.pdf
This function is not marked as __attribute__((__warn_unused_result__)), so there should be no abi issues. Please double check by compiler perf with different gcc-s as Arnaldo's setup does.
Compiled (make -C tools/perf) with GCC 4.8.5, GCC 7, and Clang 8. None of them produced any warning, so I'm going forward with just return type change.