On Fri, Jul 26, 2019 at 5:30 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Fri, Jul 26, 2019 at 02:47:28PM -0700, Andrii Nakryiko wrote: > > On Fri, Jul 26, 2019 at 2:28 PM Stanislav Fomichev <sdf@xxxxxxxxxxx> wrote: > > > > > > On 07/26, Andrii Nakryiko wrote: > > > > 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.