[haiku-commits] haiku: hrev47212 - in src/add-ons/kernel: drivers/disk/usb/usb_disk generic/scsi_periph generic/ata_adapter bus_managers/scsi bus_managers/usb

  • From: pdziepak@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 9 May 2014 01:12:35 +0200 (CEST)

hrev47212 adds 4 changesets to branch 'master'
old head: edc6d1558e885df793ab3f4d5bc66e145506da0f
new head: 680ca3b13d52422ea165f09173c82c8ba26e73c5
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=680ca3b+%5Eedc6d15

----------------------------------------------------------------------------

578558b: add-ons/kernel: add spaces between literals and identifiers
  
  Due to introduction of user-defined suffixes C++11 requires that there
  is a space between literal and identifier to avoid ambiguity.
  
  This patch makes the whole kernel build successfully with C++11.

2c00124: build: when using gcc4 build kernel with c++11

fad7246: runtime_loader: fix CID 1211997, proper corner case handling

680ca3b: runtime_loader: fix CID 1211995, improve generation counting
  
  There is no need to increase generation counter each time new DSO is
  registered.

                                    [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

17 files changed, 56 insertions(+), 44 deletions(-)
build/jam/ArchitectureRules                            |  4 ++++
src/add-ons/kernel/bus_managers/scsi/wrapper.h         | 12 ++++++------
src/add-ons/kernel/bus_managers/usb/usb.cpp            |  2 +-
src/add-ons/kernel/bus_managers/usb/usb_private.h      |  6 +++---
src/add-ons/kernel/busses/usb/ehci.cpp                 |  2 +-
src/add-ons/kernel/cpu/x86/generic_x86.cpp             |  2 +-
.../kernel/drivers/disk/usb/usb_disk/usb_disk.cpp      | 14 +++++++-------
.../kernel/drivers/disk/usb/usb_floppy/usb_disk.cpp    |  6 +++---
.../kernel/drivers/ports/usb_serial/Tracing.cpp        |  2 +-
src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp |  6 +++---
.../layers/write_overlay/write_overlay.cpp             |  2 +-
src/add-ons/kernel/generic/ata_adapter/wrapper.h       | 12 ++++++------
src/add-ons/kernel/generic/scsi_periph/wrapper.h       | 12 ++++++------
src/system/kernel/arch/x86/Jamfile                     |  2 --
src/system/runtime_loader/elf_symbol_lookup.h          |  4 +++-
src/system/runtime_loader/elf_tls.cpp                  | 10 +++++++++-
src/system/runtime_loader/elf_tls.h                    |  2 +-

############################################################################

Commit:      578558b439867f563d44d168a29223f76d6bb23e
URL:         http://cgit.haiku-os.org/haiku/commit/?id=578558b
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Wed May  7 17:16:39 2014 UTC

add-ons/kernel: add spaces between literals and identifiers

Due to introduction of user-defined suffixes C++11 requires that there
is a space between literal and identifier to avoid ambiguity.

This patch makes the whole kernel build successfully with C++11.

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/bus_managers/scsi/wrapper.h 
b/src/add-ons/kernel/bus_managers/scsi/wrapper.h
index 0265b5c..531f0db 100644
--- a/src/add-ons/kernel/bus_managers/scsi/wrapper.h
+++ b/src/add-ons/kernel/bus_managers/scsi/wrapper.h
@@ -59,32 +59,32 @@
 
 #define SHOW_FLOW(seriousness, format, param...) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_FLOW0(seriousness, format) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO(seriousness, format, param...) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO0(seriousness, format) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_ERROR(seriousness, format, param...) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 #define SHOW_ERROR0(seriousness, format) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 #endif /* _WRAPPER_H */
diff --git a/src/add-ons/kernel/bus_managers/usb/usb.cpp 
b/src/add-ons/kernel/bus_managers/usb/usb.cpp
index 83cf8a9..d937897 100644
--- a/src/add-ons/kernel/bus_managers/usb/usb.cpp
+++ b/src/add-ons/kernel/bus_managers/usb/usb.cpp
@@ -312,7 +312,7 @@ status_t
 queue_bulk(usb_pipe pipe, void *data, size_t dataLength,
        usb_callback_func callback, void *callbackCookie)
 {
-       TRACE_MODULE("queue_bulk(%"B_PRId32 ", %p, %" B_PRIuSIZE ", %p, %p)\n",
+       TRACE_MODULE("queue_bulk(%" B_PRId32 ", %p, %" B_PRIuSIZE ", %p, %p)\n",
                pipe, data, dataLength, callback, callbackCookie);
        Object *object = gUSBStack->GetObject(pipe);
        if (!object || (object->Type() & USB_OBJECT_BULK_PIPE) == 0)
diff --git a/src/add-ons/kernel/bus_managers/usb/usb_private.h 
b/src/add-ons/kernel/bus_managers/usb/usb_private.h
index e3f38a3..13c189b 100644
--- a/src/add-ons/kernel/bus_managers/usb/usb_private.h
+++ b/src/add-ons/kernel/bus_managers/usb/usb_private.h
@@ -25,7 +25,7 @@
 #ifdef TRACE_USB
 #define TRACE(x...)                                    TRACE_OUTPUT(this, "", 
x)
 #define TRACE_STATIC(x, y...)          TRACE_OUTPUT(x, "", y)
-#define TRACE_MODULE(x...)                     dprintf("usb "USB_MODULE_NAME": 
"x)
+#define TRACE_MODULE(x...)                     dprintf("usb " USB_MODULE_NAME 
": " x)
 #else
 #define TRACE(x...)                                    /* nothing */
 #define TRACE_STATIC(x, y...)          /* nothing */
@@ -34,8 +34,8 @@
 
 #define TRACE_ALWAYS(x...)                     TRACE_OUTPUT(this, "", x)
 #define TRACE_ERROR(x...)                      TRACE_OUTPUT(this, "error ", x)
-#define TRACE_MODULE_ALWAYS(x...)      dprintf("usb "USB_MODULE_NAME": "x)
-#define TRACE_MODULE_ERROR(x...)       dprintf("usb "USB_MODULE_NAME": "x)
+#define TRACE_MODULE_ALWAYS(x...)      dprintf("usb " USB_MODULE_NAME ": " x)
+#define TRACE_MODULE_ERROR(x...)       dprintf("usb " USB_MODULE_NAME ": " x)
 
 class Hub;
 class Stack;
diff --git a/src/add-ons/kernel/busses/usb/ehci.cpp 
b/src/add-ons/kernel/busses/usb/ehci.cpp
index c6b7bbd..aeed838 100644
--- a/src/add-ons/kernel/busses/usb/ehci.cpp
+++ b/src/add-ons/kernel/busses/usb/ehci.cpp
@@ -69,7 +69,7 @@ print_descriptor_chain(ehci_qtd *descriptor)
        while (descriptor) {
                dprintf(" %08" B_PRIx32 " n%08" B_PRIx32 " a%08" B_PRIx32 " 
t%08" B_PRIx32
                        " %08" B_PRIx32 " %08" B_PRIx32 " %08" B_PRIx32 " %08" 
B_PRIx32
-                       " %08" B_PRIx32 " s%"B_PRIuSIZE "\n",
+                       " %08" B_PRIx32 " s%" B_PRIuSIZE "\n",
                        descriptor->this_phy, descriptor->next_phy,
                        descriptor->alt_next_phy, descriptor->token,
                        descriptor->buffer_phy[0], descriptor->buffer_phy[1],
diff --git a/src/add-ons/kernel/cpu/x86/generic_x86.cpp 
b/src/add-ons/kernel/cpu/x86/generic_x86.cpp
index 94e6a1b..1edd1fd 100644
--- a/src/add-ons/kernel/cpu/x86/generic_x86.cpp
+++ b/src/add-ons/kernel/cpu/x86/generic_x86.cpp
@@ -21,7 +21,7 @@
 
 //#define TRACE_MTRR
 #ifdef TRACE_MTRR
-#      define TRACE(x...)      dprintf("mtrr: "x)
+#      define TRACE(x...)      dprintf("mtrr: " x)
 #else
 #      define TRACE(x...)      /* nothing */
 #endif
diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp 
b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
index 5da2965..0c0a7e4 100644
--- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
+++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
@@ -29,11 +29,11 @@
 
 //#define TRACE_USB_DISK
 #ifdef TRACE_USB_DISK
-#define TRACE(x...)                    dprintf(DRIVER_NAME": "x)
-#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME": "x)
+#define TRACE(x...)                    dprintf(DRIVER_NAME ": " x)
+#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME ": " x)
 #else
 #define TRACE(x...)                    /* nothing */
-#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME": "x)
+#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME ": " x)
 #endif
 
 
@@ -796,7 +796,7 @@ usb_disk_device_added(usb_device newDevice, void **cookie)
                result = usb_disk_inquiry(lun);
                err_act action = err_act_ok;
                for (uint32 tries = 0; tries < 8; tries++) {
-                       TRACE("usb lun %"B_PRIu8" inquiry attempt %"B_PRIu32" 
begin\n",
+                       TRACE("usb lun %" B_PRIu8 " inquiry attempt %" B_PRIu32 
" begin\n",
                                i, tries);
                        status_t ready = usb_disk_test_unit_ready(lun, &action);
                        if (ready == B_OK || ready == B_DEV_NO_MEDIA
@@ -808,18 +808,18 @@ usb_disk_device_added(usb_device newDevice, void **cookie)
                                else if (/*usb_disk_mode_sense(lun) != 
B_OK*/true)
                                        lun->write_protected = false;
 
-                               TRACE("usb lun %"B_PRIu8" ready. write 
protected = %c%s\n", i,
+                               TRACE("usb lun %" B_PRIu8 " ready. write 
protected = %c%s\n", i,
                                        lun->write_protected ? 'y' : 'n',
                                        ready == B_DEV_NO_MEDIA ? " (no media 
inserted)" : "");
 
                                break;
                        }
-                       TRACE("usb lun %"B_PRIu8" inquiry attempt %"B_PRIu32" 
failed\n",
+                       TRACE("usb lun %" B_PRIu8 " inquiry attempt %" B_PRIu32 
" failed\n",
                                i, tries);
                        if (action != err_act_retry && action != 
err_act_many_retries)
                                break;
                        bigtime_t snoozeTime = 1000000 * tries;
-                       TRACE("snoozing %"B_PRIu64" microseconds for usb lun\n",
+                       TRACE("snoozing %" B_PRIu64 " microseconds for usb 
lun\n",
                                snoozeTime);
                        snooze(snoozeTime);
                }
diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_floppy/usb_disk.cpp 
b/src/add-ons/kernel/drivers/disk/usb/usb_floppy/usb_disk.cpp
index b24a77c..3f5380c 100644
--- a/src/add-ons/kernel/drivers/disk/usb/usb_floppy/usb_disk.cpp
+++ b/src/add-ons/kernel/drivers/disk/usb/usb_floppy/usb_disk.cpp
@@ -23,11 +23,11 @@
 
 //#define TRACE_USB_DISK
 #ifdef TRACE_USB_DISK
-#define TRACE(x...)                    dprintf("\x1B[35m"DRIVER_NAME"\x1B[0m: 
"x)
-#define TRACE_ALWAYS(x...)     dprintf("\x1B[35m"DRIVER_NAME"\x1B[0m: "x)
+#define TRACE(x...)                    dprintf("\x1B[35m" DRIVER_NAME 
"\x1B[0m: " x)
+#define TRACE_ALWAYS(x...)     dprintf("\x1B[35m" DRIVER_NAME "\x1B[0m: " x)
 #else
 #define TRACE(x...)                    /* nothing */
-#define TRACE_ALWAYS(x...)     dprintf("\x1B[35m"DRIVER_NAME"\x1B[0m: "x)
+#define TRACE_ALWAYS(x...)     dprintf("\x1B[35m" DRIVER_NAME "\x1B[0m: " x)
 #endif
 
 
diff --git a/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp 
b/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
index 4fcc5fa..ac8488c 100644
--- a/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
+++ b/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
@@ -81,7 +81,7 @@ usb_serial_trace(bool force, const char *format, ...)
        static char buffer[1024];
        char *bufferPointer = buffer;
        if (!gLogToFile) {
-               const char *prefix = "\33[32m"DRIVER_NAME":\33[0m ";
+               const char *prefix = "\33[32m" DRIVER_NAME ":\33[0m ";
                strcpy(bufferPointer, prefix);
                bufferPointer += strlen(prefix);
        }
diff --git a/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp 
b/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
index c690db3..4e67a22 100644
--- a/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
+++ b/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
@@ -31,11 +31,11 @@
 
 // #define TRACE_USB_PRINTER 1
 #ifdef TRACE_USB_PRINTER
-#define TRACE(x...)                    dprintf(DRIVER_NAME": "x)
-#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME": "x)
+#define TRACE(x...)                    dprintf(DRIVER_NAME ": " x)
+#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME ": " x)
 #else
 #define TRACE(x...)                    /* nothing */
-#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME": "x)
+#define TRACE_ALWAYS(x...)     dprintf(DRIVER_NAME ": " x)
 #endif
 
 
diff --git 
a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp 
b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
index 5081db1..e49074a 100644
--- a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
+++ b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
@@ -2580,7 +2580,7 @@ overlay_std_ops(int32 op, ...)
 
 static file_system_module_info sOverlayFileSystem = {
        {
-               "file_systems/write_overlay"B_CURRENT_FS_API_VERSION,
+               "file_systems/write_overlay" B_CURRENT_FS_API_VERSION,
                0,
                overlay_std_ops,
        },
diff --git a/src/add-ons/kernel/generic/ata_adapter/wrapper.h 
b/src/add-ons/kernel/generic/ata_adapter/wrapper.h
index 07a659b..2518238 100644
--- a/src/add-ons/kernel/generic/ata_adapter/wrapper.h
+++ b/src/add-ons/kernel/generic/ata_adapter/wrapper.h
@@ -59,32 +59,32 @@
 
 #define SHOW_FLOW(seriousness, format, param...) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_FLOW0(seriousness, format) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO(seriousness, format, param...) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO0(seriousness, format) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_ERROR(seriousness, format, param...) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 #define SHOW_ERROR0(seriousness, format) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 #endif /* _BENAPHORE_H */
diff --git a/src/add-ons/kernel/generic/scsi_periph/wrapper.h 
b/src/add-ons/kernel/generic/scsi_periph/wrapper.h
index bc363f1..1d9663e 100644
--- a/src/add-ons/kernel/generic/scsi_periph/wrapper.h
+++ b/src/add-ons/kernel/generic/scsi_periph/wrapper.h
@@ -52,32 +52,32 @@
 
 #define SHOW_FLOW(seriousness, format, param...) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_FLOW0(seriousness, format) \
        do { if( seriousness <= debug_level_flow && seriousness <= 
DEBUG_MAX_LEVEL_FLOW ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO(seriousness, format, param...) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_INFO0(seriousness, format) \
        do { if( seriousness <= debug_level_info && seriousness <= 
DEBUG_MAX_LEVEL_INFO ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT \
        }} while( 0 )
 
 #define SHOW_ERROR(seriousness, format, param...) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME, param ); 
DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 #define SHOW_ERROR0(seriousness, format) \
        do { if( seriousness <= debug_level_error && seriousness <= 
DEBUG_MAX_LEVEL_ERROR ) { \
-               dprintf( "%s%s: "format"\n", FUNC_NAME); DEBUG_WAIT_ERROR \
+               dprintf("%s%s: " format "\n", FUNC_NAME); DEBUG_WAIT_ERROR \
        }} while( 0 )
 
 

############################################################################

Commit:      2c001246a0d7c42ecee24642a814c4f6b4fe7451
URL:         http://cgit.haiku-os.org/haiku/commit/?id=2c00124
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Wed May  7 17:19:18 2014 UTC

build: when using gcc4 build kernel with c++11

----------------------------------------------------------------------------

diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules
index 506055e..0c3200f 100644
--- a/build/jam/ArchitectureRules
+++ b/build/jam/ArchitectureRules
@@ -403,6 +403,10 @@ rule KernelArchitectureSetup architecture
        HAIKU_BOOT_C++FLAGS = $(HAIKU_C++FLAGS_$(architecture)) $(g++BaseFlags) 
;
        HAIKU_BOOT_LINKFLAGS = ;
 
+       if $(gccVersion[1]) >= 4 {
+               HAIKU_KERNEL_C++FLAGS += -std=gnu++11 ;
+       }
+
        HAIKU_KERNEL_PIC_CCFLAGS = -fno-pic ;
        HAIKU_KERNEL_PIC_LINKFLAGS = ;
        HAIKU_KERNEL_ADDON_LINKFLAGS = ;
diff --git a/src/system/kernel/arch/x86/Jamfile 
b/src/system/kernel/arch/x86/Jamfile
index ee6d93b..3941e18 100644
--- a/src/system/kernel/arch/x86/Jamfile
+++ b/src/system/kernel/arch/x86/Jamfile
@@ -17,8 +17,6 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) timers ] ;
 
 local archSpecificSources ;
 if $(TARGET_ARCH) = x86_64 {
-       SubDirC++Flags -std=gnu++11 ;
-
        SEARCH_SOURCE += [ FDirName $(SUBDIR) 64 ] ;
        SEARCH_SOURCE += [ FDirName $(SUBDIR) paging 64bit ] ;
 

############################################################################

Commit:      fad7246fcdc82a704e425f7f1bface9bee73484a
URL:         http://cgit.haiku-os.org/haiku/commit/?id=fad7246
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Thu May  8 18:25:30 2014 UTC

runtime_loader: fix CID 1211997, proper corner case handling

----------------------------------------------------------------------------

diff --git a/src/system/runtime_loader/elf_symbol_lookup.h 
b/src/system/runtime_loader/elf_symbol_lookup.h
index 497fa12..433c9ab 100644
--- a/src/system/runtime_loader/elf_symbol_lookup.h
+++ b/src/system/runtime_loader/elf_symbol_lookup.h
@@ -60,6 +60,7 @@ struct SymbolLookupCache {
                :
                fTableSize(image->symhash[1]),
                fValues(NULL),
+               fDSOs(NULL),
                fValuesResolved(NULL)
        {
                if (fTableSize > 0) {
@@ -70,9 +71,10 @@ struct SymbolLookupCache {
                        fValuesResolved = (uint32*)malloc(4 * elementCount);
                        memset(fValuesResolved, 0, 4 * elementCount);
 
-                       if (fValues == NULL || fValuesResolved == NULL) {
+                       if (fValues == NULL || fDSOs == NULL || fValuesResolved 
== NULL) {
                                free(fValuesResolved);
                                free(fValues);
+                               free(fDSOs);
                                fTableSize = 0;
                        }
                }

############################################################################

Revision:    hrev47212
Commit:      680ca3b13d52422ea165f09173c82c8ba26e73c5
URL:         http://cgit.haiku-os.org/haiku/commit/?id=680ca3b
Author:      Pawel Dziepak <pdziepak@xxxxxxxxxxx>
Date:        Thu May  8 21:05:31 2014 UTC

runtime_loader: fix CID 1211995, improve generation counting

There is no need to increase generation counter each time new DSO is
registered.

----------------------------------------------------------------------------

diff --git a/src/system/runtime_loader/elf_tls.cpp 
b/src/system/runtime_loader/elf_tls.cpp
index 3a17f73..40bc66c 100644
--- a/src/system/runtime_loader/elf_tls.cpp
+++ b/src/system/runtime_loader/elf_tls.cpp
@@ -116,7 +116,7 @@ TLSBlockTemplates::Register(const TLSBlockTemplate& block)
                fTemplates.push_back(block);
        }
 
-       fTemplates[dso].SetGeneration(fGeneration++);
+       fTemplates[dso].SetGeneration(fGeneration);
        return dso;
 }
 
@@ -127,6 +127,7 @@ TLSBlockTemplates::Unregister(unsigned dso)
        if (dso == unsigned(-1))
                return;
 
+       fGeneration++;
        fFreeDSOs.push_back(dso);
 }
 
@@ -155,6 +156,13 @@ TLSBlockTemplates::CreateBlock(unsigned dso)
 }
 
 
+TLSBlockTemplates::TLSBlockTemplates()
+       :
+       fGeneration(0)
+{
+}
+
+
 TLSBlock::TLSBlock()
        :
        fPointer(NULL)
diff --git a/src/system/runtime_loader/elf_tls.h 
b/src/system/runtime_loader/elf_tls.h
index 0fa7a07..9e8d859 100644
--- a/src/system/runtime_loader/elf_tls.h
+++ b/src/system/runtime_loader/elf_tls.h
@@ -48,7 +48,7 @@ public:
                        TLSBlock        CreateBlock(unsigned dso);
 
 private:
-                                               TLSBlockTemplates() { }
+       inline                          TLSBlockTemplates();
 
        static  TLSBlockTemplates*      fInstance;
 


Other related posts:

  • » [haiku-commits] haiku: hrev47212 - in src/add-ons/kernel: drivers/disk/usb/usb_disk generic/scsi_periph generic/ata_adapter bus_managers/scsi bus_managers/usb - pdziepak