[PATCH] libdl: Add C++ exception support to loaded modules.

2016-12-11 Thread Chris Johns
This has been tested on SPARC, i386, PowerPC and ARM.

Closes #2767.
---
 .../sparc/erc32/make/custom/erc32-testsuite.tcfg   |   4 -
 cpukit/libdl/Makefile.am   |   1 +
 cpukit/libdl/dlfcn.c   |   2 +-
 cpukit/libdl/rtl-allocator.c   |  26 ++-
 cpukit/libdl/rtl-allocator.h   |   7 +-
 cpukit/libdl/rtl-debugger.c|  14 +-
 cpukit/libdl/rtl-elf.c |  94 +++
 cpukit/libdl/rtl-elf.h |  26 ++-
 cpukit/libdl/rtl-error.c   |  17 +-
 cpukit/libdl/rtl-mdreloc-arm.c | 147 +++--
 cpukit/libdl/rtl-mdreloc-bfin.c|  29 
 cpukit/libdl/rtl-mdreloc-h8300.c   |  29 
 cpukit/libdl/rtl-mdreloc-i386.c|  29 
 cpukit/libdl/rtl-mdreloc-lm32.c|  29 
 cpukit/libdl/rtl-mdreloc-m68k.c|  29 
 cpukit/libdl/rtl-mdreloc-mips.c|  29 
 cpukit/libdl/rtl-mdreloc-moxie.c   |  29 
 cpukit/libdl/rtl-mdreloc-powerpc.c |  43 +
 cpukit/libdl/rtl-mdreloc-sparc.c   |  43 -
 cpukit/libdl/rtl-mdreloc-v850.c|  29 
 cpukit/libdl/rtl-obj.c | 178 +
 cpukit/libdl/rtl-obj.h | 169 +++
 cpukit/libdl/rtl-rap.c |  55 ---
 cpukit/libdl/rtl-rap.h |   7 +
 cpukit/libdl/rtl-unwind-dw2.c  |  71 
 cpukit/libdl/rtl-unwind-dw2.h  |  83 ++
 cpukit/libdl/rtl-unwind.h  |  63 
 cpukit/libdl/rtl.c |  33 +++-
 cpukit/libdl/rtl.h |   2 +-
 testsuites/libtests/dl01/init.c|   3 +-
 testsuites/libtests/dl02/init.c|   2 +
 testsuites/libtests/dl03/init.c|   2 +
 testsuites/libtests/dl04/init.c|   2 +
 testsuites/libtests/dl05/dl-cpp.cpp|  24 ++-
 testsuites/libtests/dl05/dl-load.c |  34 ++--
 testsuites/libtests/dl05/dl-load.h |  30 +++-
 testsuites/libtests/dl05/dl-o5.cpp |  15 +-
 testsuites/libtests/dl05/init.c|   8 +-
 38 files changed, 1182 insertions(+), 255 deletions(-)
 delete mode 100644 
c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg
 create mode 100644 cpukit/libdl/rtl-unwind-dw2.c
 create mode 100644 cpukit/libdl/rtl-unwind-dw2.h
 create mode 100644 cpukit/libdl/rtl-unwind.h

diff --git a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg 
b/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg
deleted file mode 100644
index cee7ce5..000
--- a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# Excpected failures.
-#
-expected-fail: dl05
diff --git a/cpukit/libdl/Makefile.am b/cpukit/libdl/Makefile.am
index 5c3cd15..b21c167 100644
--- a/cpukit/libdl/Makefile.am
+++ b/cpukit/libdl/Makefile.am
@@ -25,6 +25,7 @@ libdl_a_SOURCES = \
   rtl-string.c \
   rtl-sym.c \
   rtl-trace.c \
+  rtl-unwind-dw2.c \
   rtl-unresolved.c
 
 libdl_a_SOURCES += rtl-mdreloc-@RTEMS_CPU@.c
diff --git a/cpukit/libdl/dlfcn.c b/cpukit/libdl/dlfcn.c
index 19feaaf..3b31bb2 100644
--- a/cpukit/libdl/dlfcn.c
+++ b/cpukit/libdl/dlfcn.c
@@ -130,7 +130,7 @@ dlerror (void)
 {
   static char msg[64];
   rtems_rtl_get_error (msg, sizeof (msg));
-   return msg;
+  return msg;
 }
 
 int
diff --git a/cpukit/libdl/rtl-allocator.c b/cpukit/libdl/rtl-allocator.c
index 9880940..39b4bcd 100644
--- a/cpukit/libdl/rtl-allocator.c
+++ b/cpukit/libdl/rtl-allocator.c
@@ -152,6 +152,7 @@ rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag,
 bool
 rtems_rtl_alloc_module_new (void** text_base, size_t text_size,
 void** const_base, size_t const_size,
+void** eh_base, size_t eh_size,
 void** data_base, size_t data_size,
 void** bss_base, size_t bss_size)
 {
@@ -173,7 +174,20 @@ rtems_rtl_alloc_module_new (void** text_base, size_t 
text_size,
const_size, false);
 if (!*const_base)
 {
-  rtems_rtl_alloc_module_del (text_base, const_base, data_base, bss_base);
+  rtems_rtl_alloc_module_del (text_base, const_base, eh_base,
+  data_base, bss_base);
+  return false;
+}
+  }
+
+  if (eh_size)
+  {
+*eh_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ,
+eh_size, false);
+if (!*eh_base)
+{
+  rtems_rtl_alloc_module_del (text_base, const_base, eh_base,
+ 

Re: [PATCH 7/7] Adding pipe support

2016-12-11 Thread Sebastian Huber

On 09/12/16 21:26, Kevin Kirspel wrote:

@@ -280,10 +298,14 @@ start_worker(test_context *ctx)
  static void
  set_non_blocking(int fd, int enable)
  {
-   int rv;
+   int flags = fcntl(fd, F_GETFL, 0);
  
-	rv = ioctl(fd, FIONBIO, &enable);

-   assert(rv == 0);
+   if (enable ) {
+   fcntl(fd, F_SETFL, flags | O_NONBLOCK);
+   }
+   else{
+   fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
+   }
  }


All return values should be checked in the tests. Please use BSD style 
for the { }.


Please remove all white-space changes of original BSD files.

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel