[ros-diffs] [tkreuzer] 37282: give rsym it's own directory

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Mon Nov 10 15:55:24 CET 2008


Author: tkreuzer
Date: Mon Nov 10 08:55:23 2008
New Revision: 37282

URL: http://svn.reactos.org/svn/reactos?rev=37282&view=rev
Log:
give rsym it's own directory


Added:
    branches/ros-amd64-bringup/reactos/tools/rsym/   (with props)
    branches/ros-amd64-bringup/reactos/tools/rsym/rsym.c   (props changed)
      - copied unchanged from r37018, branches/ros-amd64-bringup/reactos/tools/rsym.c
    branches/ros-amd64-bringup/reactos/tools/rsym/rsym.h   (props changed)
      - copied unchanged from r37018, branches/ros-amd64-bringup/reactos/tools/rsym.h
    branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak   (contents, props changed)
      - copied, changed from r37018, branches/ros-amd64-bringup/reactos/tools/rsym.mak
    branches/ros-amd64-bringup/reactos/tools/rsym/rsym_common.c   (props changed)
      - copied unchanged from r37018, branches/ros-amd64-bringup/reactos/tools/rsym_common.c
Removed:
    branches/ros-amd64-bringup/reactos/tools/rsym.c
    branches/ros-amd64-bringup/reactos/tools/rsym.h
    branches/ros-amd64-bringup/reactos/tools/rsym.mak
    branches/ros-amd64-bringup/reactos/tools/rsym_common.c
Modified:
    branches/ros-amd64-bringup/reactos/tools/tools.mak

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Mon Nov 10 08:55:23 2008
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/
------------------------------------------------------------------------------
    tsvn:logminsize = 10

