Commit Graph

22 Commits (6bd3caa9688e9091fc478889dab1c8ba0b18c7bf)

Author SHA1 Message Date
Adam Green 5b5d7ee1d4 Fix issue #1599
My previous commit, c6d2c81, broke Keil builds and maybe even IAR.

I need to learn how to read C code :)  I thought I was masking off the
O_BINARY bit only for GCC builds but it turns out that my update was
in the fall-through case for all toolchains.  This commit now places
the O_BINARY masking operation into a GCC specific #ifdef clause.

Testing:
I tested the same fopen("/local/out.txt","rb") code as before but this
time I built it with the online compiler and GCC_ARM. I tested the
resulting binaries on mbed-LPC11U24 and mbed-LPC1768 boards.

Thanks to @neilt6 for catching & reporting this!
2016-03-08 14:13:00 -08:00
Adam Green c6d2c81c7f LocalFileSystem fails to open binary files
Fixes issue #1562 reported by @justbuchanan.

When building code with GCC-ARM / newlib, attempting to use the
b (binary) mode in a fopen() call would fail. newlib would parse
this option and pass it down to the LocalFileSystem open call which
didn't like the unexpected O_BINARY flag in openmode.

The openmode_to_posix() function in retarget.cpp would never set the
O_BINARY flag for the other toolchains but for GCC it would just pass
down whatever newlib placed there.  This commit masks out the O_BINARY
bit so that it never gets passed down to the file system drivers, just
as occurs for the other supported toolchains.

Test case:
  FILE *fp = fopen("/local/out.txt", "rb");

I tested that code on mbed LPC1768 and LPC11U24 boards while using
GCC_ARM as the toolchain. It failed on both platforms previous to
this change and succeeded there after.
2016-03-07 13:34:32 -08:00
sg- c7f84c86f7 Remove all references and use of code warrior GCC in docs, build and
exporters¦
2016-02-11 01:07:58 -06:00
Masao Hamanaka 74220c7896 Correct the formatting of #if. 2015-02-26 19:46:02 +09:00
Masao Hamanaka 0365977217 Modify and add a file to support GCC. (mbed common codes) 2015-02-26 16:35:45 +09:00
0xc0170 15ee1ca2dc Fix for #908, exit req std namespace 2015-02-16 10:11:54 +00:00
Adam Green 06495658ce Move exit override to retarget.cpp
I moved the exit handler from exit.c to retarget.cpp where the rest of
the standard C library retargetting routines are found.  The exported
makefiles already explicitly link in retarget.o but not exit.o
When building with the GNU toolchain, it is safest to link in the
object file directly for retargetting routines so that GNU linker has
to use these versions of the routines.

Testing:
I have only tested this change with GCC_ARM. It should really be
tested with more toolchains before getting merged.
2015-02-12 00:14:26 -08:00
GustavWi bd6836396b Moved IAR serial differences to retarget.cpp 2014-12-09 14:30:34 +01:00
Martin Kojtal a681b14416 Change "error.h" to "mbed_error.h" to avoid conflicts with 3rd party code 2014-08-15 16:19:18 +01:00
Alexander Valitov cde156cadc Added implementation for "rename" on FAT file system 2014-08-13 10:20:31 +01:00
Andreas Løve Selvik f3de4bc529 Bugfix: Make redirected stdio write initialize UART
Calling a scanf before the first printf would end up calling serial_getc without initializing the UART.
2014-07-29 11:47:46 +02:00
Martin Kojtal 09251dd3ba Revert "error.h -> mbed_error.h" 2014-07-08 14:04:50 +02:00
0xc0170 f7f77392d9 error header file rename to mbed_error.h 2014-07-04 08:05:49 +02:00
0xc0170 9017b27778 mbed common - trailing white spaces removal 2014-05-29 15:11:05 +02:00
Bogdan Marinescu 2665d5bac4 Modified call-before-main mechanism
Added a new function (mbed_sdk_init) that can be used by the SDK itself to
do initializations before main() is called.
2014-01-31 11:58:18 +02:00
Adam Green 5eb976a088 Fix _sbrk() implementation for Cortex-M parts.
A recent commit, 43acaa4166, to get _sbrk() to build successfully for
LPC2368 broke the Cortex-M implementation.  __get_MSP() isn't ever
defined as a macro, it is an inline function.  This means that the
code would always be compiled to use SP instead of MSP on Cortex-M
parts.  I switched the code to instead use the TARGET_ARM7 define
to choose which stack pointer to utilize.

I tested this fix by making sure that the LPC2368 version of the mbed
SDK would still build successfully with the Python scripts and that the
NET1 test still built and ran successfully on my mbed-LPC1768 device.
2013-09-17 04:29:35 -07:00
dinau 43acaa4166 LPC2368 [GCC_ARM]: Fixed: Compilation and link errors in case "SD" example. 2013-09-13 22:01:19 +09:00
Bogdan Marinescu ae16d3efa8 Fix NULL pointer indirection in FilePath
If the FileBase::lookup operation in the constructor of FilePath returns
NULL, subsequent operations (such as isFile()/isFileSystem()) will call
methods on a NULL 'fb' pointer. This commit fixes this issue by adding
explicit NULL checks and a new method in FilePath (exists()).
2013-09-05 14:09:27 +03:00
Adam Green 9e6d1683b8 gcc: Provide _sbrk implementation compatible with RTX
I verified that the hang issue I was seeing when building and running
the mbed official networking tests with GCC_ARM was related to this
issue reported on the mbed forums:
    http://mbed.org/forum/mbed/topic/3803/?page=1#comment-18934

If you are using the 4.7 2013q1 update of GCC_ARM or newer then it
will have a _sbrk() implementation which checks the new top of heap
pointer against the current thread SP, stack pointer.
See this GCC_ARM related thread for more information:
    https://answers.launchpad.net/gcc-arm-embedded/+question/218972
When using RTX RTOS threads, the thread's stack pointer can easily
point to an address which is below the current top of heap so this
check will incorrectly fail the allocation.

I have added a _sbrk() implementation to the mbed SDK which checks the
heap pointer against the MSP instead of the current thread SP.  I have
only enabled this for TOOLCHAIN_GCC_ARM as this is the only GCC based
toolchain that I am sure requires this.
2013-08-30 18:15:25 -07:00
Bogdan Marinescu 58fd85fc6f Add support for calling a function before main()
The name of the function is mbed_main.
Fixes PRMBED-906.
2013-08-07 14:39:13 +03:00
Emilio Monti 8562b3660b Add LPC1347 export templates. Cleanup GCC toolchain check. 2013-08-02 17:56:11 +01:00
Bogdan Marinescu df5a993197 __cxa_pure_virtual changes
- rename stdio.cpp to retarget.cpp, since it doesn't contain only stdio-related
  code
- move __cxa_pure_virtual from exit.c to retarget.cpp where it belongs.
2013-07-29 18:54:22 +03:00