Bug#787853: lintian: Do not complain about lack of LFS from local implementations
Package: lintian
Version: 2.5.31
Severity: wishlist
Tags: lfs
Hi!
I was checking the tags for inetutils when I noticed that inetutils-ftpd
is marked as binary-file-built-without-LFS-support, but only that binary
out of all binaries. The build system enables LFS, and the relevant files
include <config.h> before anything else.
So after that, my suspicion was that lintian might be detecting a tainted
symbol. And I remembered that gnulib provides its local implementation of
FTS, one that is compatible with LFS. objdump confirms that the local
symbols are visible, so it seems to me lintian is tripping on those.
Here's a small test case:
,---
#include <stddef.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>
#ifdef LOCAL_FTS
extern FTS *fts_open(char * const *paths, int flags,
int (*compar)(const FTSENT **, const FTSENT **)) { return NULL; }
extern int fts_close(FTS *fts) { return 0; }
#endif
int main() {
char *paths[] = { NULL };
FTS *fts = fts_open(paths, 0, NULL);
return fts_close(fts);
}
`---
By default (after stripping) it produces this «objdump -T» output:
,---
fts: file format elf32-i386
DYNAMIC SYMBOL TABLE:
00000000 DF *UND* 00000000 GLIBC_2.0 fts_open
00000000 DF *UND* 00000000 GLIBC_2.0 fts_close
00000000 w D *UND* 00000000 __gmon_start__
00000000 DF *UND* 00000000 GLIBC_2.0 __libc_start_main
0804850c g DO .rodata 00000004 Base _IO_stdin_used
`---
which should trigger the lintian tag. But when defining LOCAL_FTS:
,---
fts: file format elf32-i386
DYNAMIC SYMBOL TABLE:
00000000 w D *UND* 00000000 __gmon_start__
00000000 DF *UND* 00000000 GLIBC_2.0 __libc_start_main
0804840b g DF .text 0000000a Base fts_open
080484ec g DO .rodata 00000004 Base _IO_stdin_used
08048415 g DF .text 0000000a Base fts_close
`---
it should not. So I think that, to avoid false-positives, only undefined
symbols should be considered.
Thanks,
Guillem
Reply to: