seemoo-lab / nexmon

The C-based Firmware Patching Framework for Broadcom/Cypress WiFi Chips that enables Monitor Mode, Frame Injection and much more
GNU General Public License v3.0
2.39k stars 449 forks source link

4.14 - Rpi 3B+ Compilation - Linker Errors #206

Open mlinton opened 6 years ago

mlinton commented 6 years ago

Trying to build the patch for the 3B+ on a 3B+ using raspbian

Uname -anr:

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux

Error: Attempting to Make from the ./nexmon/patches/bcm43455c0/7_45_154/nexmon:

COLLECTING STATISTICS read /opt/nexmon/STATISTICS.md for more information COMPILING src/injection.c => obj/injection.o (details: log/compiler.log) COMPILING src/patch.c => obj/patch.o (details: log/compiler.log) COMPILING src/version.c => obj/version.o (details: log/compiler.log) COMPILING src/sendframe.c => obj/sendframe.o (details: log/compiler.log) COMPILING src/monitormode.c => obj/monitormode.o (details: log/compiler.log) COPYING UCODE /opt/nexmon/firmwares/bcm43455c0/7_45_154/ucode.bin => gen/ucode.bin COMPRESSING UCODE gen/ucode.bin => gen/ucode_compressed.bin GENERATING C FILE gen/ucode_compressed.bin => src/ucode_compressed.c COMPILING src/ucode_compressed.c => obj/ucode_compressed.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/wrapper.c => obj/wrapper.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/argprintf.c => obj/argprintf.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/helper.c => obj/helper.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/udptunnel.c => obj/udptunnel.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/ucode_compression_code.c => obj/ucode_compression_code.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/objmem.c => obj/objmem.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/securitycookie.c => obj/securitycookie.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/radiotap.c => obj/radiotap.o (details: log/compiler.log) COMPILING /opt/nexmon/firmwares/bcm43455c0/7_45_154/flashpatches.c => obj/flashpatches.o (details: log/compiler.log) GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld GENERATING LINKER FILE gen/memory.ld LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err) Makefile:112: recipe for target 'gen/patch.elf' failed make: *** [gen/patch.elf] Error 1

matthiasseemoo commented 6 years ago

Take a look into log/linker.err and show me your last lines. I might have forgotten to add commit something.

mlinton notifications@github.com schrieb am Mo., 9. Apr. 2018, 01:24:

Trying to build the patch for the 3B+ on a 3B+ using raspbian

Uname -anr:

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux

Error: Attempting to Make from the ./nexmon/patches/bcm43455c0/7_45_154/nexmon:

COLLECTING STATISTICS read /opt/nexmon/STATISTICS.md for more information COMPILING src/injection.c => obj/injection.o (details: log/compiler.log) COMPILING src/patch.c => obj/patch.o (details: log/compiler.log) COMPILING src/version.c => obj/version.o (details: log/compiler.log) COMPILING src/sendframe.c => obj/sendframe.o (details: log/compiler.log) COMPILING src/monitormode.c => obj/monitormode.o (details: log/compiler.log) COPYING UCODE /opt/nexmon/firmwares/bcm43455c0/7_45_154/ucode.bin => gen/ucode.bin COMPRESSING UCODE gen/ucode.bin => gen/ucode_compressed.bin GENERATING C FILE gen/ucode_compressed.bin => src/ucode_compressed.c COMPILING src/ucode_compressed.c => obj/ucode_compressed.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/wrapper.c => obj/wrapper.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/argprintf.c => obj/argprintf.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/helper.c => obj/helper.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/udptunnel.c => obj/udptunnel.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/ucode_compression_code.c => obj/ucode_compression_code.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/objmem.c => obj/objmem.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/securitycookie.c => obj/securitycookie.o (details: log/compiler.log) COMPILING /opt/nexmon/patches/common/radiotap.c => obj/radiotap.o (details: log/compiler.log) COMPILING /opt/nexmon/firmwares/bcm43455c0/7_45_154/flashpatches.c => obj/flashpatches.o (details: log/compiler.log) GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld GENERATING LINKER FILE gen/memory.ld LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err) Makefile:112: recipe for target 'gen/patch.elf' failed make: *** [gen/patch.elf] Error 1

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/seemoo-lab/nexmon/issues/206, or mute the thread https://github.com/notifications/unsubscribe-auth/ALP_7iDtDjutsXFNbJVZjYlGiOooN1jpks5tmpwQgaJpZM4TLwdP .

kwpi commented 6 years ago

same problem here..

last 10 lines on linker.err

