From ef0faeb6c3aeac8c46ba6ae12207ad9756506feb Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 4 Oct 1993 23:29:36 +0000 Subject: [PATCH] Novell came through with the publicly visible information, so this file may now be distributed. * i386-nlmstub.c: New file; debugging stub for i386 NetWare. Must be compiled with NetWare header files and turned into an NLM with nlmconv. --- gdb/.Sanitize | 4 +- gdb/i386-nlmstub.c | 165 +++++++-------------------------------------- 2 files changed, 24 insertions(+), 145 deletions(-) diff --git a/gdb/.Sanitize b/gdb/.Sanitize index 0ae37240aad..8cfe5add5dd 100644 --- a/gdb/.Sanitize +++ b/gdb/.Sanitize @@ -119,6 +119,7 @@ hppa-pinsn.c hppa-tdep.c hppab-nat.c hppah-nat.c +i386-nlmstub.c i386-pinsn.c i386-stub.c i386-tdep.c @@ -273,8 +274,6 @@ z8k-tdep.c # energize-patches - Part of Lucid support. # energize.c - Part of Lucid support. # energize.h - Part of Lucid support. -# i386-nlmstub.c - i386 NLM stub, not yet distributable because -# it contains Novell proprietary code. # infrun.hacked.c - An old version of infrun.c that had some # wait_for_inferior improvements by gnu, # which were never fully debugged. @@ -295,7 +294,6 @@ energize energize-patches energize.c energize.h -i386-nlmstub.c infrun.hacked.c remote-sa.sparc.c state.c diff --git a/gdb/i386-nlmstub.c b/gdb/i386-nlmstub.c index 5b1bed695bd..174a00b071d 100644 --- a/gdb/i386-nlmstub.c +++ b/gdb/i386-nlmstub.c @@ -78,48 +78,14 @@ #include #include -/************************************************************************/ -/***************************************************************************** - * - * (C) Copyright 1988-1993 Novell, Inc. - * All Rights Reserved. - * - * This program is an unpublished copyrighted work which is proprietary - * to Novell, Inc. and contains confidential information that is not - * to be reproduced or disclosed to any other person or entity without - * prior written consent from Novell, Inc. in each and every instance. - * - * WARNING: Unauthorized reproduction of this program as well as - * unauthorized preparation of derivative works based upon the - * program or distribution of copies by sale, rental, lease or - * lending are violations of federal copyright laws and state trade - * secret laws, punishable by civil and criminal penalties. - * - * $release$ - * $modname: loadstuff.h$ - * $version: 1.37$ - * $date: Fri, Jan 15, 1993$ - * - ****************************************************************************/ +/****************************************************/ +/* This information is from Novell. It is not in any of the standard + NetWare header files. */ - -/* WARNING: THIS IS NOT A COMPLETE OS HEADER FILE - DON'T GET CONFUSED - *********************************************************************** - * The information is this file is a subset of the OS LOADER.H. - * This file was created to reveal the LoadDefinitionStrucutre and some - * associated information to Cygnus Support to assist them in their - * efforts to develop GNU netware utilities. Don't confuse this file - * with LOADER.H or any other actually supported NetWare header. - -************************************************************************/ - -struct LoadDefinitionStructure +struct DBG_LoadDefinitionStructure { - struct LoadDefinitionStructure *LDLink; - struct LoadDefinitionStructure *LDKillLink; - struct LoadDefinitionStructure *LDScanLink; - struct ResourceTagStructure *LDResourceList; - LONG LDIdentificationNumber; + void *reserved1[4]; + LONG reserved5; LONG LDCodeImageOffset; LONG LDCodeImageLength; LONG LDDataImageOffset; @@ -127,124 +93,38 @@ struct LoadDefinitionStructure LONG LDUninitializedDataLength; LONG LDCustomDataOffset; LONG LDCustomDataSize; - LONG LDFlags; - LONG LDType; - LONG (*LDInitializationProcedure)( - struct LoadDefinitionStructure *LoadRecord, - struct ScreenStruct *screenID, - BYTE *CommandLine, - BYTE *loadDirectoryPath, - LONG uninitializedDataLength, - LONG fileHandle, - LONG (*ReadRoutine)( - LONG fileHandle, - LONG offset, - void *buffer, - LONG numberOfBytes), - LONG customDataOffset, - LONG customDataSize); - void (*LDExitProcedure)(void); - LONG (*LDCheckUnloadProcedure)( - struct ScreenStruct *screenID); - struct ExternalPublicDefinitionStructure *LDPublics; - BYTE LDFileName[36]; - BYTE LDName[128]; - LONG *LDCLIBLoadStructure; - LONG *LDNLMDebugger; - LONG LDParentID; - LONG LDReservedForCLIB; - LONG Reserved0; - LONG Reserved1; - void *LDModuleObjectHandle; /* If Instrumented BEW 10/16/90 */ - LONG LDMajorVersion; - LONG LDMinorVersion; - LONG LDRevision; - LONG LDYear; - LONG LDMonth; - LONG LDDay; - BYTE *LDCopyright; - LONG LDAllocAvailBytes; - LONG LDAllocFreeCount; - LONG LDLastGarbCollect; - LONG LDAlloc16Lists[64]; - LONG LDAlloc256Lists[12]; - LONG LDAlloc4kList; - struct DomainStructure *LDDomainID; /* This must be non-zero for the Alloc Hunt code to work right. */ - /* It also points to the domain structure. */ - struct LoadDefinitionStructure *LDEnvLink; - void *LDAllocPagesListHead; - struct ExternalPublicDefinitionStructure *LDTempPublicList; - LONG LDMessageLanguage; /* for enabling */ - BYTE **LDMessages; /* for enabling */ - LONG LDMessageCount; /* for enabling */ - BYTE *LDHelpFile; /* for enabling */ - LONG LDMessageBufferSize; /* for enabling */ - LONG LDHelpBufferSize; /* for enabling */ - LONG LDSharedCodeOffset; /* for protection */ - LONG LDSharedCodeLength; /* for protection */ - LONG LDSharedDataOffset; /* for protection */ - LONG LDSharedDataLength; /* for protection */ - LONG (*LDSharedInitProcedure)( - struct LoadDefinitionStructure *LoadRecord, - struct ScreenStruct *screenID, - BYTE *CommandLine); - void (*LDSharedExitProcedure)(void); - LONG LDRPCDataTable; - LONG LDRealRPCDataTable; - LONG LDRPCDataTableSize; - LONG LDNumberOfReferencedPublics; - struct ExternalPublicDefinitionStructure **LDReferencedPublics; - LONG LDNumberOfReferencedExports; + LONG reserved6[2]; + LONG (*LDInitializationProcedure)(void); }; - -/* define the LDFlags. */ - -#define LDModuleIsReEntrantBit 0x00000001 -#define LDModuleCanBeMultiplyLoadedBit 0x00000002 -#define LDSynchronizeStart 0x00000004 -#define LDPseudoPreemptionBit 0x00000008 -#define LDLoadInOSDomain 0x00000010 -#define LDDontUnloadBit 0x20000000 -#define LDModuleIsBeingDebugged 0x40000000 -#define LDMemoryOn4KBoundriesBit 0x80000000 - -/* LoadModule load options */ -#define LO_NORMAL 0x0000 -#define LO_STARTUP 0x0001 -#define LO_PROTECT 0x0002 -#define LO_DEBUG 0x0004 -#define LO_AUTO_LOAD 0x0008 -#define LO_DONT_PROMPT 0x0010 -#define LO_LOAD_LOW 0x0020 -#define LO_RETURN_HANDLE 0x0040 -#define LO_LOAD_SILENT 0x0080 +#define LO_NORMAL 0x0000 +#define LO_STARTUP 0x0001 +#define LO_PROTECT 0x0002 +#define LO_DEBUG 0x0004 +#define LO_AUTO_LOAD 0x0008 /* Loader returned error codes */ -#define LOAD_COULD_NOT_FIND_FILE 1 -#define LOAD_ERROR_READING_FILE 2 -#define LOAD_NOT_NLM_FILE_FORMAT 3 +#define LOAD_COULD_NOT_FIND_FILE 1 +#define LOAD_ERROR_READING_FILE 2 +#define LOAD_NOT_NLM_FILE_FORMAT 3 #define LOAD_WRONG_NLM_FILE_VERSION 4 #define LOAD_REENTRANT_INITIALIZE_FAILURE 5 #define LOAD_CAN_NOT_LOAD_MULTIPLE_COPIES 6 -#define LOAD_ALREADY_IN_PROGRESS 7 +#define LOAD_ALREADY_IN_PROGRESS 7 #define LOAD_NOT_ENOUGH_MEMORY 8 -#define LOAD_INITIALIZE_FAILURE 9 +#define LOAD_INITIALIZE_FAILURE 9 #define LOAD_INCONSISTENT_FILE_FORMAT 10 #define LOAD_CAN_NOT_LOAD_AT_STARTUP 11 #define LOAD_AUTO_LOAD_MODULES_NOT_LOADED 12 -#define LOAD_UNRESOLVED_EXTERNAL 13 +#define LOAD_UNRESOLVED_EXTERNAL 13 #define LOAD_PUBLIC_ALREADY_DEFINED 14 -#define LOAD_XDC_DATA_ERROR 15 -#define LOAD_NOT_OS_DOMAIN 16 - -/****************************************************************************/ +/****************************************************/ /* The main thread ID. */ static int mainthread; /* The LoadDefinitionStructure of the NLM being debugged. */ -static struct LoadDefinitionStructure *handle; +static struct DBG_LoadDefinitionStructure *handle; /* Whether we have connected to gdb. */ static int talking; @@ -727,7 +607,8 @@ handle_exception (T_StackFrame *old_frame) if (frame->ExceptionNumber == START_NLM_EVENT && handle == NULL) { - handle = (struct LoadDefinitionStructure *) frame->ExceptionErrorCode; + handle = ((struct DBG_LoadDefinitionStructure *) + frame->ExceptionErrorCode); first_insn = *(char *) handle->LDInitializationProcedure; *(unsigned char *) handle->LDInitializationProcedure = 0xcc; return RETURN_TO_PROGRAM; -- 2.30.2