Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Jul 2003 16:11:37 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/lib/csu/ia64 Makefile crt1.S
Message-ID:  <200307132311.h6DNBboX094026@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
marcel      2003/07/13 16:11:37 PDT

  FreeBSD src repository

  Modified files:
    lib/csu/ia64         Makefile 
  Added files:
    lib/csu/ia64         crt1.S 
  Log:
  Rewite _start(). We cannot use a C function due to the fact that we
  don't call it according to the runtime specification and especially
  WRT to gp this can cause trouble. The gcc 3.3.1 import broke the
  ia64 runtime because the compiler saved gp prior to us being able
  to set it properly. Restoring gp after the calls would then invalidate
  gp and cause segmentation faults later on.
  By rewriting _start() as an assembly function, we also avoided even
  more gcc dependences, by trying to use gcc specific features to work
  around the problem.
  This version of _start() does not reference _DYNAMIC. We register the
  cleanup function when it's a non-NULL pointer. The kernel will always
  pass a NULL pointer and dynamic linkers may pass a non-NULL pointer.
  
  The machine independent code to set __progname now unfortunately is
  written in assembly. So be it.
  
  Revision  Changes    Path
  1.12      +2 -2      src/lib/csu/ia64/Makefile
  1.1       +191 -0    src/lib/csu/ia64/crt1.S (new)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200307132311.h6DNBboX094026>