/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.bss.securitycookie' in file 'obj/securitycookie.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.comment' in file 'obj/securitycookie.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.ARM.attributes' in file 'obj/securitycookie.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.prepend_ethernet_ipv4_udp_header' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.udpnprintf' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.udpprintf' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.data.ethernet_ipv4_udp_header' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.comment' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.ARM.attributes' in file 'obj/udptunnel.o' /home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: error: no memory region specified for loadable section `.text.wlc_sendctl'

TheCoder3156 commented 6 years ago

The RPi 3B+ has a different WiFi chip. That may be the problem.

zjmulder commented 6 years ago

I'm also having this problem with the same specs and error file output. Seems like the 3B+ uses 43455, so OP is in the correct place?

The chip, that takes up most of the space underneath that metal shielding, is the Cypress CYW43455, with faster 802.11ac dual-band (2.4 and 5GHz) wireless LAN and Bluetooth 4.2. The Pi 3 used the Cypress CYW43438 chip, and 802.11n 2.4GHz wireless chip, as does the Pi Zero W.

Taken from: This blog

matthiasseemoo commented 6 years ago

`.text.wlc_sendctl' is already available in the wrapper.c file. So it should have worked for you. Btw. I also updated the driver version for the Rpi3 and 0W to version 4.14.

arashebadi commented 6 years ago

I tested the new version, but I get the following errors:

COLLECTING STATISTICS read /home/pi/nexmon/STATISTICS.md for more information COMPILING src/version.c => obj/version.o (details: log/compiler.log) GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err) GENERATING MAKE FILE gen/nexmon.pre => gen/nexmon.mk GENERATING MAKE FILE gen/nexmon.pre => gen/flashpatches.mk APPLYING FLASHPATCHES gen/flashpatches.mk => brcmfmac43455-sdio.bin (details: log/flashpatches.log) APPLYING PATCHES gen/nexmon.mk => brcmfmac43455-sdio.bin (details: log/patches.log) BUILDING DRIVER for kernel 4.9 brcmfmac_4.9.y-nexmon/brcmfmac.ko (details: log/driver.log) make[1]: /lib/modules/4.9.80-v7+/build: No such file or directory. Stop. Makefile:45: recipe for target 'brcmfmac.ko' failed make: [brcmfmac.ko] Error 2

When I am checking my Raspberrypi (3B+), I have

pi@raspberrypi:/lib/modules $ uname -r 4.9.80-v7+ pi@raspberrypi:/lib/modules $ ls 4.14.30+ 4.14.30-v7+ pi@raspberrypi:/lib/modules $

Do you have any suggestion how to fix these errors?

matthiasseemoo commented 6 years ago

did you reboot after installing the new kernel?

On Tue, Apr 10, 2018 at 12:31 AM, arashebadi notifications@github.com wrote:

I tested the new version, but I get the following errors:

COLLECTING STATISTICS read /home/pi/nexmon/STATISTICS.md for more information COMPILING src/version.c => obj/version.o (details: log/compiler.log) GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err) GENERATING MAKE FILE gen/nexmon.pre => gen/nexmon.mk GENERATING MAKE FILE gen/nexmon.pre => gen/flashpatches.mk APPLYING FLASHPATCHES gen/flashpatches.mk => brcmfmac43455-sdio.bin (details: log/flashpatches.log) APPLYING PATCHES gen/nexmon.mk => brcmfmac43455-sdio.bin (details: log/patches.log) BUILDING DRIVER for kernel 4.9 brcmfmac_4.9.y-nexmon/brcmfmac.ko (details: log/driver.log) make[1]: /lib/modules/4.9.80-v7+/build: No such file or directory. Stop. Makefile:45: recipe for target 'brcmfmac.ko' failed make: [brcmfmac.ko] Error 2

When I am checking my Raspberrypi (3B+), I have

pi@raspberrypi:/lib/modules $ uname -r 4.9.80-v7+ pi@raspberrypi:/lib/modules $ ls 4.14.30+ 4.14.30-v7+ pi@raspberrypi:/lib/modules $

Do you have any suggestion how to fix these errors?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/seemoo-lab/nexmon/issues/206#issuecomment-379914003, or mute the thread https://github.com/notifications/unsubscribe-auth/ALP_7tW7dMMe-Qmm6HymQf3ACWAPAxTMks5tm-E_gaJpZM4TLwdP .

-- Matthias Schulz Secure Mobile Networking Lab - SEEMOO

Email: matthias.schulz@seemoo.tu-darmstadt.de Web: http://www.seemoo.de/mschulz Phone (new): +49 6151 16-25478 Fax: +49 6151 16-25471