Removed: branches/ros-amd64-bringup/reactos/tools/rsym.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/rsym.c?rev=37281&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/rsym.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/rsym.c (removed)
@@ -1,978 +1,0 @@
-/*
- * Usage: rsym input-file output-file
- *
- * There are two sources of information: the .stab/.stabstr
- * sections of the executable and the COFF symbol table. Most
- * of the information is in the .stab/.stabstr sections.
- * However, most of our asm files don't contain .stab directives,
- * so routines implemented in assembler won't show up in the
- * .stab section. They are present in the COFF symbol table.
- * So, we mostly use the .stab/.stabstr sections, but we augment
- * the info there with info from the COFF symbol table when
- * possible.
- *
- * This is a tool and is compiled using the host compiler,
- * i.e. on Linux gcc and not mingw-gcc (cross-compiler).
- * Therefore we can't include SDK headers and we have to
- * duplicate some definitions here.
- * Also note that the internal functions are "old C-style",
- * returning an int, where a return of 0 means success and
- * non-zero is failure.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include "rsym.h"
-
-static int
-CompareSymEntry(const PROSSYM_ENTRY SymEntry1, const PROSSYM_ENTRY SymEntry2)
-{
-  if (SymEntry1->Address < SymEntry2->Address)
-    {
-      return -1;
-    }
-
-  if (SymEntry2->Address < SymEntry1->Address)
-    {
-      return +1;
-    }
-
-  return 0;
-}
-
-static int
-GetStabInfo(void *FileData, PIMAGE_FILE_HEADER PEFileHeader,
-            PIMAGE_SECTION_HEADER PESectionHeaders,
-            ULONG *StabSymbolsLength, void **StabSymbolsBase,
-            ULONG *StabStringsLength, void **StabStringsBase)
-{
-  ULONG Idx;
-
-  /* Load .stab and .stabstr sections if available */
-  *StabSymbolsBase = NULL;
-  *StabSymbolsLength = 0;
-  *StabStringsBase = NULL;
-  *StabStringsLength = 0;
-
-  for (Idx = 0; Idx < PEFileHeader->NumberOfSections; Idx++)
-    {
-      /* printf("section: '%.08s'\n", PESectionHeaders[Idx].Name); */
-      if ((strncmp((char*)PESectionHeaders[Idx].Name, ".stab", 5) == 0)
-        && (PESectionHeaders[Idx].Name[5] == 0))
-        {
-           /* printf(".stab section found. Size %d\n",
-               PESectionHeaders[Idx].SizeOfRawData); */
-
-           *StabSymbolsLength = PESectionHeaders[Idx].SizeOfRawData;
-           *StabSymbolsBase = (void *)((char *) FileData + PESectionHeaders[Idx].PointerToRawData);
-        }
-
-      if (strncmp((char*)PESectionHeaders[Idx].Name, ".stabstr", 8) == 0)
-        {
-           /* printf(".stabstr section found. Size %d\n",
-               PESectionHeaders[Idx].SizeOfRawData); */
-
-           *StabStringsLength = PESectionHeaders[Idx].SizeOfRawData;
-           *StabStringsBase = (void *)((char *) FileData + PESectionHeaders[Idx].PointerToRawData);
-        }
-    }
-
-  return 0;
-}
-
-static int
-GetCoffInfo(void *FileData, PIMAGE_FILE_HEADER PEFileHeader,
-            PIMAGE_SECTION_HEADER PESectionHeaders,
-            ULONG *CoffSymbolsLength, void **CoffSymbolsBase,
-            ULONG *CoffStringsLength, void **CoffStringsBase)
-{
-
-  if (0 == PEFileHeader->PointerToSymbolTable || 0 == PEFileHeader->NumberOfSymbols)
-    {
-      /* No COFF symbol table */
-      *CoffSymbolsLength = 0;
-      *CoffStringsLength = 0;
-    }
-  else
-    {
-      *CoffSymbolsLength = PEFileHeader->NumberOfSymbols * sizeof(COFF_SYMENT);
-      *CoffSymbolsBase = (void *)((char *) FileData + PEFileHeader->PointerToSymbolTable);
-      *CoffStringsLength = *((ULONG *) ((char *) *CoffSymbolsBase + *CoffSymbolsLength));
-      *CoffStringsBase = (void *)((char *) *CoffSymbolsBase + *CoffSymbolsLength);
-    }
-
-  return 0;
-}
-
-static ULONG
-FindOrAddString(char *StringToFind, ULONG *StringsLength, void *StringsBase)
-{
-  char *Search, *End;
-
-  Search = (char *) StringsBase;
-  End = Search + *StringsLength;
-
-  while (Search < End)
-    {
-      if (0 == strcmp(Search, StringToFind))
-        {
-          return Search - (char *) StringsBase;
-        }
-      Search += strlen(Search) + 1;
-    }
-
-  strcpy(Search, StringToFind);
-  *StringsLength += strlen(StringToFind) + 1;
-
-  return Search - (char *) StringsBase;
-}
-
-static int
-ConvertStabs(ULONG *SymbolsCount, PROSSYM_ENTRY *SymbolsBase,
-             ULONG *StringsLength, void *StringsBase,
-             ULONG StabSymbolsLength, void *StabSymbolsBase,
-             ULONG StabStringsLength, void *StabStringsBase,
-             ULONG_PTR ImageBase, PIMAGE_FILE_HEADER PEFileHeader,
-             PIMAGE_SECTION_HEADER PESectionHeaders)
-{
-  PSTAB_ENTRY StabEntry;
-  ULONG Count, i;
-  ULONG_PTR Address, LastFunctionAddress;
-  int First = 1;
-  char *Name;
-  ULONG NameLen;
-  char FuncName[256];
-  PROSSYM_ENTRY Current;
-
-  StabEntry = StabSymbolsBase;
-  Count = StabSymbolsLength / sizeof(STAB_ENTRY);
-  *SymbolsCount = 0;
-  if (Count == 0)
-    {
-      /* No symbol info */
-      *SymbolsBase = NULL;
-      return 0;
-    }
-
-  *SymbolsBase = malloc(Count * sizeof(ROSSYM_ENTRY));
-  if (NULL == *SymbolsBase)
-    {
-      fprintf(stderr, "Failed to allocate memory for converted .stab symbols\n");
-      return 1;
-    }
-  Current = *SymbolsBase;
-  memset ( Current, 0, sizeof(*Current) );
-
-  LastFunctionAddress = 0;
-  for (i = 0; i < Count; i++)
-    {
-      if ( 0 == LastFunctionAddress )
-        {
-          Address = StabEntry[i].n_value - ImageBase;
-        }
-      else
-        {
-          Address = LastFunctionAddress + StabEntry[i].n_value;
-        }
-      switch (StabEntry[i].n_type)
-        {
-          case N_SO:
-          case N_SOL:
-          case N_BINCL:
-            Name = (char *) StabStringsBase + StabEntry[i].n_strx;
-            if (StabStringsLength < StabEntry[i].n_strx
-                ||'\0' == *Name || '/' == Name[strlen(Name) - 1]
-                || '\\' == Name[strlen(Name) - 1]
-                || StabEntry[i].n_value < ImageBase)
-              {
-                continue;
-              }
-            if ( First || Address != Current->Address )
-              {
-                if ( !First )
-                  {
-                    memset ( ++Current, 0, sizeof(*Current) );
-                    Current->FunctionOffset = Current[-1].FunctionOffset;
-                  }
-                else
-                  First = 0;
-                Current->Address = Address;
-              }
-            Current->FileOffset = FindOrAddString((char *)StabStringsBase
-                                                  + StabEntry[i].n_strx,
-                                                  StringsLength,
-                                                  StringsBase);
-            break;
-          case N_FUN:
-            if (0 == StabEntry[i].n_desc || StabEntry[i].n_value < ImageBase)
-              {
-                LastFunctionAddress = 0; /* line # 0 = end of function */
-                continue;
-              }
-            if ( First || Address != Current->Address )
-              {
-                if ( !First )
-                  memset ( ++Current, 0, sizeof(*Current) );
-                else
-                  First = 0;
-                Current->Address = Address;
-                Current->FileOffset = Current[-1].FileOffset;
-              }
-            Name = (char *) StabStringsBase + StabEntry[i].n_strx;
-            NameLen = strcspn(Name, ":");
-            if (sizeof(FuncName) <= NameLen)
-              {
-                free(*SymbolsBase);
-                fprintf(stderr, "Function name too long\n");
-                return 1;
-              }
-            memcpy(FuncName, Name, NameLen);
-            FuncName[NameLen] = '\0';
-            Current->FunctionOffset = FindOrAddString(FuncName,
-                                                      StringsLength,
-                                                      StringsBase);
-            Current->SourceLine = 0;
-            LastFunctionAddress = Address;
-            break;
-          case N_SLINE:
-            if ( First || Address != Current->Address )
-              {
-                if ( !First )
-                  {
-                    memset ( ++Current, 0, sizeof(*Current) );
-                    Current->FileOffset = Current[-1].FileOffset;
-                    Current->FunctionOffset = Current[-1].FunctionOffset;
-                  }
-                else
-                  First = 0;
-                Current->Address = Address;
-              }
-            Current->SourceLine = StabEntry[i].n_desc;
-            break;
-          default:
-            continue;
-        }
-    }
-  *SymbolsCount = (Current - *SymbolsBase + 1);
-
-  qsort(*SymbolsBase, *SymbolsCount, sizeof(ROSSYM_ENTRY), (int (*)(const void *, const void *)) CompareSymEntry);
-
-  return 0;
-}
-
-static int
-ConvertCoffs(ULONG *SymbolsCount, PROSSYM_ENTRY *SymbolsBase,
-             ULONG *StringsLength, void *StringsBase,
-             ULONG CoffSymbolsLength, void *CoffSymbolsBase,
-             ULONG CoffStringsLength, void *CoffStringsBase,
-             ULONG_PTR ImageBase, PIMAGE_FILE_HEADER PEFileHeader,
-             PIMAGE_SECTION_HEADER PESectionHeaders)
-{
-  ULONG Count, i;
-  PCOFF_SYMENT CoffEntry;
-  char FuncName[256];
-  char *p;
-  PROSSYM_ENTRY Current;
-
-  CoffEntry = (PCOFF_SYMENT) CoffSymbolsBase;
-  Count = CoffSymbolsLength / sizeof(COFF_SYMENT);
-  *SymbolsBase = malloc(Count * sizeof(ROSSYM_ENTRY));
-  if (NULL == *SymbolsBase)
-    {
-      fprintf(stderr, "Unable to allocate memory for converted COFF symbols\n");
-      return 1;
-    }
-  *SymbolsCount = 0;
-  Current = *SymbolsBase;
-
-  for (i = 0; i < Count; i++)
-    {
-      if (ISFCN(CoffEntry[i].e_type) || C_EXT == CoffEntry[i].e_sclass)
-        {
-          Current->Address = CoffEntry[i].e_value;
-          if (0 < CoffEntry[i].e_scnum)
-            {
-              if (PEFileHeader->NumberOfSections < CoffEntry[i].e_scnum)
-                {
-                  free(*SymbolsBase);
-                  fprintf(stderr, "Invalid section number %d in COFF symbols (only %d sections present)\n",
-                          CoffEntry[i].e_scnum, PEFileHeader->NumberOfSections);
-                  return 1;
-                }
-              Current->Address += PESectionHeaders[CoffEntry[i].e_scnum - 1].VirtualAddress;
-            }
-          Current->FileOffset = 0;
-          if (0 == CoffEntry[i].e.e.e_zeroes)
-            {
-              if (sizeof(FuncName) <= strlen((char *) CoffStringsBase + CoffEntry[i].e.e.e_offset))
-                {
-                  free(*SymbolsBase);
-                  fprintf(stderr, "Function name too long\n");
-                  return 1;
-                }
-              strcpy(FuncName, (char *) CoffStringsBase + CoffEntry[i].e.e.e_offset);
-            }
-          else
-            {
-              memcpy(FuncName, CoffEntry[i].e.e_name, E_SYMNMLEN);
-              FuncName[E_SYMNMLEN] = '\0';
-            }
-
-          /* Name demangling: stdcall */
-          p = strrchr(FuncName, '@');
-          if (NULL != p)
-            {
-              *p = '\0';
-            }
-          p = ('_' == FuncName[0] || '@' == FuncName[0] ? FuncName + 1 : FuncName);
-          Current->FunctionOffset = FindOrAddString(p,
-                                                                         StringsLength,
-                                                                         StringsBase);
-          Current->SourceLine = 0;
-          memset ( ++Current, 0, sizeof(*Current) );
-        }
-      i += CoffEntry[i].e_numaux;
-    }
-
-  *SymbolsCount = (Current - *SymbolsBase + 1);
-  qsort(*SymbolsBase, *SymbolsCount, sizeof(ROSSYM_ENTRY), (int (*)(const void *, const void *)) CompareSymEntry);
-
-  return 0;
-}
-
-static int
-MergeStabsAndCoffs(ULONG *MergedSymbolCount, PROSSYM_ENTRY *MergedSymbols,
-                   ULONG StabSymbolsCount, PROSSYM_ENTRY StabSymbols,
-                   ULONG CoffSymbolsCount, PROSSYM_ENTRY CoffSymbols)
-{
-  ULONG StabIndex, j;
-  ULONG CoffIndex;
-  ULONG_PTR StabFunctionStartAddress;
-  ULONG StabFunctionStringOffset, NewStabFunctionStringOffset;
-
-  *MergedSymbolCount = 0;
-  if (StabSymbolsCount == 0)
-    {
-      *MergedSymbols = NULL;
-      return 0;
-    }
-  *MergedSymbols = malloc(StabSymbolsCount * sizeof(ROSSYM_ENTRY));
-  if (NULL == *MergedSymbols)
-    {
-      fprintf(stderr, "Unable to allocate memory for merged symbols\n");
-      return 1;
-    }
-
-  StabFunctionStartAddress = 0;
-  StabFunctionStringOffset = 0;
-  CoffIndex = 0;
-  for (StabIndex = 0; StabIndex < StabSymbolsCount; StabIndex++)
-    {
-      (*MergedSymbols)[*MergedSymbolCount] = StabSymbols[StabIndex];
-      for (j = StabIndex + 1;
-           j < StabSymbolsCount && StabSymbols[j].Address == StabSymbols[StabIndex].Address;
-           j++)
-        {
-          if (0 != StabSymbols[j].FileOffset && 0 == (*MergedSymbols)[*MergedSymbolCount].FileOffset)
-            {
-              (*MergedSymbols)[*MergedSymbolCount].FileOffset = StabSymbols[j].FileOffset;
-            }
-          if (0 != StabSymbols[j].FunctionOffset && 0 == (*MergedSymbols)[*MergedSymbolCount].FunctionOffset)
-            {
-              (*MergedSymbols)[*MergedSymbolCount].FunctionOffset = StabSymbols[j].FunctionOffset;
-            }
-          if (0 != StabSymbols[j].SourceLine && 0 == (*MergedSymbols)[*MergedSymbolCount].SourceLine)
-            {
-              (*MergedSymbols)[*MergedSymbolCount].SourceLine = StabSymbols[j].SourceLine;
-            }
-        }
-      StabIndex = j - 1;
-      while (CoffIndex < CoffSymbolsCount
-          && CoffSymbols[CoffIndex + 1].Address <= (*MergedSymbols)[*MergedSymbolCount].Address)
-        {
-          CoffIndex++;
-        }
-      NewStabFunctionStringOffset = (*MergedSymbols)[*MergedSymbolCount].FunctionOffset;
-      if (CoffSymbolsCount > 0 &&
-          CoffSymbols[CoffIndex].Address < (*MergedSymbols)[*MergedSymbolCount].Address
-          && StabFunctionStartAddress < CoffSymbols[CoffIndex].Address
-          && 0 != CoffSymbols[CoffIndex].FunctionOffset)
-        {
-          (*MergedSymbols)[*MergedSymbolCount].FunctionOffset = CoffSymbols[CoffIndex].FunctionOffset;
-        }
-      if (StabFunctionStringOffset != NewStabFunctionStringOffset)
-        {
-          StabFunctionStartAddress = (*MergedSymbols)[*MergedSymbolCount].Address;
-        }
-      StabFunctionStringOffset = NewStabFunctionStringOffset;
-      (*MergedSymbolCount)++;
-    }
-
-  return 0;
-}
-
-static PIMAGE_SECTION_HEADER
-FindSectionForRVA(DWORD RVA, unsigned NumberOfSections, PIMAGE_SECTION_HEADER SectionHeaders)
-{
-  unsigned Section;
-
-  for (Section = 0; Section < NumberOfSections; Section++)
-    {
-      if (SectionHeaders[Section].VirtualAddress <= RVA &&
-          RVA < SectionHeaders[Section].VirtualAddress + SectionHeaders[Section].Misc.VirtualSize)
-        {
-          return SectionHeaders + Section;
-        }
-    }
-
-  return NULL;
-}
-
-static int
-IncludeRelocationsForSection(PIMAGE_SECTION_HEADER SectionHeader)
-{
-  static char *BlacklistedSections[] =
-    {
-      ".edata",
-      ".idata",
-      ".reloc"
-    };
-  char SectionName[IMAGE_SIZEOF_SHORT_NAME];
-  unsigned i;
-
-  if (0 != (SectionHeader->Characteristics & IMAGE_SCN_LNK_REMOVE))
-    {
-      return 0;
-    }
-
-  for (i = 0; i < sizeof(BlacklistedSections) / sizeof(BlacklistedSections[0]); i++)
-    {
-      strncpy(SectionName, BlacklistedSections[i], IMAGE_SIZEOF_SHORT_NAME);
-      if (0 == memcmp(SectionName, SectionHeader->Name, IMAGE_SIZEOF_SHORT_NAME))
-        {
-          return 0;
-        }
-    }
-
-  return 1;
-}
-
-static int
-ProcessRelocations(ULONG *ProcessedRelocsLength, void **ProcessedRelocs,
-                   void *RawData, PIMAGE_OPTIONAL_HEADER OptHeader,
-                   unsigned NumberOfSections, PIMAGE_SECTION_HEADER SectionHeaders)
-{
-  PIMAGE_SECTION_HEADER RelocSectionHeader, TargetSectionHeader;
-  PIMAGE_BASE_RELOCATION BaseReloc, End, AcceptedRelocs;
-  int Found;
-
-  if (OptHeader->NumberOfRvaAndSizes < IMAGE_DIRECTORY_ENTRY_BASERELOC
-      || 0 == OptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress)
-    {
-      /* No relocation entries */
-      *ProcessedRelocsLength = 0;
-      *ProcessedRelocs = NULL;
-      return 0;
-    }
-
-  RelocSectionHeader = FindSectionForRVA(OptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress,
-                                         NumberOfSections, SectionHeaders);
-  if (NULL == RelocSectionHeader)
-    {
-      fprintf(stderr, "Can't find section header for relocation data\n");
-      return 1;
-    }
-
-  *ProcessedRelocs = malloc(RelocSectionHeader->SizeOfRawData);
-  if (NULL == *ProcessedRelocs)
-    {
-      fprintf(stderr, "Failed to allocate %lu bytes for relocations\n", RelocSectionHeader->SizeOfRawData);
-      return 1;
-    }
-  *ProcessedRelocsLength = 0;
-
-  BaseReloc = (PIMAGE_BASE_RELOCATION) ((char *) RawData
-                                        + RelocSectionHeader->PointerToRawData
-                                        + (OptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress -
-                                           RelocSectionHeader->VirtualAddress));
-  End = (PIMAGE_BASE_RELOCATION) ((char *) BaseReloc
-                                  + OptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size);
-
-  while (BaseReloc < End && 0 < BaseReloc->SizeOfBlock)
-    {
-      TargetSectionHeader = FindSectionForRVA(BaseReloc->VirtualAddress, NumberOfSections,
-                                              SectionHeaders);
-      if (NULL != TargetSectionHeader && IncludeRelocationsForSection(TargetSectionHeader))
-        {
-          AcceptedRelocs = *ProcessedRelocs;
-          Found = 0;
-          while (AcceptedRelocs < (PIMAGE_BASE_RELOCATION) ((char *) *ProcessedRelocs +
-                                                            *ProcessedRelocsLength)
-                 && ! Found)
-            {
-              Found = BaseReloc->SizeOfBlock == AcceptedRelocs->SizeOfBlock
-                      && 0 == memcmp(BaseReloc, AcceptedRelocs, AcceptedRelocs->SizeOfBlock);
-              AcceptedRelocs= (PIMAGE_BASE_RELOCATION) ((char *) AcceptedRelocs +
-                                                        AcceptedRelocs->SizeOfBlock);
-            }
-          if (! Found)
-            {
-              memcpy((char *) *ProcessedRelocs + *ProcessedRelocsLength,
-                     BaseReloc, BaseReloc->SizeOfBlock);
-              *ProcessedRelocsLength += BaseReloc->SizeOfBlock;
-            }
-        }
-      BaseReloc = (PIMAGE_BASE_RELOCATION)((char *) BaseReloc + BaseReloc->SizeOfBlock);
-    }
-
-  return 0;
-}
-
-static int
-CreateOutputFile(FILE *OutFile, void *InData,
-                 PIMAGE_DOS_HEADER InDosHeader, PIMAGE_FILE_HEADER InFileHeader,
-                 PIMAGE_OPTIONAL_HEADER InOptHeader, PIMAGE_SECTION_HEADER InSectionHeaders,
-                 ULONG RosSymLength, void *RosSymSection)
-{
-  ULONG StartOfRawData;
-  unsigned Section;
-  void *OutHeader, *ProcessedRelocs, *PaddedRosSym, *Data;
-  PIMAGE_DOS_HEADER OutDosHeader;
-  PIMAGE_FILE_HEADER OutFileHeader;
-  PIMAGE_OPTIONAL_HEADER OutOptHeader;
-  PIMAGE_SECTION_HEADER OutSectionHeaders, CurrentSectionHeader;
-  DWORD CheckSum;
-  ULONG Length, i;
-  ULONG ProcessedRelocsLength;
-  ULONG RosSymOffset, RosSymFileLength;
-  int InRelocSectionIndex;
-  PIMAGE_SECTION_HEADER OutRelocSection;
-
-  StartOfRawData = 0;
-  for (Section = 0; Section < InFileHeader->NumberOfSections; Section++)
-    {
-      if ((0 == StartOfRawData
-           || InSectionHeaders[Section].PointerToRawData < StartOfRawData)
-          && 0 != InSectionHeaders[Section].PointerToRawData
-          && 0 == (InSectionHeaders[Section].Characteristics & IMAGE_SCN_LNK_REMOVE))
-        {
-          StartOfRawData = InSectionHeaders[Section].PointerToRawData;
-        }
-    }
-  OutHeader = malloc(StartOfRawData);
-  if (NULL == OutHeader)
-    {
-      fprintf(stderr, "Failed to allocate %lu bytes for output file header\n", StartOfRawData);
-      return 1;
-    }
-  memset(OutHeader, '\0', StartOfRawData);
-
-  OutDosHeader = (PIMAGE_DOS_HEADER) OutHeader;
-  memcpy(OutDosHeader, InDosHeader, InDosHeader->e_lfanew + sizeof(ULONG));
-
-  OutFileHeader = (PIMAGE_FILE_HEADER)((char *) OutHeader + OutDosHeader->e_lfanew + sizeof(ULONG));
-  memcpy(OutFileHeader, InFileHeader, sizeof(IMAGE_FILE_HEADER));
-  OutFileHeader->PointerToSymbolTable = 0;
-  OutFileHeader->NumberOfSymbols = 0;
-  OutFileHeader->Characteristics &= ~(IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_LOCAL_SYMS_STRIPPED |
-                                      IMAGE_FILE_DEBUG_STRIPPED);
-
-  OutOptHeader = (PIMAGE_OPTIONAL_HEADER)(OutFileHeader + 1);
-  memcpy(OutOptHeader, InOptHeader, sizeof(IMAGE_OPTIONAL_HEADER));
-  OutOptHeader->CheckSum = 0;
-
-  OutSectionHeaders = (PIMAGE_SECTION_HEADER)((char *) OutOptHeader + OutFileHeader->SizeOfOptionalHeader);
-
-  if (ProcessRelocations(&ProcessedRelocsLength, &ProcessedRelocs, InData, InOptHeader,
-                         InFileHeader->NumberOfSections, InSectionHeaders))
-    {
-      return 1;
-    }
-  if (InOptHeader->NumberOfRvaAndSizes < IMAGE_DIRECTORY_ENTRY_BASERELOC
-      || 0 == InOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress)
-    {
-      InRelocSectionIndex = -1;
-    }
-  else
-    {
-      InRelocSectionIndex = FindSectionForRVA(InOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress,
-                                              InFileHeader->NumberOfSections, InSectionHeaders) - InSectionHeaders;
-    }
-
-  OutFileHeader->NumberOfSections = 0;
-  CurrentSectionHeader = OutSectionHeaders;
-  OutOptHeader->SizeOfImage = 0;
-  RosSymOffset = 0;
-  OutRelocSection = NULL;
-  for (Section = 0; Section < InFileHeader->NumberOfSections; Section++)
-    {
-      if (0 == (InSectionHeaders[Section].Characteristics & IMAGE_SCN_LNK_REMOVE))
-        {
-          *CurrentSectionHeader = InSectionHeaders[Section];
-          CurrentSectionHeader->PointerToLinenumbers = 0;
-          CurrentSectionHeader->NumberOfLinenumbers = 0;
-          if (OutOptHeader->SizeOfImage < CurrentSectionHeader->VirtualAddress +
-                                          CurrentSectionHeader->Misc.VirtualSize)
-            {
-              OutOptHeader->SizeOfImage = ROUND_UP(CurrentSectionHeader->VirtualAddress +
-                                                   CurrentSectionHeader->Misc.VirtualSize,
-                                                   OutOptHeader->SectionAlignment);
-            }
-          if (RosSymOffset < CurrentSectionHeader->PointerToRawData + CurrentSectionHeader->SizeOfRawData)
-            {
-              RosSymOffset = CurrentSectionHeader->PointerToRawData + CurrentSectionHeader->SizeOfRawData;
-            }
-          if (Section == (ULONG)InRelocSectionIndex)
-            {
-              OutRelocSection = CurrentSectionHeader;
-            }
-          (OutFileHeader->NumberOfSections) ++;
-          CurrentSectionHeader++;
-        }
-    }
-
-  if (OutRelocSection == CurrentSectionHeader - 1)
-    {
-      OutOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size = ProcessedRelocsLength;
-      if (OutOptHeader->SizeOfImage == OutRelocSection->VirtualAddress +
-                                       ROUND_UP(OutRelocSection->Misc.VirtualSize,
-                                                OutOptHeader->SectionAlignment))
-        {
-          OutOptHeader->SizeOfImage = OutRelocSection->VirtualAddress +
-                                      ROUND_UP(ProcessedRelocsLength,
-                                               OutOptHeader->SectionAlignment);
-        }
-      OutRelocSection->Misc.VirtualSize = ProcessedRelocsLength;
-      if (RosSymOffset == OutRelocSection->PointerToRawData
-                          + OutRelocSection->SizeOfRawData)
-        {
-          RosSymOffset = OutRelocSection->PointerToRawData +
-                         ROUND_UP(ProcessedRelocsLength, OutOptHeader->FileAlignment);
-        }
-      OutRelocSection->SizeOfRawData = ROUND_UP(ProcessedRelocsLength,
-                                                OutOptHeader->FileAlignment);
-    }
-
-  if (RosSymLength > 0)
-    {
-      RosSymFileLength = ROUND_UP(RosSymLength, OutOptHeader->FileAlignment);
-      memcpy(CurrentSectionHeader->Name, ".rossym", 8); /* We're lucky: string is exactly 8 bytes long */
-      CurrentSectionHeader->Misc.VirtualSize = RosSymLength;
-      CurrentSectionHeader->VirtualAddress = OutOptHeader->SizeOfImage;
-      CurrentSectionHeader->SizeOfRawData = RosSymFileLength;
-      CurrentSectionHeader->PointerToRawData = RosSymOffset;
-      CurrentSectionHeader->PointerToRelocations = 0;
-      CurrentSectionHeader->PointerToLinenumbers = 0;
-      CurrentSectionHeader->NumberOfRelocations = 0;
-      CurrentSectionHeader->NumberOfLinenumbers = 0;
-      CurrentSectionHeader->Characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_DISCARDABLE
-                                              | IMAGE_SCN_LNK_REMOVE | IMAGE_SCN_TYPE_NOLOAD;
-      OutOptHeader->SizeOfImage = ROUND_UP(CurrentSectionHeader->VirtualAddress +
-                                           CurrentSectionHeader->Misc.VirtualSize,
-                                       OutOptHeader->SectionAlignment);
-      (OutFileHeader->NumberOfSections)++;
-
-      PaddedRosSym = malloc(RosSymFileLength);
-      if (NULL == PaddedRosSym)
-        {
-          fprintf(stderr, "Failed to allocate %lu bytes for padded .rossym\n", RosSymFileLength);
-          return 1;
-        }
-      memcpy(PaddedRosSym, RosSymSection, RosSymLength);
-      memset((char *) PaddedRosSym + RosSymLength, '\0', RosSymFileLength - RosSymLength);
-    }
-  else
-    {
-      PaddedRosSym = NULL;
-    }
-  CheckSum = 0;
-  for (i = 0; i < StartOfRawData / 2; i++)
-   {
-      CheckSum += ((unsigned short*) OutHeader)[i];
-      CheckSum = 0xffff & (CheckSum + (CheckSum >> 16));
-   }
-  Length = StartOfRawData;
-  for (Section = 0; Section < OutFileHeader->NumberOfSections; Section++)
-    {
-      if (OutRelocSection == OutSectionHeaders + Section)
-        {
-          Data = (void *) ProcessedRelocs;
-        }
-      else if (RosSymLength > 0 && Section + 1 == OutFileHeader->NumberOfSections)
-        {
-          Data = (void *) PaddedRosSym;
-        }
-      else
-        {
-          Data = (void *) ((char *) InData + OutSectionHeaders[Section].PointerToRawData);
-        }
-      for (i = 0; i < OutSectionHeaders[Section].SizeOfRawData / 2; i++)
-        {
-          CheckSum += ((unsigned short*) Data)[i];
-          CheckSum = 0xffff & (CheckSum + (CheckSum >> 16));
-        }
-      Length += OutSectionHeaders[Section].SizeOfRawData;
-    }
-  CheckSum += Length;
-  OutOptHeader->CheckSum = CheckSum;
-
-  if (fwrite(OutHeader, 1, StartOfRawData, OutFile) != StartOfRawData)
-    {
-      perror("Error writing output header\n");
-      free(OutHeader);
-      return 1;
-    }
-
-  for (Section = 0; Section < OutFileHeader->NumberOfSections; Section++)
-    {
-      if (0 != OutSectionHeaders[Section].SizeOfRawData)
-        {
-          fseek(OutFile, OutSectionHeaders[Section].PointerToRawData, SEEK_SET);
-          if (OutRelocSection == OutSectionHeaders + Section)
-            {
-              Data = (void *) ProcessedRelocs;
-            }
-          else if (RosSymLength > 0 && Section + 1 == OutFileHeader->NumberOfSections)
-            {
-              Data = (void *) PaddedRosSym;
-            }
-          else
-            {
-              Data = (void *) ((char *) InData + OutSectionHeaders[Section].PointerToRawData);
-            }
-          if (fwrite(Data, 1, OutSectionHeaders[Section].SizeOfRawData, OutFile) !=
-              OutSectionHeaders[Section].SizeOfRawData)
-            {
-              perror("Error writing section data\n");
-              free(PaddedRosSym);
-              free(OutHeader);
-              return 1;
-            }
-        }
-   }
-
-  if (PaddedRosSym)
-    {
-      free(PaddedRosSym);
-    }
-  free(OutHeader);
-
-  return 0;
-}
-
-int main(int argc, char* argv[])
-{
-  PSYMBOLFILE_HEADER SymbolFileHeader;
-  PIMAGE_DOS_HEADER PEDosHeader;
-  PIMAGE_FILE_HEADER PEFileHeader;
-  PIMAGE_OPTIONAL_HEADER PEOptHeader;
-  PIMAGE_SECTION_HEADER PESectionHeaders;
-  ULONG ImageBase;
-  void *StabBase;
-  ULONG StabsLength;
-  void *StabStringBase;
-  ULONG StabStringsLength;
-  void *CoffBase = NULL;
-  ULONG CoffsLength;
-  void *CoffStringBase = NULL;
-  ULONG CoffStringsLength;
-  char* path1;
-  char* path2;
-  FILE* out;
-  void *StringBase;
-  ULONG StringsLength;
-  ULONG StabSymbolsCount;
-  PROSSYM_ENTRY StabSymbols;
-  ULONG CoffSymbolsCount;
-  PROSSYM_ENTRY CoffSymbols;
-  ULONG MergedSymbolsCount;
-  PROSSYM_ENTRY MergedSymbols;
-  size_t FileSize;
-  void *FileData;
-  ULONG RosSymLength;
-  void *RosSymSection;
-  char elfhdr[4] = { '\177', 'E', 'L', 'F' };
-
-  if (3 != argc)
-    {
-      fprintf(stderr, "Usage: rsym <exefile> <symfile>\n");
-      exit(1);
-    }
-
-  path1 = convert_path(argv[1]);
-  path2 = convert_path(argv[2]);
-
-  FileData = load_file ( path1, &FileSize );
-  if ( !FileData )
-  {
-    fprintf ( stderr, "An error occured loading '%s'\n", path1 );
-    exit(1);
-  }
-
-  /* Check if MZ header exists  */
-  PEDosHeader = (PIMAGE_DOS_HEADER) FileData;
-  if (PEDosHeader->e_magic != IMAGE_DOS_MAGIC || PEDosHeader->e_lfanew == 0L)
-    {
-      /* Ignore elf */
-      if (!memcmp(PEDosHeader, elfhdr, sizeof(elfhdr)))
-	exit(0);
-      perror("Input file is not a PE image.\n");
-      free(FileData);
-      exit(1);
-    }
-
-  /* Locate PE file header  */
-  /* sizeof(ULONG) = sizeof(MAGIC) */
-  PEFileHeader = (PIMAGE_FILE_HEADER)((char *) FileData + PEDosHeader->e_lfanew + sizeof(ULONG));
-
-  /* Locate optional header */
-  assert(sizeof(ULONG) == 4);
-  PEOptHeader = (PIMAGE_OPTIONAL_HEADER)(PEFileHeader + 1);
-  ImageBase = PEOptHeader->ImageBase;
-
-  /* Locate PE section headers  */
-  PESectionHeaders = (PIMAGE_SECTION_HEADER)((char *) PEOptHeader + PEFileHeader->SizeOfOptionalHeader);
-
-  if (GetStabInfo(FileData, PEFileHeader, PESectionHeaders, &StabsLength, &StabBase,
-                  &StabStringsLength, &StabStringBase))
-    {
-      free(FileData);
-      exit(1);
-    }
-
-  if (GetCoffInfo(FileData, PEFileHeader, PESectionHeaders, &CoffsLength, &CoffBase,
-                  &CoffStringsLength, &CoffStringBase))
-    {
-      free(FileData);
-      exit(1);
-    }
-
-  StringBase = malloc(1 + StabStringsLength + CoffStringsLength +
-                      (CoffsLength / sizeof(ROSSYM_ENTRY)) * (E_SYMNMLEN + 1));
-  if (NULL == StringBase)
-    {
-      free(FileData);
-      fprintf(stderr, "Failed to allocate memory for strings table\n");
-      exit(1);
-    }
-  /* Make offset 0 into an empty string */
-  *((char *) StringBase) = '\0';
-  StringsLength = 1;
-
-  if (ConvertStabs(&StabSymbolsCount, &StabSymbols, &StringsLength, StringBase,
-                   StabsLength, StabBase, StabStringsLength, StabStringBase,
-                   ImageBase, PEFileHeader, PESectionHeaders))
-    {
-      free(StringBase);
-      free(FileData);
-      fprintf(stderr, "Failed to allocate memory for strings table\n");
-      exit(1);
-    }
-
-  if (ConvertCoffs(&CoffSymbolsCount, &CoffSymbols, &StringsLength, StringBase,
-                   CoffsLength, CoffBase, CoffStringsLength, CoffStringBase,
-                   ImageBase, PEFileHeader, PESectionHeaders))
-    {
-      if (StabSymbols)
-        {
-          free(StabSymbols);
-        }
-      free(StringBase);
-      free(FileData);
-      exit(1);
-    }
-
-  if (MergeStabsAndCoffs(&MergedSymbolsCount, &MergedSymbols,
-                         StabSymbolsCount, StabSymbols,
-                         CoffSymbolsCount, CoffSymbols))
-    {
-      if (CoffSymbols)
-        {
-         free(CoffSymbols);
-        }
-      if (StabSymbols)
-        {
-          free(StabSymbols);
-        }
-      free(StringBase);
-      free(FileData);
-      exit(1);
-    }
-
-  if (CoffSymbols)
-    {
-      free(CoffSymbols);
-    }
-  if (StabSymbols)
-    {
-      free(StabSymbols);
-    }
-  if (MergedSymbolsCount == 0)
-    {
-      RosSymLength = 0;
-      RosSymSection = NULL;
-    }
-  else
-    {
-      RosSymLength = sizeof(SYMBOLFILE_HEADER) + MergedSymbolsCount * sizeof(ROSSYM_ENTRY)
-                            + StringsLength;
-      RosSymSection = malloc(RosSymLength);
-      if (NULL == RosSymSection)
-        {
-          free(MergedSymbols);
-          free(StringBase);
-          free(FileData);
-          fprintf(stderr, "Unable to allocate memory for .rossym section\n");
-          exit(1);
-        }
-      memset(RosSymSection, '\0', RosSymLength);
-
-      SymbolFileHeader = (PSYMBOLFILE_HEADER) RosSymSection;
-      SymbolFileHeader->SymbolsOffset = sizeof(SYMBOLFILE_HEADER);
-      SymbolFileHeader->SymbolsLength = MergedSymbolsCount * sizeof(ROSSYM_ENTRY);
-      SymbolFileHeader->StringsOffset = SymbolFileHeader->SymbolsOffset + SymbolFileHeader->SymbolsLength;
-      SymbolFileHeader->StringsLength = StringsLength;
-
-      memcpy((char *) RosSymSection + SymbolFileHeader->SymbolsOffset, MergedSymbols,
-             SymbolFileHeader->SymbolsLength);
-      memcpy((char *) RosSymSection + SymbolFileHeader->StringsOffset, StringBase,
-             SymbolFileHeader->StringsLength);
-
-      free(MergedSymbols);
-    }
-  free(StringBase);
-  out = fopen(path2, "wb");
-  if (out == NULL)
-    {
-      perror("Cannot open output file");
-      free(RosSymSection);
-      free(FileData);
-      exit(1);
-    }
-
-  if (CreateOutputFile(out, FileData, PEDosHeader, PEFileHeader, PEOptHeader,
-                       PESectionHeaders, RosSymLength, RosSymSection))
-    {
-      fclose(out);
-      if (RosSymSection)
-        {
-          free(RosSymSection);
-        }
-      free(FileData);
-      exit(1);
-    }
-
-  fclose(out);
-  if (RosSymSection)
-    {
-      free(RosSymSection);
-    }
-  free(FileData);
-
-  return 0;
-}
-
-/* EOF */

