Skip to contentSkip to conversation

package/openocd: disable on blackfin

PATCH New Samuel Martin 3 participants 3 messages Jan 5, 2015 – Jan 7, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/openocd: disable on blackfin

The "_" symbol prefix added by the blackfin toolchain causes "undefined symbol" failures during the configuration.

Fixes:
http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/

---
 package/openocd/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
package/openocd/Config.in +4 -0
index 7c140c7..9543c03 100644
@@ -1,5 +1,9 @@
 config BR2_PACKAGE_OPENOCD
 	bool "openocd"
+	# disable openocd on blackfin because it triggers "undefined symbol" error
+	# becasue of the "_" prefix:
+	# http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/
+	depends on !BR2_bfin
 	help
 	  OpenOCD - Open On-Chip Debugger
 
Signature · 1 line
2.2.1
#1 lore raw

PATCH 1/1 package/openocd: disable on blackfin

Dear Samuel Martin,

Quoted 16 lines · Samuel Martin

The "_" symbol prefix added by the blackfin toolchain causes "undefined symbol" failures during the configuration.

Fixes:
http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/

---
 package/openocd/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
package/openocd/Config.in +0 -0
index 7c140c7..9543c03 100644

package/openocd/Config.in line 9

Quoted 9 lines
package/openocd/Config.in +4 -0
@@ -1,5 +1,9 @@
 config BR2_PACKAGE_OPENOCD
 	bool "openocd"
+	# disable openocd on blackfin because it triggers "undefined symbol" error
+	# becasue of the "_" prefix:
+	# http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/
+	depends on !BR2_bfin
 	help
 	  OpenOCD - Open On-Chip Debugger
 

This seems weird because the "_" prefix normally only causes issues when linking C code against assembly code. If you're only linking C code against C code, it *should* be fully transparent.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 package/openocd: disable on blackfin

Samuel, Thomas, All,

On 2015-01-06 09:26 +0100, Thomas Petazzoni spake thusly:

Quoted 22 lines · Samuel Martin
Quoted 21 lines

The "_" symbol prefix added by the blackfin toolchain causes "undefined symbol" failures during the configuration.

Fixes:
http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/

---
 package/openocd/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
package/openocd/Config.in +3 -0
index 7c140c7..9543c03 100644
@@ -1,5 +1,9 @@
 config BR2_PACKAGE_OPENOCD
 	bool "openocd"
+	# disable openocd on blackfin because it triggers "undefined symbol" error
+	# becasue of the "_" prefix:
+	# http://autobuild.buildroot.org/results/e90/e90b4d5ad79d99487f21c9d18581e8eba7034501/
Quoted 8 lines

package/openocd/Config.in line 9

Quoted 4 lines
package/openocd/Config.in +1 -0
+	depends on !BR2_bfin
 	help
 	  OpenOCD - Open On-Chip Debugger
 

This seems weird because the "_" prefix normally only causes issues when linking C code against assembly code. If you're only linking C code against C code, it *should* be fully transparent.

The real culprit seems to be libusb-compat. See config.log:

configure:14893: [...]/bfin-uclinux-gcc -o conftest [...] -static [...] -lftdi -lusb /home/ymorin/dev/buildroot/O/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libusb.a(libusb_la-core.o):
In function `_usb_detach_kernel_driver_np':
core.c:(.text+0x96): undefined reference to `_libusb_detach_kernel_driver'

So, it means libusb.a as an undefined reference to _libusb_detach_kernel_driver which is in fact defined in libus-1.0.a.

If I add -lusb-1.0 -pthread to the link command, it all works great! :-)

So, it looks like 'just' a missing dependency in a static case.

So, marking this patch as Rejected in Patchwork: the real fix is to link with the appropriate libraries.

Hint: the .pc files seem to be correct. But line 1060 in configure.ac is where the error originates from. It is the last clause in an AC_RUN_IFELSE block starting on line 1042... And the rest is left as an exercise. ;-)

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'