Department of Computer Science Center for Advanced Security Research Darmstadt Technische Universität Darmstadt Mornewegstr. 32 (Office 4.2.10, Building S4/14) D-64293 Darmstadt, Germany

kwpi commented 6 years ago

new version works perfect on Rpi3b+ up and running! thx you are a god!

arashebadi commented 6 years ago

@matthiasseemoo after rebooting (uname -r is 4.14.30-v7+), but I get the following error:

root@raspberrypi:/home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon# make Makefile:4: /firmwares/bcm43455c0/7_45_154/definitions.mk: No such file or directory make: *** No rule to make target '/firmwares/bcm43455c0/7_45_154/definitions.mk'. Stop.

Would you please help me how to fix this? Thanks

kwpi commented 6 years ago

In the root directory of the repository: cd nexmon Setup the build environment: source setup_env.sh

i think you skipped this part :)

arashebadi commented 6 years ago

@kwpi No I didn't skip that part of installation. Any other suggestions?

kwpi commented 6 years ago

you need to type it again after the reboot.. so first do: sudo su and then: source setup_env.sh in the root folder of the repository... after that you can go on with the installation..

arashebadi commented 6 years ago

@kwpi Thanks a lot, I think it is working now!

But I am still confused, I think other people also report that wlan0 can be seen by ifconfig but it can be seen by iwconfig. Is there any solution which can add wlan0 to list of ifconfig? or maybe add it as mon0?

My final goal is to use Scapy to send control WiFi frames by RPi in 5GHz channels, but right now Scapy cannot use wlna0 :(

Do you have any suggestion for me?

matthiasseemoo commented 6 years ago

Follow the readme step by step.

arashebadi notifications@github.com schrieb am Di., 10. Apr. 2018, 02:14:

@matthiasseemoo https://github.com/matthiasseemoo after rebooting (uname -r is 4.14.30-v7+), but I get the following error:

root@raspberrypi:/home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon# make Makefile:4: /firmwares/bcm43455c0/7_45_154/definitions.mk: No such file or directory make: *** No rule to make target '/firmwares/bcm43455c0/7_45_154/ definitions.mk'. Stop.

Would you please help me how to fix this? Thanks

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/seemoo-lab/nexmon/issues/206#issuecomment-379933091, or mute the thread https://github.com/notifications/unsubscribe-auth/ALP_7gHZi6GC7rtHWNXgme4FxLtioLqcks5tm_lygaJpZM4TLwdP .

arashebadi commented 6 years ago

Dear @matthiasseemoo,

I am trying but I am jumping from one error to another.

First question: Is RPi 3B+ uses bcm43455c0 or bcm43430a1? I did all of the steps of installation by bcm43455c0, but I run the following command and I got 43430!! (I am lost) pi@raspberrypi:~ $ sudo airmon-ng start wlan0 PHY Interface Driver Chipset phy1 wlan0 brcmfmac Broadcom 43430

Second question: How I can fix the following problem? This is the first step of having monitor mode.

pi@raspberrypi:~ $ sudo iw phy iw dev wlan0 info | gawk '/wiphy/ {printf "phy" $2}' interface add mon0 type monitor command failed: Operation not supported (-95) or pi@raspberrypi:~ $ sudo iw phy phy1 interface add mon0 type monitorcommand failed: Operation not supported (-95)

Thanks a lot!

mlinton commented 6 years ago

I get the same result after following the readme step by step on the RPI3b+, I'll try it again to confirm.

mlinton commented 6 years ago

Ok so rebuilt the RPI3B+ from scratch, updated the kernel to 1.14.34-v7+, and ran through the installation instructions again fresh. No errors now while building the firmware, followed the instructions to get the driver to load on reboot, rebooted and added the monitor interface with the "iw phy phy0 interface add mon0 type monitor" as root. This successfully added the interface mon0.

Attempted to monitor the interface and I get an "SIOCSIFFLAGS: Operation not possible due to RF-kill" error, unblocked it with "sudo rfkill unblock all" and it now is monitoring as expected.

Still not sure why there were errors in the first place, but this is now working well.

UPDATE: ok so it's half working, but the interface is only able to record probe requests and isn't seeing any of the other data at all. Here is a quick extract from the dmesg log.

[    5.190048] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: May  7 2018 18:44:45 version 7.45.154 (nexmon.org: 2.2.2-187-g2b6b-3) FWID 01-4fbe0b04
[    5.190732] brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28
[    5.471701] brcmfmac: brcmf_vif_add_validate: Attempt to add a MONITOR interface...
[    5.471726] brcmfmac: brcmf_mon_add_vif: brcmf_mon_add_vif called
[    5.471733] brcmfmac: brcmf_mon_add_vif: Adding vif "mon0"
[    5.709282] brcmfmac: brcmf_vif_add_validate: Attempt to add a MONITOR interface...
[    5.709295] brcmfmac: brcmf_vif_add_validate: ... there is already a monitor interface, returning EOPNOTSUPP
[    5.709303] brcmfmac: brcmf_cfg80211_add_iface: iface validation failed: err=-95
[    6.143816] uart-pl011 3f201000.serial: no DMA platform data
[    6.381119] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.385802] brcmfmac: power management disabled
[    6.394187] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.546925] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k SSFS
[   12.515482] Bluetooth: Core ver 2.22
[   12.515543] NET: Registered protocol family 31
[   12.515547] Bluetooth: HCI device and connection manager initialized
[   12.515563] Bluetooth: HCI socket layer initialized
[   12.515570] Bluetooth: L2CAP socket layer initialized
[   12.515588] Bluetooth: SCO socket layer initialized
[   12.551193] Bluetooth: HCI UART driver ver 2.3
[   12.551200] Bluetooth: HCI UART protocol H4 registered
[   12.551203] Bluetooth: HCI UART protocol Three-wire (H5) registered
[   12.551319] Bluetooth: HCI UART protocol Broadcom registered
[   12.737598] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   12.737609] Bluetooth: BNEP filters: protocol multicast
[   12.737623] Bluetooth: BNEP socket layer initialized
[  105.154037] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  105.154055] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  105.154063] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_get, cmd: 107
[  105.154569] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit
[  111.786659] device mon0 entered promiscuous mode
[  144.727090] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  144.727106] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  144.727115] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_get, cmd: 107
[  144.727691] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit
[  151.405854] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  151.405873] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  151.405881] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_set, cmd: 108
[  151.406427] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit
chithanhhoang commented 6 years ago

Following instruction from readme, I was able to make monitor mode works on RPI3+, good job Matthias! I used the RPI3+ to recompile and I found the RPI3+ quite fast compare to my first RPI. However, I notice the capture works only for legacy rates frames i.e. non 802.11n/ac rate, I do receive data frame but they are in legacy rate, confirming mlinton findings above. Also when receiving a HT frame, I notice the sdio complained and everything just stop working after the error. My AP is on a very clean channel 36 and using 802.11n 40BW, so all the frames are tx at 40 instead of 20, if I configure RPI3+ to 36/20 I can sniff all legacy frame except HT frames but not seeing any HT frame at 40BW (expected), I do see all the RTS/CTS and BlockAck but not data which are txed at 40Mhz. As soon as I set the radio to 36/40 (nexutil -k36/40), sdio complained, I repeated several times and found the current code cannot rx HT frame?! I repeat the test in 2.4 where mostly traffic are at 20Mhz and I do see the same sdio err. Maybe we need to fix sdio to handle. The error is from brcmf_sdio_readframes() brcmf_err("%s: glom superframe w/o " "descriptor!\n", func);

RonSwartz commented 6 years ago

I know this isn't the place and im sure ppl may get annoyed by me but im at the ends of my rope. I've been trying to do this on my own for 2 month's with just installing a fully working kali linux on my raspberry pi 3 b+ with monitor mode just so i can start learning about all kali has to offer. Coming from windows and having a learning disability has made this teaching myself a challenge. Im autistic so when i get stuck on something I'll keep beating my head against the wall till i figure it out but i can't so now im just depressed. Ive never found anything im interested in in till i found the magic of computer's and i hope some day to learn programming but im about to give up because i can't even install a working image or find thing's in terminal. Befor the rasperry i did a lot of reading on what kali can do so i know if i could get it installed properly i can learn it and maybe some day i could have a job. At the moment i have no hope of a future. Can't communicate with ppl face to face so who would hire me. Ill end up in some home or instantiation. Even if i end up not being able to meet my dreams at lest i could feel hope for a while if someone will please help me. Every one i ask ignores me. Wont give me the time of day so as a last resort i will ask here then just give up.

ZaraZia commented 9 months ago

hink other people also report that wlan0 can be seen by ifconfig but it can be seen by iwconfig. Is there any solution which can add wlan0

genuine us moment

SomewhatAwake commented 9 months ago

im getting this exact error, but in a different context, on an amd64 version, and trying to make firmware for my phone, yet it just returns this error. Here are the last few lines of linker.err /home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.tinflate_write_objmemx' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.tinflate_read_objmemx' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.wlc_ucode_write_compressed_args' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.wlc_ucodex_write_compressed_args' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.data.vasip_bin_len' in file 'obj/vasip.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: error: no memory region specified for loadable section `.text.printf'