Skip to content
ReleaseNotes 791 KiB
Newer Older
17001 17002 17003 17004 17005 17006 17007 17008 17009 17010 17011 17012 17013 17014 17015 17016 17017 17018 17019 17020 17021 17022 17023 17024 17025 17026 17027 17028 17029 17030 17031 17032 17033 17034 17035 17036 17037 17038 17039 17040 17041 17042 17043 17044 17045 17046 17047 17048 17049 17050 17051 17052 17053 17054 17055 17056 17057 17058 17059 17060 17061 17062 17063 17064 17065 17066 17067 17068 17069 17070 17071 17072 17073 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 17084 17085 17086 17087 17088 17089 17090 17091 17092 17093 17094 17095 17096 17097 17098 17099 17100 17101 17102 17103 17104 17105 17106 17107 17108 17109 17110 17111 17112 17113 17114 17115 17116 17117 17118 17119 17120 17121 17122 17123 17124 17125 17126 17127 17128 17129 17130 17131 17132 17133 17134 17135 17136 17137 17138 17139 17140 17141 17142 17143 17144 17145 17146 17147 17148 17149 17150 17151 17152 17153 17154 17155 17156 17157 17158 17159 17160 17161 17162 17163 17164 17165 17166 17167 17168 17169 17170 17171 17172 17173 17174 17175 17176 17177 17178 17179 17180 17181 17182 17183 17184 17185 17186 17187 17188 17189 17190 17191 17192 17193 17194 17195 17196 17197 17198 17199 17200 17201 17202 17203 17204 17205 17206 17207 17208 17209 17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 17224 17225 17226 17227 17228 17229 17230 17231 17232 17233 17234 17235 17236 17237 17238 17239 17240 17241 17242 17243 17244 17245 17246 17247 17248 17249 17250 17251 17252 17253 17254 17255 17256 17257 17258 17259 17260 17261 17262 17263 17264 17265 17266 17267 17268 17269 17270 17271 17272 17273 17274 17275 17276 17277 17278 17279 17280 17281 17282 17283 17284 17285 17286 17287 17288 17289 17290 17291 17292 17293 17294 17295 17296 17297 17298 17299 17300 17301 17302 17303 17304 17305 17306 17307 17308 17309 17310 17311 17312 17313 17314 17315 17316 17317 17318 17319 17320 17321 17322 17323 17324 17325 17326 17327 17328 17329 17330 17331 17332 17333 17334 17335 17336 17337 17338 17339 17340 17341 17342 17343 17344 17345 17346 17347 17348 17349 17350 17351 17352 17353 17354 17355 17356 17357 17358 17359 17360 17361 17362 17363 17364 17365 17366 17367 17368 17369 17370 17371 17372 17373 17374 17375 17376 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 17388 17389 17390 17391 17392 17393 17394 17395 17396 17397 17398 17399 17400 17401 17402 17403 17404 17405 17406 17407 17408 17409 17410 17411 17412 17413 17414 17415 17416 17417 17418 17419 17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 17432 17433 17434 17435 17436 17437 17438 17439 17440 17441 17442 17443 17444 17445 17446 17447 17448 17449 17450
      - configs/viewtool-stm32f107:  Add support for FT80X initialization.
        Add ft80x configuration that will eventually be used for testing the
        ft80x if I ever receive hardware.

    * Tools:

      - tools/logparser:  Add a tool which will help me to convert git logs
        to ChangeLog format.

    * NSH: apps/nshlib:

      - apps/nshlib:  Add support for a truncate command.  This will be used
        to test the new ftruncate file system support.
      - apps/nshlib:  Add support for Telnet character mode.  From Masayuki
        Ishikawa.
      - apps/nshlib: Add support for '-n' option to the echo command.  From
        Masayuki Ishikawa.
      - apps/nshlib:  Add irqinfo command.

    * Examples/Tests: apps/examples:

      - apps/examples/userfs:  Add truncate() support for userfs.
      - apps/examples/lvgldemo:  Add lvgldemo example for LittlevGL.
      - apps/examples/veml6070:  Add VEML6070 Application Example.  From
        Alan Carvalho de Assis.
      - apps/examples/bmp180: Add BMP180 application example.  From Alan
        Carvalho de Assis.
      - apps/examples/ft80x:  Add a test of the FT80x based on FTDI
        SampleApp.  Includes tests of GPU primitives and graphics co-
        processor commands.

    * Network Utilities: apps/netutils:

      - apps/netutils/netlib: Add default route in netlib_set_dripv4addr().
        From Masayuki Ishikawa.

    * Graphics: apps/graphics:

      - apps/graphics/littlevgl:  Add littlevgl library.  From Alan Carvalho
        de Assis.
      - apps/graphics/ft80x:  Add the FTDU FT80x GUI support library.
        Consists of some display list helpers, audio helpers, touch helpers,
        RAM access, register access etc.

    * System Utilities (apps/system)

      - apps/system/nxplayer:  Add support for HTTP streaming in nxplayer.
        From Masayuki Ishikawa.
      - apps/system/setlogmask:  Adds 'setlogmask' application that allows
        you to set the syslog priority via a simple command.  From Anthony
        Merlino.
      - apps/system/usbmsc: Added Kconfig options to configure write
        protection for each LUN.  From Fabio D'Urso.
      - system/stackmonitor:  Re-design the stack monitor so that it does not
        make forbidden calls directly into the OS, breaking the portable POSIX
        OS interface.  It now properly uses the PROCFS file system to glean
        information about stack usage.

