Thread (28 messages) 28 messages, 5 authors, 2019-07-31

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help