[Bug 1154025] [NEW] Install PIC version of libbfd.a

Ryo Onodera ryoqun at gmail.com
Tue Mar 12 11:16:33 UTC 2013


Public bug reported:

Like Bug #50512, there should be the PIC version of libbfd.a.

The reason is as follows:

1. As required, we need to link statically to libbfd (see linux-tools:
perf should link statically to libbfd Bug #783660)

2. we need to build libopagent correctly, which uses libbfd with static
link (see oprofile: symbol lookup error: /usr/lib/libopagent.so:
undefined symbol: bfd_init Bug #1148682)

3. But currently, libopagent aren't built correctly causing the symbol
lookup error. That's because OProfile's patches/static-libbfd-
libopagnet-makefile.patch disables static linking to libbfd (possibly,
as a quick work around):

--- a/libopagent/Makefile.am
+++ b/libopagent/Makefile.am
@@ -15,7 +15,7 @@ libopagent_la_CPPFLAGS = -I ${top_srcdir
  -I ${top_srcdir}/libutil \
  @OP_CPPFLAGS@

-libopagent_la_LIBADD = $(BFD_LIBS)
+libopagent_la_LIBADD =

 # Do not increment the major version for this library except to
 # intentionally break backward ABI compatability.  Use the

When I build OProfile with the preceeding work-around patch removed, I
get following error. I want to fix this error.

/bin/bash ../libtool --tag=CC   --mode=link x86_64-linux-gnu-gcc -fPIC
-g -O2 -version-info  1:0:0 -Wl,--version-
script=../libopagent/opagent_symbols.ver   -o libopagent.la -rpath
/usr/lib/oprofile libopagent_la-opagent.lo /usr/lib/libbfd.a -lz
-liberty -ldl  -liberty -lpopt  -ldl -lz

*** Warning: Linking the shared library libopagent.la against the
*** static library /usr/lib/libbfd.a is not portable!
libtool: link: x86_64-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/libopagent_la-opagent.o   /usr/lib/libbfd.a -liberty /usr/lib/x86_64-linux-gnu/libpopt.so -ldl -lz  -O2 -Wl,--version-script=../libopagent/opagent_symbols.ver   -Wl,-soname -Wl,libopagent.so.1 -o .libs/libopagent.so.1.0.0
/usr/bin/ld: /usr/lib/libbfd.a(archures.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libbfd.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [libopagent.la] Error 1

** Affects: binutils (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  Like LP #50512, there should be the PIC version of libbfd.a.
  
  The reason is as follows:
  
  1. As required, we need to link statically to libbfd (see linux-tools:
- perf should link statically to libbfd LP #783660)
+ perf should link statically to libbfd Bugs #783660)
  
  2. we need to build libopagent correctly, which uses libbfd with static
  link (see oprofile: symbol lookup error: /usr/lib/libopagent.so:
  undefined symbol: bfd_init LP #1148682)
  
  3. But currently, libopagent aren't built correctly causing the symbol
  lookup error. That's because OProfile's patches/static-libbfd-
  libopagnet-makefile.patch disables static linking to libbfd (possibly,
  as a quick work around):
  
  --- a/libopagent/Makefile.am
  +++ b/libopagent/Makefile.am
  @@ -15,7 +15,7 @@ libopagent_la_CPPFLAGS = -I ${top_srcdir
-  	-I ${top_srcdir}/libutil \
-  	@OP_CPPFLAGS@
-  
+   -I ${top_srcdir}/libutil \
+   @OP_CPPFLAGS@
+ 
  -libopagent_la_LIBADD = $(BFD_LIBS)
  +libopagent_la_LIBADD =
-  
-  # Do not increment the major version for this library except to
-  # intentionally break backward ABI compatability.  Use the
+ 
+  # Do not increment the major version for this library except to
+  # intentionally break backward ABI compatability.  Use the
  
  When I build OProfile with the preceeding work-around patch removed, I
  get following error. I want to fix this error.
  
  /bin/bash ../libtool --tag=CC   --mode=link x86_64-linux-gnu-gcc -fPIC
  -g -O2 -version-info  1:0:0 -Wl,--version-
  script=../libopagent/opagent_symbols.ver   -o libopagent.la -rpath
  /usr/lib/oprofile libopagent_la-opagent.lo /usr/lib/libbfd.a -lz
  -liberty -ldl  -liberty -lpopt  -ldl -lz
  
  *** Warning: Linking the shared library libopagent.la against the
  *** static library /usr/lib/libbfd.a is not portable!
  libtool: link: x86_64-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/libopagent_la-opagent.o   /usr/lib/libbfd.a -liberty /usr/lib/x86_64-linux-gnu/libpopt.so -ldl -lz  -O2 -Wl,--version-script=../libopagent/opagent_symbols.ver   -Wl,-soname -Wl,libopagent.so.1 -o .libs/libopagent.so.1.0.0
  /usr/bin/ld: /usr/lib/libbfd.a(archures.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
  /usr/lib/libbfd.a: could not read symbols: Bad value
  collect2: error: ld returned 1 exit status
  make: *** [libopagent.la] Error 1

** Description changed:

  Like LP #50512, there should be the PIC version of libbfd.a.
  
  The reason is as follows:
  
  1. As required, we need to link statically to libbfd (see linux-tools:
- perf should link statically to libbfd Bugs #783660)
+ perf should link statically to libbfd Bug #783660)
  
  2. we need to build libopagent correctly, which uses libbfd with static
  link (see oprofile: symbol lookup error: /usr/lib/libopagent.so:
  undefined symbol: bfd_init LP #1148682)
  
  3. But currently, libopagent aren't built correctly causing the symbol
  lookup error. That's because OProfile's patches/static-libbfd-
  libopagnet-makefile.patch disables static linking to libbfd (possibly,
  as a quick work around):
  
  --- a/libopagent/Makefile.am
  +++ b/libopagent/Makefile.am
  @@ -15,7 +15,7 @@ libopagent_la_CPPFLAGS = -I ${top_srcdir
    -I ${top_srcdir}/libutil \
    @OP_CPPFLAGS@
  
  -libopagent_la_LIBADD = $(BFD_LIBS)
  +libopagent_la_LIBADD =
  
   # Do not increment the major version for this library except to
   # intentionally break backward ABI compatability.  Use the
  
  When I build OProfile with the preceeding work-around patch removed, I
  get following error. I want to fix this error.
  
  /bin/bash ../libtool --tag=CC   --mode=link x86_64-linux-gnu-gcc -fPIC
  -g -O2 -version-info  1:0:0 -Wl,--version-
  script=../libopagent/opagent_symbols.ver   -o libopagent.la -rpath
  /usr/lib/oprofile libopagent_la-opagent.lo /usr/lib/libbfd.a -lz
  -liberty -ldl  -liberty -lpopt  -ldl -lz
  
  *** Warning: Linking the shared library libopagent.la against the
  *** static library /usr/lib/libbfd.a is not portable!
  libtool: link: x86_64-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/libopagent_la-opagent.o   /usr/lib/libbfd.a -liberty /usr/lib/x86_64-linux-gnu/libpopt.so -ldl -lz  -O2 -Wl,--version-script=../libopagent/opagent_symbols.ver   -Wl,-soname -Wl,libopagent.so.1 -o .libs/libopagent.so.1.0.0
  /usr/bin/ld: /usr/lib/libbfd.a(archures.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
  /usr/lib/libbfd.a: could not read symbols: Bad value
  collect2: error: ld returned 1 exit status
  make: *** [libopagent.la] Error 1

** Description changed:

- Like LP #50512, there should be the PIC version of libbfd.a.
+ Like Bug #50512, there should be the PIC version of libbfd.a.
  
  The reason is as follows:
  
  1. As required, we need to link statically to libbfd (see linux-tools:
  perf should link statically to libbfd Bug #783660)
  
  2. we need to build libopagent correctly, which uses libbfd with static
  link (see oprofile: symbol lookup error: /usr/lib/libopagent.so:
- undefined symbol: bfd_init LP #1148682)
+ undefined symbol: bfd_init Bug #1148682)
  
  3. But currently, libopagent aren't built correctly causing the symbol
  lookup error. That's because OProfile's patches/static-libbfd-
  libopagnet-makefile.patch disables static linking to libbfd (possibly,
  as a quick work around):
  
  --- a/libopagent/Makefile.am
  +++ b/libopagent/Makefile.am
  @@ -15,7 +15,7 @@ libopagent_la_CPPFLAGS = -I ${top_srcdir
    -I ${top_srcdir}/libutil \
    @OP_CPPFLAGS@
  
  -libopagent_la_LIBADD = $(BFD_LIBS)
  +libopagent_la_LIBADD =
  
   # Do not increment the major version for this library except to
   # intentionally break backward ABI compatability.  Use the
  
  When I build OProfile with the preceeding work-around patch removed, I
  get following error. I want to fix this error.
  
  /bin/bash ../libtool --tag=CC   --mode=link x86_64-linux-gnu-gcc -fPIC
  -g -O2 -version-info  1:0:0 -Wl,--version-
  script=../libopagent/opagent_symbols.ver   -o libopagent.la -rpath
  /usr/lib/oprofile libopagent_la-opagent.lo /usr/lib/libbfd.a -lz
  -liberty -ldl  -liberty -lpopt  -ldl -lz
  
  *** Warning: Linking the shared library libopagent.la against the
  *** static library /usr/lib/libbfd.a is not portable!
  libtool: link: x86_64-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/libopagent_la-opagent.o   /usr/lib/libbfd.a -liberty /usr/lib/x86_64-linux-gnu/libpopt.so -ldl -lz  -O2 -Wl,--version-script=../libopagent/opagent_symbols.ver   -Wl,-soname -Wl,libopagent.so.1 -o .libs/libopagent.so.1.0.0
  /usr/bin/ld: /usr/lib/libbfd.a(archures.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
  /usr/lib/libbfd.a: could not read symbols: Bad value
  collect2: error: ld returned 1 exit status
  make: *** [libopagent.la] Error 1

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to binutils in Ubuntu.
https://bugs.launchpad.net/bugs/1154025

Title:
  Install PIC version of libbfd.a

Status in “binutils” package in Ubuntu:
  New

Bug description:
  Like Bug #50512, there should be the PIC version of libbfd.a.

  The reason is as follows:

  1. As required, we need to link statically to libbfd (see linux-tools:
  perf should link statically to libbfd Bug #783660)

  2. we need to build libopagent correctly, which uses libbfd with
  static link (see oprofile: symbol lookup error:
  /usr/lib/libopagent.so: undefined symbol: bfd_init Bug #1148682)

  3. But currently, libopagent aren't built correctly causing the symbol
  lookup error. That's because OProfile's patches/static-libbfd-
  libopagnet-makefile.patch disables static linking to libbfd (possibly,
  as a quick work around):

  --- a/libopagent/Makefile.am
  +++ b/libopagent/Makefile.am
  @@ -15,7 +15,7 @@ libopagent_la_CPPFLAGS = -I ${top_srcdir
    -I ${top_srcdir}/libutil \
    @OP_CPPFLAGS@

  -libopagent_la_LIBADD = $(BFD_LIBS)
  +libopagent_la_LIBADD =

   # Do not increment the major version for this library except to
   # intentionally break backward ABI compatability.  Use the

  When I build OProfile with the preceeding work-around patch removed, I
  get following error. I want to fix this error.

  /bin/bash ../libtool --tag=CC   --mode=link x86_64-linux-gnu-gcc -fPIC
  -g -O2 -version-info  1:0:0 -Wl,--version-
  script=../libopagent/opagent_symbols.ver   -o libopagent.la -rpath
  /usr/lib/oprofile libopagent_la-opagent.lo /usr/lib/libbfd.a -lz
  -liberty -ldl  -liberty -lpopt  -ldl -lz

  *** Warning: Linking the shared library libopagent.la against the
  *** static library /usr/lib/libbfd.a is not portable!
  libtool: link: x86_64-linux-gnu-gcc -shared  -fPIC -DPIC  .libs/libopagent_la-opagent.o   /usr/lib/libbfd.a -liberty /usr/lib/x86_64-linux-gnu/libpopt.so -ldl -lz  -O2 -Wl,--version-script=../libopagent/opagent_symbols.ver   -Wl,-soname -Wl,libopagent.so.1 -o .libs/libopagent.so.1.0.0
  /usr/bin/ld: /usr/lib/libbfd.a(archures.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
  /usr/lib/libbfd.a: could not read symbols: Bad value
  collect2: error: ld returned 1 exit status
  make: *** [libopagent.la] Error 1

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1154025/+subscriptions




More information about the foundations-bugs mailing list