Bugfixes.  Only the most critical bugfixes are listed here (see the
ChangeLog for the complete list of bugfixes and for additional, more
detailed bugfix information):

    * Core OS:

      - System Timer:  Change the way that the 64-bit time is sampled.
        Previously, we disabled interrupts before sampling the 64-bit
        timer since the uint64_t access is not atomic on most CPUs.  However,
        disabling (local) interrupts does not work in the SMP case.  In that
        case, the timer interrupt may be running on only one of the CPUs;
        disabling interrupts on a different CPU will provide no protection
        from timer rollover.  To work around this, logic was added that
        samples 64-bit timer is sampled twice and if 32-bit rollover was
        detected between samples, then loops until there is no rollover.
      - POSIX Timers:  In SMP mode, running TCB is not always at the head of
        the g_readytorun list.  This change removes DEBUGASSERT() to avoid
        this condition.  From Masayuki Ishikawa.
      - Spinlocks:  Add memory barrier operations in spin_unlock().  In ARM
        document regarding memory barriers, SP_DMB() must be issued before
        changing a spinlock state to SP_UNLOCKED.  However, we found that
        SP_DSB() is also needed to ensure that spin_unlock() works
        correctly for network streaming aging test.  From Masayuki Ishikawa.
      - Sporadic Scheduler:  Fix compiler error in Sporadic Scheduler when
        priority inheritance is enabled.  Noted by eunb.song@samsung.com
      - Priority Inheritance:  Fix some priority inheritance related issues
        noted during review of logic.  Also add some REVISIT comments for some issues noted in the design.
      - boardctl:  Remove the BOARDIOC_TSCTEST_TEARDOWN and
        BOARDIOC_TSCTEST_SETUP boardctl() commands.  Remove all
        implementations of board_tsc_teardown().  Each board now initializes
        the touchscreen controller as a normal part of its board  bring-up.
        board_tsc_setup() is gone; the touchscreen controller is now treated
        like any other on-board device.
      - configs:  CONFIG_MAX_TASKS must be a power of 2.
      - SMP: Introduce a new global IRQ clearing logic and tasklist
        protection.  The previous implementation of clearing global IRQ in
        sched_addreadytorun() and sched_removereadytorun() was done too
        early. As a result, nxsem_post() would have a chance to enter the
        critical section even nxsem_wait() is still not in blocked state.
        This patch moves clearing global IRQ controls from
        sched_addreadytorun() and sched_removereadytorun() to
        sched_resumescheduler() to ensure that nxsem_post() can enter the
        critical section correctly.  For this change,
        sched_resumescheduler.c is always necessary for SMP configuration.
        In addition, by this change, task_exit() had to be modified so that
        it calls sched_resumescheduler() because it calls
        sched_removescheduler() inside the function, otherwise it will cause
        a deadlock. However, I encountered another DEBUGASSERT() in
        sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK.
        Actually sched_cpu_select() accesses the g_assignedtasks which might
        be changed by another CPU. Similarly, other tasklists might be
        modified simultaneously if both CPUs are executing scheduling logic.
        To avoid this, I introduced tasklist protection APIs. With these
        changes, SMP kernel stability has been much improved.  From Masayuki
        Ishikawa.
      - SMP:  Fix this_task() to be an atomic operation.  In the previous
        implementation, this_task() was defined in sched.h by using just a
        macro current_task(this_cpu()).  However, I found that this is not
        atomic and actually sometimes switching CPU happened in executing
        the macro when we tested audio steaming plus executing commands via
        Telnet.  This change resolves this issue by implementing atomic
        this_task()in sched_thistask.c which is newly introduced.  From
        Masayuki Ishikawa.
      - SMP:  Implements a global scheduler lock capability as part of SMP
        support.  This allows the scheduler to be locked with no knowledge
        or access to the TCB of the currently running task.  This is
        necessary because accessing the TCB of the currently running task
        is, itself, a non-atomic operation.  This global scheduler lock
        capability was add just to support that atomic access to the TCB.
      - SMP:  Extend the last global lock change to work with the
        LC823450-XGEVK which does not support the atomic fetch add but
        does support disabling interprocessor interrupts.  Disabling
        interprocessor interrupts will also guarantee that the TCB address
        calculation is atomic.
      - SMP:  Fix a infinite recursion problems that a recent changes
        introduced into the i.MX6 SMP implementation.  This is not seen
        with the LC823450 because you can disable inter-processor interrupts
        in that architecture; but you cannot in the ARMv7-A/GIC architecture.
      - SMP:  Remove SMP related logic in sig_dispatch.c.   This change
        prevents from a deadlock in up_schedulesigaction.c where inter-CPU
        signal handling is actually implemented.  arch/arm/src/armv7-m: Fix
        signal handling for SMP. In previous implementation, signal handling
        for SMP was incorrect.  Thus, for example, if an inter-CPU signal
        happened an incorrect tcb was signaled and caused ASSERT().  This
        change fixes the issues and works for both inter-CPU signal handling
        and signal handling on the same CPU.  From Masayuki Ishikawa.
      - Tasking:  Add nxtask_create().  Kthread_create() and nxtask_create()
        are internal OS functions and should not modify the errno variable.
        Convert legitimate uses of task_create() to nxtask_create().
        Review handling of returned values from all uses of kthread_create()
        (as well as nxtask_create()).
      - Tasking:  Threads started by board bring-up logic should be kernel
        threads, not user tasks.
      - Tasking:  Threads started by drivers should be kernel threads, not
        user tasks.
      - Semaphore Usage:  Added ECANCELED condition to DEBUGASSERT's
        checking sem_wait result  From Dmitriy Linikov.

      - errno:  Add new internal OS function nxsched_setaffinity() that is
        identical to sched_isetaffinity() except that it does not modify the
        errno value.  All usage of sched_setaffinity() within the OS is
        replaced with nxsched_setaffinity().
      - errno:  Internal functions sched_reprioritize() and
        sched_setpriority() no longer modify the errno value.  Also renamed
        to nxsched_reprioritize() and sched_setpriority().
      - errno:  Add new internal OS function nxsched_getscheduler() that is
        identical to sched_getscheduler() except that it does not modify the
        errno value.  All usage of sched_getscheduler() within the OS is
        replaced with nxsched_getscheduler().
      - errno:  Add new internal OS function nxsched_setparam() that is
        identical to sched_setparam() except that it does not modify the
        errno value.  All usage of sched_setparam() within the OS is
        replaced with nxsched_setparam().
      - errno:  Add new internal OS function nxsched_getparam() that is
        identical to sched_getparam() except that it does not modify the
        errno value (actually, the previous value erroneously neglected to
        set the errno value to begin with, but this fixes both issues).  All
        usage of sched_getparam() within the OS is replaced with
        nxsched_getparam().
      - errno:  wd_start() is an internal OS function and should not set the
        errno value.  Reviewed and updated every call to wd_start() to
        verify if return value is used and if so if the errno value is
        accessed.
      - errno:  Fix several inappropriate accesses to get_errno() that were
        missed in previous changes (some going back to nuttx-7.23).  Add new
        nxsched_setscheduler() and nxsched_getaffinity() which are
        equivalent to their counterparts without the nx on front.  These
        versions do not modify the errno value.  Changed all calls within
        the OS to use these newer versions of the functions.
      - errno:  binfmt/, configs/, grahics/, libc/, mm/, net/, sched/:  OS
        references to the errno variable should always use the set_errno(),
        get_errno() macros.
      - drivers/, fs/ and libc/:  OS references to the errno variable should
        always use the set_errno(), get_errno() macros.

    * File System/Block and MTD Drivers:

      - FAT:  CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX)
      - NFS:  Correctly infer file type.  The file type is in struct
        nfs_statinfo_s's ns_type field, not in the ns_mode field.  From
        Michael Jung.
      - NFS: Fix buffer corruption.  In case multiple read requests to the
        NFS server are required to fill up the user provided buffer,
        nfs_read() might write behind the end of said buffer.  This is fixed
        with this change.  From Michael Jung.
      - VFS:  reopen() should return NULL when oflags is less than 0, not
        equal to 0. Because negative value is returned on failure of
        lib_mode2offlags() which converts the mode string into file open
        mode flag.
      - ProcFS:  Fix an error in a common function that manages read data.
      - drivers/mmcsd:  Respect SDIO_CAPS_DMABEFOREWRITE on CMD25.  From
        Evgeniy Bobkov.
      - AT24xx:   Correct page size for AT24C02 part.  From Alexander
        Oryshchenko.
      - mtd_config.c:  Add still more error handling (to detect bad
        underlying flash implementations).  Remove MTD_ERASE that was
        erasing data block instead of erase block.  This is a partial
        revert of 4f18b4. Reported-by: Pascal Speck <iktek01@yahoo.com>

    * Graphics/Display Drivers:

      - drivers/lcd:  Fix the default I2C address of SSD1306 OLED display
        (7- vs 8-bit addressing)  From Alan Carvalho de Assis.
      - drivers/lcd:  lcd_framebuffer.c does not need to include board-
        specific board.h.
      - include/lcd:  Eliminate a warning from an SSD1306 header file by
        adding a forward reference to struct i2c_master_s.  From Sebastien
        Lorquet.

    * Networking/Network Drivers:

      - ARP:  Fix an error introduced when ICMP and ICMP6 socket support was
        added in NuttX-7.3.  A gratuitous ARP (or solicitation) was being
        sent after receive of the ECHO replay (advertisement).
      - ARP:  Fix IGMP multicast address computation on Nuttx network stack.
        This change fixes the IGMP address computation to allow multicast
        UDP messages. The destination address was created with the incorrect
        bytes of the given IPv4 address.  From Louis Mayencourt.
      - ioctl:  The existence of the network driver ioctl() method should
        depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL.
        The former enables the method, the later enables a subset of
        possible driver IOCTLs.
      - TCP:  Write buffering logic should not wait for a free buffer if
        the socket was opened non-blocking.
      - TCP:  Fixed bad return value handling in psock_tcp_send().  send()
        expects psock_tcp_send() to return a negated errno value, not -1
        with the errno set (GN: I added same change for tcp_send_buffered.c
        which has the same issue as tcp_send_unbuffered.c)  From Pelle
        Windestam.
      - TCP:  Fixes hardfault when network goes done and network monitoring
        is in place.  From Gianpaolo Ferroni Ariani.
      - TCP: tcp_send_[un]buffered.c:  Check routing table in
        psock_send_addrchck().  Previously only ARP table was considered
        when determining if the data will actually be sent.  From Juho
        Grundstrom.
      - TCP:  Generalize Juho Grundstrom's IPv4 change for IPv6 as well.
      - UDP:  Remove some conditional logic that was true if there is only a
        single network device, but not true in the multi-device context.
      - UDP:  In sendto(), return EHOSTUNREACH if the network is down.

    * Common Drivers:

      - drivers/pipes:  In poll logic, fix off-by-one error in calculation
        of bytes in the buffer.  Buffer calculation in pipe poll setup is
        off-by-one when read index is larger than write index. This causes
        poll() not getting POLLIN when buffer has one byte as calculation
        gives zero bytes in buffer.  From Jussi Kivilinna.
      - drivers/audio:  Improve stability of the WM8776 driver in SMP mode.
        Apply irq_spin APIs to improve performance.  Repeat to process a
        message to avoid deadlock.  From Masayuki Ishikawa.
      - drivers/ioexpander:  Fixed build of PCF8574 driver when its
        interrupts aren't enabled by config.  From Dmitriy Linikov.
      - drivers/syslog:  Fixes LOG_UPTO macro to include specified log level.
        From Anthony Merlino.
      - drivers/sensors:  Fix HTS221 sensor reset with BOOT bit  From Jussi
        Kivilinna.
      - drivers/loop:  If we want to open read-only in losetup.c, flags
        should be O_RDONLY not O_RDWR.  From Fabio D'Urso.
      - drivers/timers/ds3231.c:  Correct some debug statements.  From
        Alexander Oryshchenko.
      - drivers/sensors/lis2dh:  Use realtime clock if monotonic is not
        available  From Juha Niskanen.
      - drivers/i2c and drivers/spi:  Fix compile error if
        CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks  From Juha
        Niskanen.

    * ARMv7-A:

      - Data Cache:  Fix cp15_invalidate_dcache.  In cases where more than
        one dcache line was to be invalidated, a missing branch label
        would result in a false branch target into cp15_flush_idcache.  Also
        the .size macro was fixed for both cp15_invalidate_dcache.  From
        Michael Jung.
      - SMP:  Port the signal-related SMP change by Masayuki Ishikawa to the
        ARMv7-A family.

    * Extensa:

      - SMP:  Port the signal-related SMP change by Masayuki Ishikawa to the
        Xtensa family.

    * Infineon XMC4xxx Drivers:

      - XMC4xxx:   Only setup USB clock when USB PLL is enabled  From Alan
        Carvalho de Assis.
      - XMC4xxx: Fix USIC_BRG_SCLKCFG definition  From Alan Carvalho
        de Assis.

    * Microchip PIC32MZ

      - MIPS32:  In up_idle, the kludge that was conditionally enabled if
        the work queue was enable appears to be needed even when he work
        queue is not enabled on the PIC32MZ.
      - PIC32MZ:  Fix some typos in debug instrumentation in pic32mz-gpio.c;
        fix some typos related to UART5 configuration in pic32mz-serial.c.

    * Microchip/Atmel SAMD/L:

      - SPI:  In sam_spibus_initialize(), the pinmux configuration was
        smashing the previous CTRLA register configuration. There are
        also some typos in samd_spi.h  From Matt Thompson.
      - SPI:  Fixes g_spi2ops and g_spi2dev using incorrect values  From Matt
        Thompson.
      - SPI:  SPI must be disabled before changing the mode bits in CTRLA
        register  From Matt Thompson.
      - DMA:  Fix DMA controller support.  From Matt Thompson.

    * NXP/Freescale LPC17xx Drivers:

      - LPC17xx:  Disable LPC17 FDR when not used.  If a boot loader set the
        fractional divider (FDR) the baud rate in nuttx will be wrong
        (multiplied by this fraction).  So if it is not used, it should be
        disabled. From Harald Gutsche.

    * NXP/Freescale Kinetis Drivers:

      - Kinetis:  Correct some Ethernet PHY register bit tests for the
        KSZ8081 PHY.  From Stewart.

    * On Semiconductor LC823450

      - arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c.
        In LC823450, ldrex and strex are not supported. So we implemented
        up_testset() with H/W Mutex. However, there was a bug in memory
        access order. This change ensures correct memory access order in
        up_testset() for LC823450. From Masatoshi Tateishi.

    * STMicro STM32 Drivers:

      - STM32 F3 RCC:  A flash wait state configuration.  Flash latency must
        be fixed according to sysclk frequency.  If this operation is not
        done or done after PLL configuration, the STM32 fail to continue
        boot operation if the frequency if greater than 24MHz according to
        the board variable STM32_SYSCLK_FREQUENCY.  Tested on stm32f334-disco
        board.  From Gwenhael Goavec-Merou.
      - STM32 RTC:  Make STM32 usable with an external RTC.
      - STM32 SPI:  Removed unnecessary (and incorrect) speed limitation.
        From Alexander Oryshchenko.
      - STM32 SPI:  I have a SPI bus with both Mode 0 and Mode 3 devices
        on it.  After performing SPI I/O to a Mode 0 device, switching to a
        Mode 3 device locked up the SPI interface.  Only zeroes would be
        read.  I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode().  Changing
        the mode causes a spurious SPI clock transmission that confuses the
        stm32f7 SPI input hardware.  This problem is solved by (1) changing
        the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing
        the receive FIFO if the mode change results in garbage in the FIFO.
        From Bob Feretich.
      - STM32 and STM32 F7:  Remove confusing, redundant, and misleading
        definitions of STM32_BKP_BASE from the F2, F3, and F4 memory
        maps.  Unlike the F1, these parts do not have a separate BKP address
        region.  The BKP registers are with the RTCC address regions.
        stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be
        used to access BKP registers on F2, F3, and F4.
      - STM32 and STM32 F7:  Architecture-specific code is not permitted to
        modify the errno variable.
      - STM32 F4 I2C:  Correct some recent changes to STM32F4 I2C that broke
        poll mode of operation.  From Alexander Oryshchenko.
      - STM32 F4 I2C:  Corrections to STM32 F4 I2C to restore functionality.
        From Alexander Oryshchenko.
      - STM32 F4 I2C:  Corrections to STM32 F4 I2C to fix the NORESTART
        flag.  From Alexander Oryshchenko.
      - STM32 F7:  Fixes a bug in multi-block SD-card operations on the
        STM32F7 platform.  DBLOCKSIZE must be the size of SD-card block, not
        the total amount of transferred bytes.  From Evgeniy Bobkov.
      - STM32 F7:  Fix undefined variable when using USART1 for other
        purposes than UART (e.g. SPI).  From Frank Benkert.
      - STM32 F7:  Backport RTC alarm setting changes from STM32L4.  Most
        notably this fixes RTC getting stuck issue when both alarms were
        used.  Root cause was writing RTC ISR register contents to RTC CR
        register.  From Juha Niskanen.
      - STM32 L4 Flash:  Change flash programming to use page buffer for
        unaligned writes.  From Juha Niskanen.

    * STMicro STM32 Boards:

      - Nucleo-L432KC:  Fix some bogus logic noted by Fanda.
      - configs/nucleo-* and configs/stm32l476vg-disco:  Fix more
        stm32_userleds.c bogus logic  From Juha Niskanen.
      - Nucleo-L432KC:  Fixed nucleo-l432kc broken build when
        CONFIG_USERLED_LOWER defined  From Fanda.
      - Nucleo-L432KC:  Issue #85: /dev/userleds is not working for
        Nucleo-L432KC fixed  From Fanda Vacek.
      - STM32F429I-Disco:  Separate SPI4 from MTD init.  I was trying to
        attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4
        port and was hitting compilation problems, since CONFIG_MTD and
        thus 'struct mtd_geometry_s' was not defined.  This patch separates
        SPI4 initialization logic from MTD initialization logic.  From
        Michael Jung.
      - STM32F103-Minimum:  Remove CONFIG_NX_LCDDRIVER dependence from
        stm32_ssd1306.c  From Alan Carvalho de Assis.

    * C Library/Header Files:

      - libc/stdio:  In dtoa(), up_interrupt_context() is used in a debug
        assertion.  up_interrupt_context() is not available in the user-mode
        phase of the PROTECTED or KERNEL build configurations.  In those
        configurations, enabling libc floating point support and debug
        assertions will result in an undefined reference to
        up_interrupt_context().
      - libc/netdb:  Fixed parsing of DNS response packets having compressed
        names ending with pointer.  There were troubles parsing response
        packets which have compression of QNAME/NAME field when only
        trailing part of the name (not the whole name) is replaced with
        pointer to another part of the packet.  This commit fixes parsing of
        such packets.  Also I added checks to keep parsing only in bounds of
        the read part of DNS response packet.  From Dmitriy Linikov.

    * Tools

      - tools/*.c:  Add #define _GNU_SOURCE to all C files that call
        asprintf() to eliminate a warning.
      - tools/cvsparser.c:  Add a check to avoid access past the end
        of a fixed size array

    * NSH: apps/nshlib:

      - apps/nshlib:  Fix compile error when CONFIG_NSH_DISABLESCRIPT is not
        defined.  The field np_flags does not exist if scripting is disabled.

    * Examples/Tests: apps/examples:

      - apps/examples/touchscreen:  Eliminate BOARDIOC_TSCTEST_SETUP.

    * Network Utilities: apps/netutils:

      - apps/netutils/ftpc:  Fix some corner-cases that could cause FTP to
        access past the end of valid data.

    * Wireless Utilities: apps/wireless:

      - apps/wireless/ieee802154/i8shark: Fixes special XBee compensation
        by purposely chopping off the FCS.  From Anthony Merlino.