Thread (6 messages) 6 messages, 2 authors, 2016-11-24

Re: btrfs-progs-4.8.3 libbtrfs missing symbols?

From: Mike Gilbert <hidden>
Date: 2016-11-23 18:50:14

On Wed, Nov 23, 2016 at 1:43 PM, Mike Gilbert [off-list ref] wrote:
On Wed, Nov 23, 2016 at 4:45 AM, David Sterba [off-list ref] wrote:
quoted
On Tue, Nov 22, 2016 at 01:49:15PM -0500, Mike Gilbert wrote:
quoted
Hi,

I received a bug report about a build failure in a package (snapper)
that utilizes libbtrfs.

https://bugs.gentoo.org/show_bug.cgi?id=600078

To summarize the issue, the package has a configure test that executes
the following:

configure:16618: x86_64-pc-linux-gnu-gcc -o conftest -O2 -pipe
-march=amdfam10 -frecord-gcc-switches -std=c99 -Wall -Wextra
-Wformat=2 -Wmissing-prototypes -Wno-unused-parameter
-DCONFDIR='"/etc/conf.d"' -Wl,-O1 -Wl,--as-needed conftest.c -lbtrfs
quoted
&5
/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/../../../../lib64/libbtrfs.so:
undefined reference to `lookup_path_rootid'
collect2: error: ld returned 1 exit status
configure:16618: $? = 1

It seems that the "lookup_path_rootid" symbol is not included in the library.

Could someone look into this?
Thanks for the report, bug reproduced here. My referential snapper build
does not fail so I did not know about that. I've now extended the
library test to cover the missing symbol. As the build does not fail
it's needed to actually run the built binary.
That's very strange; I definitely get a build-time failure here. Maybe
there's some difference in your toolchain.

On current master:

floppym@naomi btrfs-progs % make V=1 library-test
    [LD]     library-test
gcc -g -O1 -Wall -D_FORTIFY_SOURCE=2 -include config.h
-DBTRFS_FLAT_INCLUDES -D_XOPEN_SOURCE=700 -fno-strict-aliasing -fPIC
-I/home/floppym/src/btrfs-progs
-I/home/floppym/src/btrfs-progs/kernel-lib    -o library-test
library-test.o -rdynamic  -lbtrfs
/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/../../../../lib64/libbtrfs.so:
undefined reference to `lookup_path_rootid'
collect2: error: ld returned 1 exit status
make: *** [Makefile:433: library-test] Error 1
Oh! Based on that command line, library-test is getting linked against
/usr/lib64/libbtrfs.so instead of the freshly built copy in $PWD.

You probably need to add -L. or -L$(TOPDIR) to that command in the Makefile.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help