Custom Query (245 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (52 - 54 of 245)

Ticket Resolution Summary Owner Reporter
#70 fixed Demangle function names for omf debug info bird Yuri Dario
Description

This code is courtesy of froloff and slightly modified by me.

Index: emxomf.smak
===================================================================
--- emxomf.smak	(revision 2592)
+++ emxomf.smak	(working copy)
@@ -8,6 +8,7 @@
 .TSRC	:= $(addprefix src/emxomf/,emxomf.c stabshll.c grow.c)
 .TCF	:= $(CFLAGS.DEF.VERSION)
 .TDEP	:= @O@libomflib$A
+.TLDF	:= -liberty
 include mkexe.smak
 
 .TARGET	:= emxomfar.exe
Index: stabshll.c
===================================================================
--- stabshll.c	(revision 2592)
+++ stabshll.c	(working copy)
@@ -35,6 +35,7 @@
 #include "grow.h"
 #include "stabshll.h"
 
+#include <demangle.h>
 
 /*******************************************************************************
 *   Defined Constants And Macros                                               *
@@ -3325,8 +3326,18 @@
     abort ();
   n = p - str;
 
-  /** @todo name demangling */
-  name = strpool_addn (str_pool, str, n);
+  {
+     char mangled[1024];
+     char* demangled;
+     memcpy(mangled, str, n);
+     mangled[n]= '\0';
+     demangled = cplus_demangle (mangled, DMGL_ANSI | DMGL_PARAMS);
+     if (demangled != NULL)
+      name = strpool_addn (str_pool, demangled, strlen(demangled));
+    else
+      name = strpool_addn (str_pool, str, n);
+  }
+
   proc_start_addr = symbol->n_value;
 
   /* now let's see if there is a memfunc for this name. */

#71 fixed libc: Incorrect fmutex padding in FILE bird bird
Description

_fcloseall (and probably others) fails (crashes) because of the __u.__rsem_ersatz member of FILE is 4 bytes too small. Thanks to froloff for pointing out the crash.

#76 fixed libc: fork() failed when using dlopen() bird froloff
Description

If process load module dynamically (dlopen) after that fork will fail.

I examine the situation a bit and divide it into 3 cases

  1. process dlopen() module then forking. Child process failed during initial fork processing.
  2. process dlopen() module, dlclose() module then forking. Parent process trapped during fork processing.
  3. process dlopen() module, dlclose() module, dlopen() module again then forking. Parent process goes endless loop in forkParValidateModules() during fork processing.

I'll send testcase and libc logs via email.

Note. I didn't find code deregistering module from modules chain - conj procedure to __libc_ForkRegisterModule().

Note: See TracQuery for help on using queries.