ftp.nice.ch/pub/next/unix/editor/xemacs.19.13.s.tar.gz#/xemacs-19.13/src/unexsol2.c

This is unexsol2.c in view mode; [Download] [Up]

/* Unexec function for Solaris 2.x
   Copyright (C) 1994 Sun Microsystems, Inc.

This file is part of XEmacs.

XEmacs is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.

XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with XEmacs; see the file COPYING.  If not, write to the Free
Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */

/* #pragma ident "@(#) $Id: unexsol2.c,v 1.2 1995/01/25 20:39:16 georgn Exp $" */

#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>

#define DYNODUMP_SO	"../dynodump/dynodump.so"
#define DYNODUMP_SYM	"dynodump"


int unexec (char *new_name, char *old_name, unsigned int data_start,
	    unsigned int bss_start, unsigned int entry_address);
int
unexec (char *new_name, char *old_name, unsigned int data_start,
	unsigned int bss_start, unsigned int entry_address)
{
  void *handle;
  void (*func)(const char *file);

  if ((handle = dlopen (DYNODUMP_SO, RTLD_LAZY)) == NULL)
    {
      fprintf (stderr, "Can't open %s\n", (char *) DYNODUMP_SO);
      exit (1);
    }

  if ((func = (void (*)(const char *)) dlsym (handle, DYNODUMP_SYM)) == NULL)
    {
      fprintf (stderr, "Can't find %s symbol\n", (char *) DYNODUMP_SYM);
      exit (1);
    }

  (*func)(new_name);

  dlclose (handle);

  return 0;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.