[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: