Re: Capsicum and weak libc symbols
- In reply to: Konstantin Belousov : "Re: Capsicum and weak libc symbols"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 10 Apr 2025 17:19:58 UTC
Sorry about the late answer. I've tried to get some time off to think about the problem with my head clear. I wanted to propose a process to decide which symbols should deserve/warrant a weak symbol. Turns out I was unable to come up with anything. Oldtime developers from the community should do that. I'm not that old here. So I'll just refactor my project to only support /lib/libc.so.7 and fail when one is trying to build it against /usr/lib/libc.a. Once there's a process to decide which symbols deserve a weak definition on /usr/lib/libc.a, I can revisit my code. Em qua., 26 de fev. de 2025 às 18:17, Konstantin Belousov <kib@freebsd.org> escreveu: > 1. How the situation with getaddrinfo() is different from that one for > opendir()/fdopendir()? I only wanted to override opendir() (ambient authority), not fdopendir(). If you have fdopendir(), you can trivially implement the original opendir(). There's nothing similar in getaddrinfo() where I could get access to the original implementation. In Linux/glibc, I can access the "previous" getaddrinfo (even in builds against /usr/lib/libc.a) through getaddrinfo_a(): static int previous_getaddrinfo( const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res ) { struct gaicb cb; std::memset(&cb, 0, sizeof(struct gaicb)); cb.ar_name = node; cb.ar_service = service; cb.ar_request = hints; cb.ar_result = NULL; struct gaicb* cbs = &cb; auto ret = getaddrinfo_a(GAI_WAIT, &cbs, 1, NULL); *res = cb.ar_result; return ret; }; > 2. Don't we end up with marking all libc symbols as weak if starting > the proposed route? For my own use-cases, I only need to override symbols related to ambient authority. -- Vinícius dos Santos Oliveira