Removed: branches/ros-amd64-bringup/reactos/tools/rsym.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/rsym.h?rev=37281&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/rsym.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/rsym.h (removed)
@@ -1,357 +1,0 @@
-/* rsym.h */
-
-#ifndef RSYM_H
-#define RSYM_H
-
-#define IMAGE_DOS_MAGIC 0x5a4d
-#define IMAGE_PE_MAGIC 0x00004550
-#define IMAGE_SIZEOF_SHORT_NAME 8
-
-#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004
-#define IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008
-#define IMAGE_FILE_DEBUG_STRIPPED   0x0200
-
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC	5
-
-#define IMAGE_SCN_TYPE_NOLOAD     0x00000002
-#define IMAGE_SCN_LNK_REMOVE      0x00000800
-#define IMAGE_SCN_MEM_READ        0x40000000
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
-
-#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
-
-typedef unsigned char BYTE;
-typedef unsigned char UCHAR;
-typedef unsigned short WORD;
-typedef unsigned short USHORT;
-typedef unsigned long long ULONGLONG;
-#if defined(__x86_64__) && defined(unix)
-typedef signed int LONG;
-typedef unsigned int ULONG;
-typedef unsigned int DWORD;
-#else
-typedef signed long LONG;
-typedef unsigned long ULONG;
-typedef unsigned long DWORD;
-#endif
-#if defined(_WIN64)
-typedef unsigned __int64 ULONG_PTR;
-#else
-#if defined(__x86_64__) && defined(unix)
-typedef  unsigned int  ULONG_PTR;
-#else
-typedef  unsigned long ULONG_PTR;
-#endif
-#endif
-
-#pragma pack(push,2)
-
-typedef struct _IMAGE_DOS_HEADER {
-  WORD e_magic;
-  WORD e_cblp;
-  WORD e_cp;
-  WORD e_crlc;
-  WORD e_cparhdr;
-  WORD e_minalloc;
-  WORD e_maxalloc;
-  WORD e_ss;
-  WORD e_sp;
-  WORD e_csum;
-  WORD e_ip;
-  WORD e_cs;
-  WORD e_lfarlc;
-  WORD e_ovno;
-  WORD e_res[4];
-  WORD e_oemid;
-  WORD e_oeminfo;
-  WORD e_res2[10];
-  LONG e_lfanew;
-} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
-#pragma pack(pop)
-
-#pragma pack(push,4)
-typedef struct _IMAGE_FILE_HEADER {
-	WORD Machine;
-	WORD NumberOfSections;
-	DWORD TimeDateStamp;
-	DWORD PointerToSymbolTable;
-	DWORD NumberOfSymbols;
-	WORD SizeOfOptionalHeader;
-	WORD Characteristics;
-} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
-#pragma pack(pop)
-
-typedef struct _IMAGE_DATA_DIRECTORY {
-  DWORD VirtualAddress;
-  DWORD Size;
-} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
-
-typedef struct _IMAGE_OPTIONAL_HEADER32 {
-	WORD Magic;
-	BYTE MajorLinkerVersion;
-	BYTE MinorLinkerVersion;
-	DWORD SizeOfCode;
-	DWORD SizeOfInitializedData;
-	DWORD SizeOfUninitializedData;
-	DWORD AddressOfEntryPoint;
-	DWORD BaseOfCode;
-	DWORD BaseOfData;
-	DWORD ImageBase;
-	DWORD SectionAlignment;
-	DWORD FileAlignment;
-	WORD MajorOperatingSystemVersion;
-	WORD MinorOperatingSystemVersion;
-	WORD MajorImageVersion;
-	WORD MinorImageVersion;
-	WORD MajorSubsystemVersion;
-	WORD MinorSubsystemVersion;
-	DWORD Win32VersionValue;
-	DWORD SizeOfImage;
-	DWORD SizeOfHeaders;
-	DWORD CheckSum;
-	WORD Subsystem;
-	WORD DllCharacteristics;
-	DWORD SizeOfStackReserve;
-	DWORD SizeOfStackCommit;
-	DWORD SizeOfHeapReserve;
-	DWORD SizeOfHeapCommit;
-	DWORD LoaderFlags;
-	DWORD NumberOfRvaAndSizes;
-	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
-
-typedef struct _IMAGE_OPTIONAL_HEADER64 {
-	WORD Magic;
-	BYTE MajorLinkerVersion;
-	BYTE MinorLinkerVersion;
-	DWORD SizeOfCode;
-	DWORD SizeOfInitializedData;
-	DWORD SizeOfUninitializedData;
-	DWORD AddressOfEntryPoint;
-	DWORD BaseOfCode;
-	ULONGLONG ImageBase;
-	DWORD SectionAlignment;
-	DWORD FileAlignment;
-	WORD MajorOperatingSystemVersion;
-	WORD MinorOperatingSystemVersion;
-	WORD MajorImageVersion;
-	WORD MinorImageVersion;
-	WORD MajorSubsystemVersion;
-	WORD MinorSubsystemVersion;
-	DWORD Win32VersionValue;
-	DWORD SizeOfImage;
-	DWORD SizeOfHeaders;
-	DWORD CheckSum;
-	WORD Subsystem;
-	WORD DllCharacteristics;
-	ULONGLONG SizeOfStackReserve;
-	ULONGLONG SizeOfStackCommit;
-	ULONGLONG SizeOfHeapReserve;
-	ULONGLONG SizeOfHeapCommit;
-	DWORD LoaderFlags;
-	DWORD NumberOfRvaAndSizes;
-	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
-
-
-#ifdef _TARGET_PE64
-typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
-typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
-#else
-typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
-typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
-#endif
-
-typedef struct _IMAGE_SECTION_HEADER {
-  BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
-  union {
-    DWORD PhysicalAddress;
-    DWORD VirtualSize;
-  } Misc;
-  DWORD VirtualAddress;
-  DWORD SizeOfRawData;
-  DWORD PointerToRawData;
-  DWORD PointerToRelocations;
-  DWORD PointerToLinenumbers;
-  WORD NumberOfRelocations;
-  WORD NumberOfLinenumbers;
-  DWORD Characteristics;
-} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
-
-#pragma pack(push,4)
-typedef struct _IMAGE_BASE_RELOCATION {
-	DWORD VirtualAddress;
-	DWORD SizeOfBlock;
-    WORD  TypeOffset[1];
-} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
-#pragma pack(pop)
-
-typedef struct {
-  USHORT f_magic;         /* magic number             */
-  USHORT f_nscns;         /* number of sections       */
-  ULONG  f_timdat;        /* time & date stamp        */
-  ULONG  f_symptr;        /* file pointer to symtab   */
-  ULONG  f_nsyms;         /* number of symtab entries */
-  USHORT f_opthdr;        /* sizeof(optional hdr)     */
-  USHORT f_flags;         /* flags                    */
-} FILHDR;
-
-typedef struct {
-  char           s_name[8];  /* section name                     */
-  ULONG  s_paddr;    /* physical address, aliased s_nlib */
-  ULONG  s_vaddr;    /* virtual address                  */
-  ULONG  s_size;     /* section size                     */
-  ULONG  s_scnptr;   /* file ptr to raw data for section */
-  ULONG  s_relptr;   /* file ptr to relocation           */
-  ULONG  s_lnnoptr;  /* file ptr to line numbers         */
-  USHORT s_nreloc;   /* number of relocation entries     */
-  USHORT s_nlnno;    /* number of line number entries    */
-  ULONG  s_flags;    /* flags                            */
-} SCNHDR;
-#pragma pack(4)
-
-typedef struct _SYMBOLFILE_HEADER {
-  ULONG SymbolsOffset;
-  ULONG SymbolsLength;
-  ULONG StringsOffset;
-  ULONG StringsLength;
-} SYMBOLFILE_HEADER, *PSYMBOLFILE_HEADER;
-
-typedef struct _STAB_ENTRY {
-  ULONG n_strx;         /* index into string table of name */
-  UCHAR n_type;         /* type of symbol */
-  UCHAR n_other;        /* misc info (usually empty) */
-  USHORT n_desc;        /* description field */
-  ULONG n_value;        /* value of symbol */
-} STAB_ENTRY, *PSTAB_ENTRY;
-
-/* http://www.math.utah.edu/docs/info/stabs_12.html */
-#define N_GYSM   0x20
-#define N_FNAME  0x22
-#define N_FUN    0x24
-#define N_STSYM  0x26
-#define N_LCSYM  0x28
-#define N_MAIN   0x2A
-#define N_PC     0x30
-#define N_NSYMS  0x32
-#define N_NOMAP  0x34
-#define N_RSYM   0x40
-#define N_M2C    0x42
-#define N_SLINE  0x44
-#define N_DSLINE 0x46
-#define N_BSLINE 0x48
-#define N_BROWS  0x48
-#define N_DEFD   0x4A
-#define N_EHDECL 0x50
-#define N_MOD2   0x50
-#define N_CATCH  0x54
-#define N_SSYM   0x60
-#define N_SO     0x64
-#define N_LSYM   0x80
-#define N_BINCL  0x82
-#define N_SOL    0x84
-#define N_PSYM   0xA0
-#define N_EINCL  0xA2
-#define N_ENTRY  0xA4
-#define N_LBRAC  0xC0
-#define N_EXCL   0xC2
-#define N_SCOPE  0xC4
-#define N_RBRAC  0xE0
-#define N_BCOMM  0xE2
-#define N_ECOMM  0xE4
-#define N_ECOML  0xE8
-#define N_LENG   0xFE
-
-/* COFF symbol table */
-
-#define E_SYMNMLEN	8	/* # characters in a symbol name	*/
-#define E_FILNMLEN	14	/* # characters in a file name		*/
-#define E_DIMNUM	4	/* # array dimensions in auxiliary entry */
-
-#define N_BTMASK	(0xf)
-#define N_TMASK		(0x30)
-#define N_BTSHFT	(4)
-#define N_TSHIFT	(2)
-
-/* derived types, in e_type */
-#define DT_NON		(0)	/* no derived type */
-#define DT_PTR		(1)	/* pointer */
-#define DT_FCN		(2)	/* function */
-#define DT_ARY		(3)	/* array */
-
-#define BTYPE(x)	((x) & N_BTMASK)
-
-#define ISPTR(x)	(((x) & N_TMASK) == (DT_PTR << N_BTSHFT))
-#define ISFCN(x)	(((x) & N_TMASK) == (DT_FCN << N_BTSHFT))
-#define ISARY(x)	(((x) & N_TMASK) == (DT_ARY << N_BTSHFT))
-#define ISTAG(x)	((x)==C_STRTAG||(x)==C_UNTAG||(x)==C_ENTAG)
-#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
-
-#define C_EFCN		0xff	/* physical end of function	*/
-#define C_NULL		0
-#define C_AUTO		1	/* automatic variable		*/
-#define C_EXT		2	/* external symbol		*/
-#define C_STAT		3	/* static			*/
-#define C_REG		4	/* register variable		*/
-#define C_EXTDEF	5	/* external definition		*/
-#define C_LABEL		6	/* label			*/
-#define C_ULABEL	7	/* undefined label		*/
-#define C_MOS		8	/* member of structure		*/
-#define C_ARG		9	/* function argument		*/
-#define C_STRTAG	10	/* structure tag		*/
-#define C_MOU		11	/* member of union		*/
-#define C_UNTAG		12	/* union tag			*/
-#define C_TPDEF		13	/* type definition		*/
-#define C_USTATIC	14	/* undefined static		*/
-#define C_ENTAG		15	/* enumeration tag		*/
-#define C_MOE		16	/* member of enumeration	*/
-#define C_REGPARM	17	/* register parameter		*/
-#define C_FIELD		18	/* bit field			*/
-#define C_AUTOARG	19	/* auto argument		*/
-#define C_LASTENT	20	/* dummy entry (end of block)	*/
-#define C_BLOCK		100	/* ".bb" or ".eb"		*/
-#define C_FCN		101	/* ".bf" or ".ef"		*/
-#define C_EOS		102	/* end of structure		*/
-#define C_FILE		103	/* file name			*/
-#define C_LINE		104	/* line # reformatted as symbol table entry */
-#define C_ALIAS	 	105	/* duplicate tag		*/
-#define C_HIDDEN	106	/* ext symbol in dmert public lib */
-
-#pragma pack(1)
-typedef struct _COFF_SYMENT
-{
-  union
-    {
-      char e_name[E_SYMNMLEN];
-      struct
-        {
-          ULONG e_zeroes;
-          ULONG e_offset;
-        }
-      e;
-    }
-  e;
-  ULONG e_value;
-  short e_scnum;
-  USHORT e_type;
-  UCHAR e_sclass;
-  UCHAR e_numaux;
-} COFF_SYMENT, *PCOFF_SYMENT;
-#pragma pack(4)
-
-typedef struct _ROSSYM_ENTRY {
-  ULONG_PTR Address;
-  ULONG FunctionOffset;
-  ULONG FileOffset;
-  ULONG SourceLine;
-} ROSSYM_ENTRY, *PROSSYM_ENTRY;
-
-#define ROUND_UP(N, S) (((N) + (S) - 1) & ~((S) - 1))
-
-extern char*
-convert_path(const char* origpath);
-
-extern void*
-load_file ( const char* file_name, size_t* file_size );
-
-#endif/*RSYM_H*/

Removed: branches/ros-amd64-bringup/reactos/tools/rsym.mak
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/rsym.mak?rev=37281&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/rsym.mak [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/rsym.mak (removed)
@@ -1,45 +1,0 @@
-RSYM_BASE = $(TOOLS_BASE)
-RSYM_BASE_ = $(RSYM_BASE)$(SEP)
-
-RSYM_INT = $(INTERMEDIATE_)$(RSYM_BASE)
-RSYM_INT_ = $(RSYM_INT)$(SEP)
-RSYM_OUT = $(OUTPUT_)$(RSYM_BASE)
-RSYM_OUT_ = $(RSYM_OUT)$(SEP)
-
-RSYM_TARGET = \
-	$(RSYM_OUT_)rsym$(EXEPOSTFIX)
-
-RSYM_SOURCES = \
-	$(RSYM_BASE_)rsym.c \
-	$(RSYM_BASE_)rsym_common.c
-
-RSYM_OBJECTS = \
-	$(addprefix $(INTERMEDIATE_), $(RSYM_SOURCES:.c=.o))
-
-ifeq ($(ARCH),amd64)
-RSYM_HOST_CFLAGS = $(TOOLS_CFLAGS) -D_TARGET_PE64
-else
-RSYM_HOST_CFLAGS = $(TOOLS_CFLAGS) 
-endif
-
-RSYM_HOST_LFLAGS = $(TOOLS_LFLAGS)
-
-.PHONY: rsym
-rsym: $(RSYM_TARGET)
-
-$(RSYM_TARGET): $(RSYM_OBJECTS) | $(RSYM_OUT)
-	$(ECHO_LD)
-	${host_gcc} $(RSYM_OBJECTS) $(RSYM_HOST_LFLAGS) -o $@
-
-$(RSYM_INT_)rsym.o: $(RSYM_BASE_)rsym.c | $(RSYM_INT)
-	$(ECHO_CC)
-	${host_gcc} $(RSYM_HOST_CFLAGS) -c $< -o $@
-
-$(RSYM_INT_)rsym_common.o: $(RSYM_BASE_)rsym_common.c | $(RSYM_INT)
-	$(ECHO_CC)
-	${host_gcc} $(RSYM_HOST_CFLAGS) -c $< -o $@
-
-.PHONY: rsym_clean
-rsym_clean:
-	-@$(rm) $(RSYM_TARGET) $(RSYM_OBJECTS) 2>$(NUL)
-clean: rsym_clean

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.c
------------------------------------------------------------------------------
    svn:keywords = author date id revision

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.c
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.h
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.h
------------------------------------------------------------------------------
    svn:mergeinfo = 

Copied: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak (from r37018, branches/ros-amd64-bringup/reactos/tools/rsym.mak)
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak?p2=branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak&p1=branches/ros-amd64-bringup/reactos/tools/rsym.mak&r1=37018&r2=37282&rev=37282&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/rsym.mak [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak [iso-8859-1] Mon Nov 10 08:55:23 2008
@@ -1,10 +1,19 @@
-RSYM_BASE = $(TOOLS_BASE)
+RSYM_BASE = $(TOOLS_BASE)$(SEP)rsym
 RSYM_BASE_ = $(RSYM_BASE)$(SEP)
-
 RSYM_INT = $(INTERMEDIATE_)$(RSYM_BASE)
 RSYM_INT_ = $(RSYM_INT)$(SEP)
 RSYM_OUT = $(OUTPUT_)$(RSYM_BASE)
 RSYM_OUT_ = $(RSYM_OUT)$(SEP)
+
+$(RSYM_INT): | $(TOOLS_INT)
+	$(ECHO_MKDIR)
+	${mkdir} $@
+
+ifneq ($(INTERMEDIATE),$(OUTPUT))
+$(RSYM_OUT): | $(TOOLS_OUT)
+	$(ECHO_MKDIR)
+	${mkdir} $@
+endif
 
 RSYM_TARGET = \
 	$(RSYM_OUT_)rsym$(EXEPOSTFIX)

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym.mak
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym_common.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym_common.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: branches/ros-amd64-bringup/reactos/tools/rsym/rsym_common.c
------------------------------------------------------------------------------
    svn:mergeinfo = 

Removed: branches/ros-amd64-bringup/reactos/tools/rsym_common.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/rsym_common.c?rev=37281&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/rsym_common.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/rsym_common.c (removed)
@@ -1,62 +1,0 @@
-/* rsym_common.c */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "rsym.h"
-
-char*
-convert_path ( const char* origpath )
-{
-	char* newpath;
-	int i;
-
-	newpath = strdup(origpath);
-
-	i = 0;
-	while (newpath[i] != 0)
-	{
-#ifdef UNIX_PATHS
-		if (newpath[i] == '\\')
-		{
-			newpath[i] = '/';
-		}
-#else
-#ifdef DOS_PATHS
-		if (newpath[i] == '/')
-		{
-			newpath[i] = '\\';
-		}
-#endif
-#endif
-		i++;
-	}
-	return(newpath);
-}
-
-void*
-load_file ( const char* file_name, size_t* file_size )
-{
-	FILE* f;
-	void* FileData = NULL;
-
-	f = fopen ( file_name, "rb" );
-	if (f != NULL)
-	{
-		fseek(f, 0L, SEEK_END);
-		*file_size = ftell(f);
-		fseek(f, 0L, SEEK_SET);
-		FileData = malloc(*file_size);
-		if (FileData != NULL)
-		{
-			if ( *file_size != fread(FileData, 1, *file_size, f) )
-			{
-				free(FileData);
-				FileData = NULL;
-			}
-		}
-		fclose(f);
-	}
-	return FileData;
-}

Modified: branches/ros-amd64-bringup/reactos/tools/tools.mak
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/tools/tools.mak?rev=37282&r1=37281&r2=37282&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/tools/tools.mak [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/tools/tools.mak [iso-8859-1] Mon Nov 10 08:55:23 2008
@@ -50,4 +50,4 @@
 include tools/pefixup.mak
 include tools/raddr2line.mak
 include tools/rbuild/rbuild.mak
-include tools/rsym.mak
+include tools/rsym/rsym.mak



More information about the Ros-diffs mailing list